/[pcre]/code/trunk/testdata/testoutput1
ViewVC logotype

Diff of /code/trunk/testdata/testoutput1

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 178 by ph10, Wed Jun 13 08:44:34 2007 UTC revision 1271 by ph10, Wed Mar 6 16:50:38 2013 UTC
# Line 1  Line 1 
1    /-- This set of tests is for features that are compatible with all versions of
2        Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and
3        16-bit PCRE libraries. --/
4    
5  /the quick brown fox/  /the quick brown fox/
6      the quick brown fox      the quick brown fox
7   0: the quick brown fox   0: the quick brown fox
# Line 3749  No match Line 3753  No match
3753      foobarbaz      foobarbaz
3754  No match  No match
3755    
3756  /The case of aaaaaa is missed out below because I think Perl 5.005_02 gets/  /The cases of aaaa and aaaaaa are missed out below because Perl does things/
3757  /it wrong; it sets $1 to aaa rather than aa. Compare the following test,/  /differently. We know that odd, and maybe incorrect, things happen with/
3758  No match  No match
3759  /where it does set $1 to aa when matching aaaaaa./  /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
3760  No match  No match
3761    
3762  /^(a\1?){4}$/  /^(a\1?){4}$/
# Line 3762  No match Line 3766  No match
3766  No match  No match
3767      aaa      aaa
3768  No match  No match
     aaaa  
  0: aaaa  
  1: a  
3769      aaaaa      aaaaa
3770   0: aaaaa   0: aaaaa
3771   1: a   1: a
# Line 5551  No match Line 5552  No match
5552   0: b   0: b
5553   1: b   1: b
5554    
 /(?(1)a|b)/  
   
 /(?(1)b|a)/  
     a  
  0: a  
   
5555  /(x)?(?(1)a|b)/  /(x)?(?(1)a|b)/
5556      *** Failers      *** Failers
5557  No match  No match
# Line 6576  No match Line 6571  No match
6571   0: abcd   0: abcd
6572   1:   1:
6573    
6574  / End of testinput1 /  /( (A | (?(1)0|) )*   )/x
6575        abcd
6576     0:
6577     1:
6578     2:
6579    
6580    /( ( (?(1)0|) )*   )/x
6581        abcd
6582     0:
6583     1:
6584     2:
6585    
6586    /(  (?(1)0|)*   )/x
6587        abcd
6588     0:
6589     1:
6590    
6591    /[[:abcd:xyz]]/
6592        a]
6593     0: a]
6594        :]
6595     0: :]
6596    
6597    /[abc[:x\]pqr]/
6598        a
6599     0: a
6600        [
6601     0: [
6602        :
6603     0: :
6604        ]
6605     0: ]
6606        p
6607     0: p
6608    
6609    /.*[op][xyz]/
6610        fooabcfoo
6611    No match
6612    
6613    /(?(?=.*b)b|^)/
6614       adc
6615     0:
6616       abc
6617     0: b
6618    
6619    /(?(?=^.*b)b|^)/
6620       adc
6621     0:
6622       abc
6623    No match
6624    
6625    /(?(?=.*b)b|^)*/
6626       adc
6627     0:
6628       abc
6629     0:
6630    
6631    /(?(?=.*b)b|^)+/
6632       adc
6633     0:
6634       abc
6635     0: b
6636    
6637    /(?(?=b).*b|^d)/
6638        abc
6639     0: b
6640    
6641    /(?(?=.*b).*b|^d)/
6642        abc
6643     0: ab
6644    
6645    /^%((?(?=[a])[^%])|b)*%$/
6646        %ab%
6647     0: %ab%
6648     1:
6649    
6650    /(?i)a(?-i)b|c/
6651        XabX
6652     0: ab
6653        XAbX
6654     0: Ab
6655        CcC
6656     0: c
6657        ** Failers
6658    No match
6659        XABX
6660    No match
6661    
6662    /[\x00-\xff\s]+/
6663        \x0a\x0b\x0c\x0d
6664     0: \x0a\x0b\x0c\x0d
6665    
6666    /^\c/
6667        ?
6668     0: ?
6669    
6670    /(abc)\1/i
6671       abc
6672    No match
6673    
6674    /(abc)\1/
6675       abc
6676    No match
6677    
6678    /[^a]*/i
6679        12abc
6680     0: 12
6681        12ABC
6682     0: 12
6683    
6684    /[^a]*+/i
6685        12abc
6686     0: 12
6687        12ABC
6688     0: 12
6689    
6690    /[^a]*?X/i
6691        ** Failers
6692    No match
6693        12abc
6694    No match
6695        12ABC
6696    No match
6697    
6698    /[^a]+?X/i
6699        ** Failers
6700    No match
6701        12abc
6702    No match
6703        12ABC
6704    No match
6705    
6706    /[^a]?X/i
6707        12aXbcX
6708     0: X
6709        12AXBCX
6710     0: X
6711        BCX
6712     0: CX
6713    
6714    /[^a]??X/i
6715        12aXbcX
6716     0: X
6717        12AXBCX
6718     0: X
6719        BCX
6720     0: CX
6721    
6722    /[^a]?+X/i
6723        12aXbcX
6724     0: cX
6725        12AXBCX
6726     0: CX
6727        BCX
6728     0: CX
6729    
6730    /[^a]{2,3}/i
6731        abcdef
6732     0: bcd
6733        ABCDEF
6734     0: BCD
6735    
6736    /[^a]{2,3}?/i
6737        abcdef
6738     0: bc
6739        ABCDEF
6740     0: BC
6741    
6742    /[^a]{2,3}+/i
6743        abcdef
6744     0: bcd
6745        ABCDEF
6746     0: BCD
6747    
6748    /((a|)+)+Z/
6749        Z
6750     0: Z
6751     1:
6752     2:
6753    
6754    /(a)b|(a)c/
6755        ac
6756     0: ac
6757     1: <unset>
6758     2: a
6759    
6760    /(?>(a))b|(a)c/
6761        ac
6762     0: ac
6763     1: <unset>
6764     2: a
6765    
6766    /(?=(a))ab|(a)c/
6767        ac
6768     0: ac
6769     1: <unset>
6770     2: a
6771    
6772    /((?>(a))b|(a)c)/
6773        ac
6774     0: ac
6775     1: ac
6776     2: <unset>
6777     3: a
6778    
6779    /((?>(a))b|(a)c)++/
6780        ac
6781     0: ac
6782     1: ac
6783     2: <unset>
6784     3: a
6785    
6786    /(?:(?>(a))b|(a)c)++/
6787        ac
6788     0: ac
6789     1: <unset>
6790     2: a
6791    
6792    /(?=(?>(a))b|(a)c)(..)/
6793        ac
6794     0: ac
6795     1: <unset>
6796     2: a
6797     3: ac
6798    
6799    /(?>(?>(a))b|(a)c)/
6800        ac
6801     0: ac
6802     1: <unset>
6803     2: a
6804    
6805    /(?:(?>([ab])))+a=/+
6806        =ba=
6807     0: ba=
6808     0+
6809     1: b
6810    
6811    /(?>([ab]))+a=/+
6812        =ba=
6813     0: ba=
6814     0+
6815     1: b
6816    
6817    /((?>(a+)b)+(aabab))/
6818        aaaabaaabaabab
6819     0: aaaabaaabaabab
6820     1: aaaabaaabaabab
6821     2: aaa
6822     3: aabab
6823    
6824    /(?>a+|ab)+?c/
6825        aabc
6826    No match
6827    
6828    /(?>a+|ab)+c/
6829        aabc
6830    No match
6831    
6832    /(?:a+|ab)+c/
6833        aabc
6834     0: aabc
6835    
6836    /(?(?=(a))a)/
6837        a
6838     0: a
6839     1: a
6840    
6841    /(?(?=(a))a)(b)/
6842        ab
6843     0: ab
6844     1: a
6845     2: b
6846    
6847    /^(?:a|ab)++c/
6848        aaaabc
6849    No match
6850    
6851    /^(?>a|ab)++c/
6852        aaaabc
6853    No match
6854    
6855    /^(?:a|ab)+c/
6856        aaaabc
6857     0: aaaabc
6858    
6859    /(?=abc){3}abc/+
6860        abcabcabc
6861     0: abc
6862     0+ abcabc
6863        ** Failers
6864    No match
6865        xyz
6866    No match
6867    
6868    /(?=abc)+abc/+
6869        abcabcabc
6870     0: abc
6871     0+ abcabc
6872        ** Failers
6873    No match
6874        xyz
6875    No match
6876    
6877    /(?=abc)++abc/+
6878        abcabcabc
6879     0: abc
6880     0+ abcabc
6881        ** Failers
6882    No match
6883        xyz
6884    No match
6885    
6886    /(?=abc){0}xyz/
6887        xyz
6888     0: xyz
6889    
6890    /(?=abc){1}xyz/
6891        ** Failers
6892    No match
6893        xyz
6894    No match
6895    
6896    /(?=(a))?./
6897        ab
6898     0: a
6899     1: a
6900        bc
6901     0: b
6902    
6903    /(?=(a))??./
6904        ab
6905     0: a
6906        bc
6907     0: b
6908    
6909    /^(?=(a)){0}b(?1)/
6910        backgammon
6911     0: ba
6912    
6913    /^(?=(?1))?[az]([abc])d/
6914        abd
6915     0: abd
6916     1: b
6917        zcdxx
6918     0: zcd
6919     1: c
6920    
6921    /^(?!a){0}\w+/
6922        aaaaa
6923     0: aaaaa
6924    
6925    /(?<=(abc))?xyz/
6926        abcxyz
6927     0: xyz
6928     1: abc
6929        pqrxyz
6930     0: xyz
6931    
6932    /^[\g<a>]+/
6933        ggg<<<aaa>>>
6934     0: ggg<<<aaa>>>
6935        ** Failers
6936    No match
6937        \\ga
6938    No match
6939    
6940    /^[\ga]+/
6941        gggagagaxyz
6942     0: gggagaga
6943    
6944    /^[:a[:digit:]]+/
6945        aaaa444:::Z
6946     0: aaaa444:::
6947    
6948    /^[:a[:digit:]:b]+/
6949        aaaa444:::bbbZ
6950     0: aaaa444:::bbb
6951    
6952    /[:a]xxx[b:]/
6953         :xxx:
6954     0: :xxx:
6955    
6956    /(?<=a{2})b/i
6957        xaabc
6958     0: b
6959        ** Failers
6960    No match
6961        xabc
6962    No match
6963    
6964    /(?<!a{2})b/i
6965        xabc
6966     0: b
6967        ** Failers
6968    No match
6969        xaabc
6970    No match
6971    
6972    /(?<=a\h)c/
6973        xa c
6974     0: c
6975    
6976    /(?<=[^a]{2})b/
6977        axxbc
6978     0: b
6979        aAAbc
6980     0: b
6981        ** Failers
6982    No match
6983        xaabc
6984    No match
6985    
6986    /(?<=[^a]{2})b/i
6987        axxbc
6988     0: b
6989        ** Failers
6990    No match
6991        aAAbc
6992    No match
6993        xaabc
6994    No match
6995    
6996    /(?<=a\H)c/
6997        abc
6998     0: c
6999    
7000    /(?<=a\V)c/
7001        abc
7002     0: c
7003    
7004    /(?<=a\v)c/
7005        a\nc
7006     0: c
7007    
7008    /(?(?=c)c|d)++Y/
7009        XcccddYX
7010     0: cccddY
7011    
7012    /(?(?=c)c|d)*+Y/
7013        XcccddYX
7014     0: cccddY
7015    
7016    /^(a{2,3}){2,}+a/
7017        aaaaaaa
7018     0: aaaaaaa
7019     1: aaa
7020        ** Failers
7021    No match
7022        aaaaaa
7023    No match
7024        aaaaaaaaa
7025    No match
7026    
7027    /^(a{2,3})++a/
7028        ** Failers
7029    No match
7030        aaaaaa
7031    No match
7032    
7033    /^(a{2,3})*+a/
7034        ** Failers
7035    No match
7036        aaaaaa
7037    No match
7038    
7039    /ab\Cde/
7040        abXde
7041     0: abXde
7042    
7043    /(?<=ab\Cde)X/
7044        abZdeX
7045     0: X
7046    
7047    /a[\CD]b/
7048        aCb
7049     0: aCb
7050        aDb
7051     0: aDb
7052    
7053    /a[\C-X]b/
7054        aJb
7055     0: aJb
7056    
7057    /\H\h\V\v/
7058        X X\x0a
7059     0: X X\x0a
7060        X\x09X\x0b
7061     0: X\x09X\x0b
7062        ** Failers
7063    No match
7064        \xa0 X\x0a
7065    No match
7066    
7067    /\H*\h+\V?\v{3,4}/
7068        \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
7069     0: \x09 \xa0X\x0a\x0b\x0c\x0d
7070        \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
7071     0: \x09 \xa0\x0a\x0b\x0c\x0d
7072        \x09\x20\xa0\x0a\x0b\x0c
7073     0: \x09 \xa0\x0a\x0b\x0c
7074        ** Failers
7075    No match
7076        \x09\x20\xa0\x0a\x0b
7077    No match
7078    
7079    /\H{3,4}/
7080        XY  ABCDE
7081     0: ABCD
7082        XY  PQR ST
7083     0: PQR
7084    
7085    /.\h{3,4}./
7086        XY  AB    PQRS
7087     0: B    P
7088    
7089    /\h*X\h?\H+Y\H?Z/
7090        >XNNNYZ
7091     0: XNNNYZ
7092        >  X NYQZ
7093     0:   X NYQZ
7094        ** Failers
7095    No match
7096        >XYZ
7097    No match
7098        >  X NY Z
7099    No match
7100    
7101    /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
7102        >XY\x0aZ\x0aA\x0bNN\x0c
7103     0: XY\x0aZ\x0aA\x0bNN\x0c
7104        >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
7105     0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
7106    
7107    /(foo)\Kbar/
7108        foobar
7109     0: bar
7110     1: foo
7111    
7112    /(foo)(\Kbar|baz)/
7113        foobar
7114     0: bar
7115     1: foo
7116     2: bar
7117        foobaz
7118     0: foobaz
7119     1: foo
7120     2: baz
7121    
7122    /(foo\Kbar)baz/
7123        foobarbaz
7124     0: barbaz
7125     1: foobar
7126    
7127    /abc\K|def\K/g+
7128        Xabcdefghi
7129     0:
7130     0+ defghi
7131     0:
7132     0+ ghi
7133    
7134    /ab\Kc|de\Kf/g+
7135        Xabcdefghi
7136     0: c
7137     0+ defghi
7138     0: f
7139     0+ ghi
7140    
7141    /(?=C)/g+
7142        ABCDECBA
7143     0:
7144     0+ CDECBA
7145     0:
7146     0+ CBA
7147    
7148    /^abc\K/+
7149        abcdef
7150     0:
7151     0+ def
7152        ** Failers
7153    No match
7154        defabcxyz
7155    No match
7156    
7157    /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
7158        ababababbbabZXXXX
7159     0: ababababbbabZ
7160     1: ab
7161     2: b
7162    
7163    /(?<A>tom|bon)-\g{A}/
7164        tom-tom
7165     0: tom-tom
7166     1: tom
7167        bon-bon
7168     0: bon-bon
7169     1: bon
7170    
7171    /(^(a|b\g{-1}))/
7172        bacxxx
7173    No match
7174    
7175    /(?|(abc)|(xyz))\1/
7176        abcabc
7177     0: abcabc
7178     1: abc
7179        xyzxyz
7180     0: xyzxyz
7181     1: xyz
7182        ** Failers
7183    No match
7184        abcxyz
7185    No match
7186        xyzabc
7187    No match
7188    
7189    /(?|(abc)|(xyz))(?1)/
7190        abcabc
7191     0: abcabc
7192     1: abc
7193        xyzabc
7194     0: xyzabc
7195     1: xyz
7196        ** Failers
7197    No match
7198        xyzxyz
7199    No match
7200    
7201    /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
7202        XYabcdY
7203     0: XYabcdY
7204     1: a
7205     2: b
7206     3: c
7207     4: d
7208     5: Y
7209    
7210    /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
7211        XYabcdY
7212     0: XYabcdY
7213     1: a
7214     2: b
7215     3: <unset>
7216     4: <unset>
7217     5: c
7218     6: d
7219     7: Y
7220    
7221    /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
7222        XYabcdY
7223     0: XYabcdY
7224     1: a
7225     2: b
7226     3: <unset>
7227     4: <unset>
7228     5: c
7229     6: d
7230     7: Y
7231    
7232    /(?'abc'\w+):\k<abc>{2}/
7233        a:aaxyz
7234     0: a:aa
7235     1: a
7236        ab:ababxyz
7237     0: ab:abab
7238     1: ab
7239        ** Failers
7240    No match
7241        a:axyz
7242    No match
7243        ab:abxyz
7244    No match
7245    
7246    /(?'abc'\w+):\g{abc}{2}/
7247        a:aaxyz
7248     0: a:aa
7249     1: a
7250        ab:ababxyz
7251     0: ab:abab
7252     1: ab
7253        ** Failers
7254    No match
7255        a:axyz
7256    No match
7257        ab:abxyz
7258    No match
7259    
7260    /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
7261        abd
7262     0: abd
7263     1: a
7264        ce
7265     0: ce
7266    
7267    /^(a.)\g-1Z/
7268        aXaXZ
7269     0: aXaXZ
7270     1: aX
7271    
7272    /^(a.)\g{-1}Z/
7273        aXaXZ
7274     0: aXaXZ
7275     1: aX
7276    
7277    /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
7278        abcd
7279     0: ab
7280    
7281    /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
7282      (?(DEFINE)
7283      (?<NAME_PAT>[a-z]+)
7284      (?<ADDRESS_PAT>\d+)
7285      )/x
7286        metcalfe 33
7287     0: metcalfe 33
7288     1: metcalfe
7289     2: 33
7290    
7291    /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
7292        1.2.3.4
7293     0: 1.2.3.4
7294     1: <unset>
7295     2: .4
7296        131.111.10.206
7297     0: 131.111.10.206
7298     1: <unset>
7299     2: .206
7300        10.0.0.0
7301     0: 10.0.0.0
7302     1: <unset>
7303     2: .0
7304        ** Failers
7305    No match
7306        10.6
7307    No match
7308        455.3.4.5
7309    No match
7310    
7311    /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
7312        1.2.3.4
7313     0: 1.2.3.4
7314     1: .4
7315        131.111.10.206
7316     0: 131.111.10.206
7317     1: .206
7318        10.0.0.0
7319     0: 10.0.0.0
7320     1: .0
7321        ** Failers
7322    No match
7323        10.6
7324    No match
7325        455.3.4.5
7326    No match
7327    
7328    /^(\w++|\s++)*$/
7329        now is the time for all good men to come to the aid of the party
7330     0: now is the time for all good men to come to the aid of the party
7331     1: party
7332        *** Failers
7333    No match
7334        this is not a line with only words and spaces!
7335    No match
7336    
7337    /(\d++)(\w)/
7338        12345a
7339     0: 12345a
7340     1: 12345
7341     2: a
7342        *** Failers
7343    No match
7344        12345+
7345    No match
7346    
7347    /a++b/
7348        aaab
7349     0: aaab
7350    
7351    /(a++b)/
7352        aaab
7353     0: aaab
7354     1: aaab
7355    
7356    /(a++)b/
7357        aaab
7358     0: aaab
7359     1: aaa
7360    
7361    /([^()]++|\([^()]*\))+/
7362        ((abc(ade)ufh()()x
7363     0: abc(ade)ufh()()x
7364     1: x
7365    
7366    /\(([^()]++|\([^()]+\))+\)/
7367        (abc)
7368     0: (abc)
7369     1: abc
7370        (abc(def)xyz)
7371     0: (abc(def)xyz)
7372     1: xyz
7373        *** Failers
7374    No match
7375        ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7376    No match
7377    
7378    /^([^()]|\((?1)*\))*$/
7379        abc
7380     0: abc
7381     1: c
7382        a(b)c
7383     0: a(b)c
7384     1: c
7385        a(b(c))d
7386     0: a(b(c))d
7387     1: d
7388        *** Failers)
7389    No match
7390        a(b(c)d
7391    No match
7392    
7393    /^>abc>([^()]|\((?1)*\))*<xyz<$/
7394       >abc>123<xyz<
7395     0: >abc>123<xyz<
7396     1: 3
7397       >abc>1(2)3<xyz<
7398     0: >abc>1(2)3<xyz<
7399     1: 3
7400       >abc>(1(2)3)<xyz<
7401     0: >abc>(1(2)3)<xyz<
7402     1: (1(2)3)
7403    
7404    /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
7405        1221
7406     0: 1221
7407     1: 1221
7408     2: 1
7409        Satanoscillatemymetallicsonatas
7410     0: Satanoscillatemymetallicsonatas
7411     1: <unset>
7412     2: <unset>
7413     3: Satanoscillatemymetallicsonatas
7414     4: S
7415        AmanaplanacanalPanama
7416     0: AmanaplanacanalPanama
7417     1: <unset>
7418     2: <unset>
7419     3: AmanaplanacanalPanama
7420     4: A
7421        AblewasIereIsawElba
7422     0: AblewasIereIsawElba
7423     1: <unset>
7424     2: <unset>
7425     3: AblewasIereIsawElba
7426     4: A
7427        *** Failers
7428    No match
7429        Thequickbrownfox
7430    No match
7431    
7432    /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
7433        12
7434     0: 12
7435     1: 12
7436        (((2+2)*-3)-7)
7437     0: (((2+2)*-3)-7)
7438     1: (((2+2)*-3)-7)
7439     2: -
7440        -12
7441     0: -12
7442     1: -12
7443        *** Failers
7444    No match
7445        ((2+2)*-3)-7)
7446    No match
7447    
7448    /^(x(y|(?1){2})z)/
7449        xyz
7450     0: xyz
7451     1: xyz
7452     2: y
7453        xxyzxyzz
7454     0: xxyzxyzz
7455     1: xxyzxyzz
7456     2: xyzxyz
7457        *** Failers
7458    No match
7459        xxyzz
7460    No match
7461        xxyzxyzxyzz
7462    No match
7463    
7464    /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
7465        <>
7466     0: <>
7467     1: <>
7468     2: <>
7469        <abcd>
7470     0: <abcd>
7471     1: <abcd>
7472     2: <abcd>
7473        <abc <123> hij>
7474     0: <abc <123> hij>
7475     1: <abc <123> hij>
7476     2: <abc <123> hij>
7477        <abc <def> hij>
7478     0: <def>
7479     1: <def>
7480     2: <def>
7481        <abc<>def>
7482     0: <abc<>def>
7483     1: <abc<>def>
7484     2: <abc<>def>
7485        <abc<>
7486     0: <>
7487     1: <>
7488     2: <>
7489        *** Failers
7490    No match
7491        <abc
7492    No match
7493    
7494    /^a+(*FAIL)/
7495        aaaaaa
7496    No match
7497    
7498    /a+b?c+(*FAIL)/
7499        aaabccc
7500    No match
7501    
7502    /a+b?(*PRUNE)c+(*FAIL)/
7503        aaabccc
7504    No match
7505    
7506    /a+b?(*COMMIT)c+(*FAIL)/
7507        aaabccc
7508    No match
7509    
7510    /a+b?(*SKIP)c+(*FAIL)/
7511        aaabcccaaabccc
7512    No match
7513    
7514    /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7515        aaaxxxxxx
7516     0: aaaxxxxxx
7517        aaa++++++
7518     0: aaa
7519        bbbxxxxx
7520     0: bbbxxxxx
7521        bbb+++++
7522     0: bbb
7523        cccxxxx
7524     0: cccxxxx
7525        ccc++++
7526     0: ccc
7527        dddddddd
7528     0: ddd
7529    
7530    /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7531        aaaxxxxxx
7532     0: aaaxxxxxx
7533     1: aaaxxxxxx
7534        aaa++++++
7535     0: aaa
7536     1: aaa
7537        bbbxxxxx
7538     0: bbbxxxxx
7539     1: bbbxxxxx
7540        bbb+++++
7541     0: bbb
7542     1: bbb
7543        cccxxxx
7544     0: cccxxxx
7545     1: cccxxxx
7546        ccc++++
7547     0: ccc
7548     1: ccc
7549        dddddddd
7550     0: ddd
7551     1: ddd
7552    
7553    /a+b?(*THEN)c+(*FAIL)/
7554        aaabccc
7555    No match
7556    
7557    /(A (A|B(*ACCEPT)|C) D)(E)/x
7558        AB
7559     0: AB
7560     1: AB
7561     2: B
7562        ABX
7563     0: AB
7564     1: AB
7565     2: B
7566        AADE
7567     0: AADE
7568     1: AAD
7569     2: A
7570     3: E
7571        ACDE
7572     0: ACDE
7573     1: ACD
7574     2: C
7575     3: E
7576        ** Failers
7577    No match
7578        AD
7579    No match
7580    
7581    /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
7582        1221
7583     0: 1221
7584     1: 1221
7585     2: 1
7586        Satan, oscillate my metallic sonatas!
7587     0: Satan, oscillate my metallic sonatas!
7588     1: <unset>
7589     2: <unset>
7590     3: Satan, oscillate my metallic sonatas
7591     4: S
7592        A man, a plan, a canal: Panama!
7593     0: A man, a plan, a canal: Panama!
7594     1: <unset>
7595     2: <unset>
7596     3: A man, a plan, a canal: Panama
7597     4: A
7598        Able was I ere I saw Elba.
7599     0: Able was I ere I saw Elba.
7600     1: <unset>
7601     2: <unset>
7602     3: Able was I ere I saw Elba
7603     4: A
7604        *** Failers
7605    No match
7606        The quick brown fox
7607    No match
7608    
7609    /^((.)(?1)\2|.)$/
7610        a
7611     0: a
7612     1: a
7613        aba
7614     0: aba
7615     1: aba
7616     2: a
7617        aabaa
7618     0: aabaa
7619     1: aabaa
7620     2: a
7621        abcdcba
7622     0: abcdcba
7623     1: abcdcba
7624     2: a
7625        pqaabaaqp
7626     0: pqaabaaqp
7627     1: pqaabaaqp
7628     2: p
7629        ablewasiereisawelba
7630     0: ablewasiereisawelba
7631     1: ablewasiereisawelba
7632     2: a
7633        rhubarb
7634    No match
7635        the quick brown fox
7636    No match
7637    
7638    /(a)(?<=b(?1))/
7639        baz
7640     0: a
7641     1: a
7642        ** Failers
7643    No match
7644        caz
7645    No match
7646    
7647    /(?<=b(?1))(a)/
7648        zbaaz
7649     0: a
7650     1: a
7651        ** Failers
7652    No match
7653        aaa
7654    No match
7655    
7656    /(?<X>a)(?<=b(?&X))/
7657        baz
7658     0: a
7659     1: a
7660    
7661    /^(?|(abc)|(def))\1/
7662        abcabc
7663     0: abcabc
7664     1: abc
7665        defdef
7666     0: defdef
7667     1: def
7668        ** Failers
7669    No match
7670        abcdef
7671    No match
7672        defabc
7673    No match
7674    
7675    /^(?|(abc)|(def))(?1)/
7676        abcabc
7677     0: abcabc
7678     1: abc
7679        defabc
7680     0: defabc
7681     1: def
7682        ** Failers
7683    No match
7684        defdef
7685    No match
7686        abcdef
7687    No match
7688    
7689    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
7690        a\"aaaaa
7691     0: a"aaaaa
7692     1: "
7693     2: <unset>
7694     3: "
7695        b\"aaaaa
7696     0: b"aaaaa
7697     1: <unset>
7698     2: <unset>
7699     3: <unset>
7700     4: "
7701     5: <unset>
7702     6: "
7703        ** Failers
7704    No match
7705        b\"11111
7706    No match
7707    
7708    /(?:(?1)|B)(A(*F)|C)/
7709        ABCD
7710     0: BC
7711     1: C
7712        CCD
7713     0: CC
7714     1: C
7715        ** Failers
7716    No match
7717        CAD
7718    No match
7719    
7720    /^(?:(?1)|B)(A(*F)|C)/
7721        CCD
7722     0: CC
7723     1: C
7724        BCD
7725     0: BC
7726     1: C
7727        ** Failers
7728    No match
7729        ABCD
7730    No match
7731        CAD
7732    No match
7733        BAD
7734    No match
7735    
7736    /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
7737        AAD
7738     0: AA
7739     1: A
7740        ACD
7741     0: ACD
7742     1: C
7743        BAD
7744     0: BA
7745     1: A
7746        BCD
7747     0: BCD
7748     1: C
7749        BAX
7750     0: BA
7751     1: A
7752        ** Failers
7753    No match
7754        ACX
7755    No match
7756        ABC
7757    No match
7758    
7759    /(?(DEFINE)(A))B(?1)C/
7760        BAC
7761     0: BAC
7762    
7763    /(?(DEFINE)((A)\2))B(?1)C/
7764        BAAC
7765     0: BAAC
7766    
7767    /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
7768        (ab(cd)ef)
7769     0: (ab(cd)ef)
7770     1: (ab(cd)ef)
7771     2: ef
7772    
7773    /^(?!a(*SKIP)b)/
7774        ac
7775     0:
7776    
7777    /^(?=a(*SKIP)b|ac)/
7778        ** Failers
7779    No match
7780        ac
7781    No match
7782    
7783    /^(?=a(*THEN)b|ac)/
7784        ac
7785     0:
7786    
7787    /^(?=a(*PRUNE)b)/
7788        ab
7789     0:
7790        ** Failers
7791    No match
7792        ac
7793    No match
7794    
7795    /^(?=a(*ACCEPT)b)/
7796        ac
7797     0:
7798    
7799    /^(?(?!a(*SKIP)b))/
7800        ac
7801     0:
7802    
7803    /(?>a\Kb)/
7804        ab
7805     0: b
7806    
7807    /((?>a\Kb))/
7808        ab
7809     0: b
7810     1: ab
7811    
7812    /(a\Kb)/
7813        ab
7814     0: b
7815     1: ab
7816    
7817    /^a\Kcz|ac/
7818        ac
7819     0: ac
7820    
7821    /(?>a\Kbz|ab)/
7822        ab
7823     0: ab
7824    
7825    /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
7826        ab
7827     0: b
7828    
7829    /^([^()]|\((?1)*\))*$/
7830        a(b)c
7831     0: a(b)c
7832     1: c
7833        a(b(c)d)e
7834     0: a(b(c)d)e
7835     1: e
7836    
7837    /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
7838        0
7839     0: 0
7840     1: 0
7841        00
7842     0: 00
7843     1: 00
7844     2: 0
7845        0000
7846     0: 0000
7847     1: 0000
7848     2: 0
7849    
7850    /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
7851        0
7852     0: 0
7853     1: 0
7854     2: 0
7855        00
7856     0: 0
7857     1: 0
7858     2: 0
7859        0000
7860     0: 0
7861     1: 0
7862     2: 0
7863    
7864    /--- This one does fail, as expected, in Perl. It needs the complex item at the
7865         end of the pattern. A single letter instead of (B|D) makes it not fail,
7866         which I think is a Perl bug. --- /
7867    
7868    /A(*COMMIT)(B|D)/
7869        ACABX
7870    No match
7871    
7872    /--- Check the use of names for failure ---/
7873    
7874    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
7875        ** Failers
7876    No match
7877        AC
7878    No match, mark = A
7879        CB
7880    No match, mark = B
7881    
7882    /--- Force no study, otherwise mark is not seen. The studied version is in
7883         test 2 because it isn't Perl-compatible. ---/
7884    
7885    /(*MARK:A)(*SKIP:B)(C|X)/KSS
7886        C
7887     0: C
7888     1: C
7889    MK: A
7890        D
7891    No match, mark = A
7892    
7893    /^(A(*THEN:A)B|C(*THEN:B)D)/K
7894        ** Failers
7895    No match
7896        CB
7897    No match, mark = B
7898    
7899    /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
7900        CB
7901    No match, mark = B
7902    
7903    /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
7904        CB
7905    No match, mark = B
7906    
7907    /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
7908    that we have to have something complicated such as (B|Z) at the end because,
7909    for Perl, a simple character somehow causes an unwanted optimization to mess
7910    with the handling of backtracking verbs. ---/
7911    
7912    /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
7913        AAAC
7914     0: AC
7915    
7916    /--- Test skipping over a non-matching mark. ---/
7917    
7918    /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
7919        AAAC
7920     0: AC
7921    
7922    /--- Check shorthand for MARK ---/
7923    
7924    /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
7925        AAAC
7926     0: AC
7927    
7928    /--- Don't loop! Force no study, otherwise mark is not seen. ---/
7929    
7930    /(*:A)A+(*SKIP:A)(B|Z)/KSS
7931        AAAC
7932    No match, mark = A
7933    
7934    /--- This should succeed, as a non-existent skip name disables the skip ---/
7935    
7936    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
7937        AAAC
7938     0: AC
7939    
7940    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
7941        AAAC
7942     0: AC
7943    MK: B
7944    
7945    /--- COMMIT at the start of a pattern should act like an anchor. Again,
7946    however, we need the complication for Perl. ---/
7947    
7948    /(*COMMIT)(A|P)(B|P)(C|P)/
7949        ABCDEFG
7950     0: ABC
7951     1: A
7952     2: B
7953     3: C
7954        ** Failers
7955    No match
7956        DEFGABC
7957    No match
7958    
7959    /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
7960    
7961    /(\w+)(?>b(*COMMIT))\w{2}/
7962        abbb
7963     0: abbb
7964     1: a
7965    
7966    /(\w+)b(*COMMIT)\w{2}/
7967        abbb
7968    No match
7969    
7970    /--- Check opening parens in comment when seeking forward reference. ---/
7971    
7972    /(?&t)(?#()(?(DEFINE)(?<t>a))/
7973        bac
7974     0: a
7975    
7976    /--- COMMIT should override THEN ---/
7977    
7978    /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
7979      yes
7980    No match
7981    
7982    /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
7983      yes
7984    No match
7985    
7986    /b?(*SKIP)c/
7987        bc
7988     0: bc
7989        abc
7990     0: bc
7991    
7992    /(*SKIP)bc/
7993        a
7994    No match
7995    
7996    /(*SKIP)b/
7997        a
7998    No match
7999    
8000    /(?P<abn>(?P=abn)xxx|)+/
8001        xxx
8002     0:
8003     1:
8004    
8005    /(?i:([^b]))(?1)/
8006        aa
8007     0: aa
8008     1: a
8009        aA
8010     0: aA
8011     1: a
8012        ** Failers
8013     0: **
8014     1: *
8015        ab
8016    No match
8017        aB
8018    No match
8019        Ba
8020    No match
8021        ba
8022    No match
8023    
8024    /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
8025        aaaaaaX
8026     0: aaaaaaX
8027        ** Failers
8028    No match
8029        aaaaaa
8030    No match
8031    
8032    /^(?&t)*(?(DEFINE)(?<t>a))\w$/
8033        aaaaaaX
8034     0: aaaaaaX
8035        aaaaaa
8036     0: aaaaaa
8037    
8038    /^(a)*+(\w)/
8039        aaaaX
8040     0: aaaaX
8041     1: a
8042     2: X
8043        YZ
8044     0: Y
8045     1: <unset>
8046     2: Y
8047        ** Failers
8048    No match
8049        aaaa
8050    No match
8051    
8052    /^(?:a)*+(\w)/
8053        aaaaX
8054     0: aaaaX
8055     1: X
8056        YZ
8057     0: Y
8058     1: Y
8059        ** Failers
8060    No match
8061        aaaa
8062    No match
8063    
8064    /^(a)++(\w)/
8065        aaaaX
8066     0: aaaaX
8067     1: a
8068     2: X
8069        ** Failers
8070    No match
8071        aaaa
8072    No match
8073        YZ
8074    No match
8075    
8076    /^(?:a)++(\w)/
8077        aaaaX
8078     0: aaaaX
8079     1: X
8080        ** Failers
8081    No match
8082        aaaa
8083    No match
8084        YZ
8085    No match
8086    
8087    /^(a)?+(\w)/
8088        aaaaX
8089     0: aa
8090     1: a
8091     2: a
8092        YZ
8093     0: Y
8094     1: <unset>
8095     2: Y
8096    
8097    /^(?:a)?+(\w)/
8098        aaaaX
8099     0: aa
8100     1: a
8101        YZ
8102     0: Y
8103     1: Y
8104    
8105    /^(a){2,}+(\w)/
8106        aaaaX
8107     0: aaaaX
8108     1: a
8109     2: X
8110        ** Failers
8111    No match
8112        aaa
8113    No match
8114        YZ
8115    No match
8116    
8117    /^(?:a){2,}+(\w)/
8118        aaaaX
8119     0: aaaaX
8120     1: X
8121        ** Failers
8122    No match
8123        aaa
8124    No match
8125        YZ
8126    No match
8127    
8128    /(a|)*(?1)b/
8129        b
8130     0: b
8131     1:
8132        ab
8133     0: ab
8134     1:
8135        aab
8136     0: aab
8137     1:
8138    
8139    /(a)++(?1)b/
8140        ** Failers
8141    No match
8142        ab
8143    No match
8144        aab
8145    No match
8146    
8147    /(a)*+(?1)b/
8148        ** Failers
8149    No match
8150        ab
8151    No match
8152        aab
8153    No match
8154    
8155    /(?1)(?:(b)){0}/
8156        b
8157     0: b
8158    
8159    /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
8160        foo(bar(baz)+baz(bop))
8161     0: foo(bar(baz)+baz(bop))
8162     1: foo(bar(baz)+baz(bop))
8163     2: (bar(baz)+baz(bop))
8164     3: bar(baz)+baz(bop)
8165    
8166    /(A (A|B(*ACCEPT)|C) D)(E)/x
8167        AB
8168     0: AB
8169     1: AB
8170     2: B
8171    
8172    /\A.*?(?:a|b(*THEN)c)/
8173        ba
8174     0: ba
8175    
8176    /\A.*?(?:a|bc)/
8177        ba
8178     0: ba
8179    
8180    /\A.*?(a|b(*THEN)c)/
8181        ba
8182     0: ba
8183     1: a
8184    
8185    /\A.*?(a|bc)/
8186        ba
8187     0: ba
8188     1: a
8189    
8190    /\A.*?(?:a|b(*THEN)c)++/
8191        ba
8192     0: ba
8193    
8194    /\A.*?(?:a|bc)++/
8195        ba
8196     0: ba
8197    
8198    /\A.*?(a|b(*THEN)c)++/
8199        ba
8200     0: ba
8201     1: a
8202    
8203    /\A.*?(a|bc)++/
8204        ba
8205     0: ba
8206     1: a
8207    
8208    /\A.*?(?:a|b(*THEN)c|d)/
8209        ba
8210     0: ba
8211    
8212    /\A.*?(?:a|bc|d)/
8213        ba
8214     0: ba
8215    
8216    /(?:(b))++/
8217        beetle
8218     0: b
8219     1: b
8220    
8221    /(?(?=(a(*ACCEPT)z))a)/
8222        a
8223     0: a
8224     1: a
8225    
8226    /^(a)(?1)+ab/
8227        aaaab
8228     0: aaaab
8229     1: a
8230    
8231    /^(a)(?1)++ab/
8232        aaaab
8233    No match
8234    
8235    /^(?=a(*:M))aZ/K
8236        aZbc
8237     0: aZ
8238    MK: M
8239    
8240    /^(?!(*:M)b)aZ/K
8241        aZbc
8242     0: aZ
8243    
8244    /(?(DEFINE)(a))?b(?1)/
8245        backgammon
8246     0: ba
8247    
8248    /^\N+/
8249        abc\ndef
8250     0: abc
8251    
8252    /^\N{1,}/
8253        abc\ndef
8254     0: abc
8255    
8256    /(?(R)a+|(?R)b)/
8257        aaaabcde
8258     0: aaaab
8259    
8260    /(?(R)a+|((?R))b)/
8261        aaaabcde
8262     0: aaaab
8263     1: aaaa
8264    
8265    /((?(R)a+|(?1)b))/
8266        aaaabcde
8267     0: aaaab
8268     1: aaaab
8269    
8270    /((?(R1)a+|(?1)b))/
8271        aaaabcde
8272     0: aaaab
8273     1: aaaab
8274    
8275    /a(*:any
8276    name)/K
8277        abc
8278     0: a
8279    MK: any \x0aname
8280    
8281    /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
8282        a
8283     0: a
8284        ba
8285     0: a
8286        bba
8287     0: a
8288    
8289    /--- Checking revised (*THEN) handling ---/
8290    
8291    /--- Capture ---/
8292    
8293    /^.*? (a(*THEN)b) c/x
8294        aabc
8295    No match
8296    
8297    /^.*? (a(*THEN)b|(*F)) c/x
8298        aabc
8299     0: aabc
8300     1: ab
8301    
8302    /^.*? ( (a(*THEN)b) | (*F) ) c/x
8303        aabc
8304     0: aabc
8305     1: ab
8306     2: ab
8307    
8308    /^.*? ( (a(*THEN)b) ) c/x
8309        aabc
8310    No match
8311    
8312    /--- Non-capture ---/
8313    
8314    /^.*? (?:a(*THEN)b) c/x
8315        aabc
8316    No match
8317    
8318    /^.*? (?:a(*THEN)b|(*F)) c/x
8319        aabc
8320     0: aabc
8321    
8322    /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
8323        aabc
8324     0: aabc
8325    
8326    /^.*? (?: (?:a(*THEN)b) ) c/x
8327        aabc
8328    No match
8329    
8330    /--- Atomic ---/
8331    
8332    /^.*? (?>a(*THEN)b) c/x
8333        aabc
8334    No match
8335    
8336    /^.*? (?>a(*THEN)b|(*F)) c/x
8337        aabc
8338     0: aabc
8339    
8340    /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
8341        aabc
8342     0: aabc
8343    
8344    /^.*? (?> (?>a(*THEN)b) ) c/x
8345        aabc
8346    No match
8347    
8348    /--- Possessive capture ---/
8349    
8350    /^.*? (a(*THEN)b)++ c/x
8351        aabc
8352    No match
8353    
8354    /^.*? (a(*THEN)b|(*F))++ c/x
8355        aabc
8356     0: aabc
8357     1: ab
8358    
8359    /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
8360        aabc
8361     0: aabc
8362     1: ab
8363     2: ab
8364    
8365    /^.*? ( (a(*THEN)b)++ )++ c/x
8366        aabc
8367    No match
8368    
8369    /--- Possessive non-capture ---/
8370    
8371    /^.*? (?:a(*THEN)b)++ c/x
8372        aabc
8373    No match
8374    
8375    /^.*? (?:a(*THEN)b|(*F))++ c/x
8376        aabc
8377     0: aabc
8378    
8379    /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
8380        aabc
8381     0: aabc
8382    
8383    /^.*? (?: (?:a(*THEN)b)++ )++ c/x
8384        aabc
8385    No match
8386    
8387    /--- Condition assertion ---/
8388    
8389    /^(?(?=a(*THEN)b)ab|ac)/
8390        ac
8391     0: ac
8392    
8393    /--- Condition ---/
8394    
8395    /^.*?(?(?=a)a|b(*THEN)c)/
8396        ba
8397    No match
8398    
8399    /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
8400        ba
8401     0: ba
8402    
8403    /^.*?(?(?=a)a(*THEN)b|c)/
8404        ac
8405    No match
8406    
8407    /--- Assertion ---/
8408    
8409    /^.*(?=a(*THEN)b)/
8410        aabc
8411     0: a
8412    
8413    /------------------------------/
8414    
8415    /(?>a(*:m))/imsxSK
8416        a
8417     0: a
8418    MK: m
8419    
8420    /(?>(a)(*:m))/imsxSK
8421        a
8422     0: a
8423     1: a
8424    MK: m
8425    
8426    /(?<=a(*ACCEPT)b)c/
8427        xacd
8428     0: c
8429    
8430    /(?<=(a(*ACCEPT)b))c/
8431        xacd
8432     0: c
8433     1: a
8434    
8435    /(?<=(a(*COMMIT)b))c/
8436        xabcd
8437     0: c
8438     1: ab
8439        ** Failers
8440    No match
8441        xacd
8442    No match
8443    
8444    /(?<!a(*FAIL)b)c/
8445        xcd
8446     0: c
8447        acd
8448     0: c
8449    
8450    /(?<=a(*:N)b)c/K
8451        xabcd
8452     0: c
8453    MK: N
8454    
8455    /(?<=a(*PRUNE)b)c/
8456        xabcd
8457     0: c
8458    
8459    /(?<=a(*SKIP)b)c/
8460        xabcd
8461     0: c
8462    
8463    /(?<=a(*THEN)b)c/
8464        xabcd
8465     0: c
8466    
8467    /(a)(?2){2}(.)/
8468        abcd
8469     0: abcd
8470     1: a
8471     2: d
8472    
8473    /(*MARK:A)(*PRUNE:B)(C|X)/KS
8474        C
8475     0: C
8476     1: C
8477    MK: B
8478        D
8479    No match, mark = B
8480    
8481    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
8482        C
8483     0: C
8484     1: C
8485    MK: B
8486        D
8487    No match, mark = B
8488    
8489    /(*MARK:A)(*THEN:B)(C|X)/KS
8490        C
8491     0: C
8492     1: C
8493    MK: B
8494        D
8495    No match, mark = B
8496    
8497    /(*MARK:A)(*THEN:B)(C|X)/KSY
8498        C
8499     0: C
8500     1: C
8501    MK: B
8502        D
8503    No match, mark = B
8504    
8505    /(*MARK:A)(*THEN:B)(C|X)/KSS
8506        C
8507     0: C
8508     1: C
8509    MK: B
8510        D
8511    No match, mark = B
8512    
8513    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
8514    
8515    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
8516        AAAC
8517    No match, mark = A
8518    
8519    /--- Same --/
8520    
8521    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
8522        AAAC
8523    No match, mark = B
8524    
8525    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
8526        AAAC
8527    No match, mark = A
8528    
8529    /--- This should fail, as a null name is the same as no name ---/
8530    
8531    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
8532        AAAC
8533    No match, mark = A
8534    
8535    /--- A check on what happens after hitting a mark and them bumping along to
8536    something that does not even start. Perl reports tags after the failures here,
8537    though it does not when the individual letters are made into something
8538    more complicated. ---/
8539    
8540    /A(*:A)B|XX(*:B)Y/K
8541        AABC
8542     0: AB
8543    MK: A
8544        XXYZ
8545     0: XXY
8546    MK: B
8547        ** Failers
8548    No match
8549        XAQQ
8550    No match, mark = A
8551        XAQQXZZ
8552    No match, mark = A
8553        AXQQQ
8554    No match, mark = A
8555        AXXQQQ
8556    No match, mark = B
8557    
8558    /^(A(*THEN:A)B|C(*THEN:B)D)/K
8559        AB
8560     0: AB
8561     1: AB
8562    MK: A
8563        CD
8564     0: CD
8565     1: CD
8566    MK: B
8567        ** Failers
8568    No match
8569        AC
8570    No match, mark = A
8571        CB
8572    No match, mark = B
8573    
8574    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
8575        AB
8576     0: AB
8577     1: AB
8578    MK: A
8579        CD
8580     0: CD
8581     1: CD
8582    MK: B
8583        ** Failers
8584    No match
8585        AC
8586    No match, mark = A
8587        CB
8588    No match, mark = B
8589    
8590    /--- An empty name does not pass back an empty string. It is the same as if no
8591    name were given. ---/
8592    
8593    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
8594        AB
8595     0: AB
8596     1: AB
8597        CD
8598     0: CD
8599     1: CD
8600    MK: B
8601    
8602    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
8603    
8604    /A(*PRUNE:A)B/K
8605        ACAB
8606     0: AB
8607    MK: A
8608    
8609    /--- Mark names can be duplicated ---/
8610    
8611    /A(*:A)B|X(*:A)Y/K
8612        AABC
8613     0: AB
8614    MK: A
8615        XXYZ
8616     0: XY
8617    MK: A
8618    
8619    /b(*:m)f|a(*:n)w/K
8620        aw
8621     0: aw
8622    MK: n
8623        ** Failers
8624    No match, mark = n
8625        abc
8626    No match, mark = m
8627    
8628    /b(*:m)f|aw/K
8629        abaw
8630     0: aw
8631        ** Failers
8632    No match
8633        abc
8634    No match, mark = m
8635        abax
8636    No match, mark = m
8637    
8638    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
8639        AAAC
8640     0: AAC
8641    
8642    /a(*PRUNE:X)bc|qq/KY
8643        ** Failers
8644    No match, mark = X
8645        axy
8646    No match, mark = X
8647    
8648    /a(*THEN:X)bc|qq/KY
8649        ** Failers
8650    No match, mark = X
8651        axy
8652    No match, mark = X
8653    
8654    /(?=a(*MARK:A)b)..x/K
8655        abxy
8656     0: abx
8657    MK: A
8658        ** Failers
8659    No match
8660        abpq
8661    No match
8662    
8663    /(?=a(*MARK:A)b)..(*:Y)x/K
8664        abxy
8665     0: abx
8666    MK: Y
8667        ** Failers
8668    No match
8669        abpq
8670    No match
8671    
8672    /(?=a(*PRUNE:A)b)..x/K
8673        abxy
8674     0: abx
8675    MK: A
8676        ** Failers
8677    No match
8678        abpq
8679    No match
8680    
8681    /(?=a(*PRUNE:A)b)..(*:Y)x/K
8682        abxy
8683     0: abx
8684    MK: Y
8685        ** Failers
8686    No match
8687        abpq
8688    No match
8689    
8690    /(?=a(*THEN:A)b)..x/K
8691        abxy
8692     0: abx
8693    MK: A
8694        ** Failers
8695    No match
8696        abpq
8697    No match
8698    
8699    /(?=a(*THEN:A)b)..(*:Y)x/K
8700        abxy
8701     0: abx
8702    MK: Y
8703        ** Failers
8704    No match
8705        abpq
8706    No match
8707    
8708    /(another)?(\1?)test/
8709        hello world test
8710     0: test
8711     1: <unset>
8712     2:
8713    
8714    /(another)?(\1+)test/
8715        hello world test
8716    No match
8717    
8718    /(a(*COMMIT)b){0}a(?1)|aac/
8719        aac
8720     0: aac
8721    
8722    /(?!a(*COMMIT)b)ac|cd/
8723        ac
8724     0: ac
8725    
8726    /((?:a?)*)*c/
8727      aac
8728     0: aac
8729     1:
8730    
8731    /((?>a?)*)*c/
8732      aac
8733     0: aac
8734     1:
8735    
8736    /(?>.*?a)(?<=ba)/
8737        aba
8738     0: ba
8739    
8740    /(?:.*?a)(?<=ba)/
8741        aba
8742     0: aba
8743    
8744    /.*?a(*PRUNE)b/
8745        aab
8746     0: ab
8747    
8748    /.*?a(*PRUNE)b/s
8749        aab
8750     0: ab
8751    
8752    /^a(*PRUNE)b/s
8753        aab
8754    No match
8755    
8756    /.*?a(*SKIP)b/
8757        aab
8758     0: ab
8759    
8760    /(?>.*?a)b/s
8761        aab
8762     0: ab
8763    
8764    /(?>.*?a)b/
8765        aab
8766     0: ab
8767    
8768    /(?>^a)b/s
8769        aab
8770    No match
8771    
8772    /(?>.*?)(?<=(abcd)|(wxyz))/
8773        alphabetabcd
8774     0:
8775     1: abcd
8776        endingwxyz
8777     0:
8778     1: <unset>
8779     2: wxyz
8780    
8781    /(?>.*)(?<=(abcd)|(wxyz))/
8782        alphabetabcd
8783     0: alphabetabcd
8784     1: abcd
8785        endingwxyz
8786     0: endingwxyz
8787     1: <unset>
8788     2: wxyz
8789    
8790    "(?>.*)foo"
8791        abcdfooxyz
8792    No match
8793    
8794    "(?>.*?)foo"
8795        abcdfooxyz
8796     0: foo
8797    
8798    /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
8799        ac
8800     0: ac
8801    
8802    /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
8803        ac
8804     0: ac
8805    
8806    /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
8807        aac
8808     0: aac
8809    
8810    /-- End of testinput1 --/

Legend:
Removed from v.178  
changed lines
  Added in v.1271

  ViewVC Help
Powered by ViewVC 1.1.5