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

Diff of /code/trunk/testdata/testinput1

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

revision 93 by nigel, Sat Feb 24 21:41:42 2007 UTC revision 1273 by ph10, Fri Mar 8 10:25:02 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      The quick brown FOX      The quick brown FOX
# Line 1494  Line 1498 
1498  /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/  /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1499      abcdefghijk\12S      abcdefghijk\12S
1500    
1501  /ab\hdef/  /ab\idef/
1502      abhdef      abidef
1503    
1504  /a{0}bc/  /a{0}bc/
1505      bc      bc
# Line 2329  Line 2333 
2333      baz      baz
2334      foobarbaz      foobarbaz
2335    
2336  /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/
2337  /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/
2338  /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./
2339    
2340  /^(a\1?){4}$/  /^(a\1?){4}$/
2341      a      a
2342      aa      aa
2343      aaa      aaa
     aaaa  
2344      aaaaa      aaaaa
2345      aaaaaaa      aaaaaaa
2346      aaaaaaaa      aaaaaaaa
# Line 3421  Line 3424 
3424  /((?m)^b)/  /((?m)^b)/
3425      a\nb\nc\n      a\nb\nc\n
3426    
 /(?(1)a|b)/  
   
 /(?(1)b|a)/  
     a  
   
3427  /(x)?(?(1)a|b)/  /(x)?(?(1)a|b)/
3428      *** Failers      *** Failers
3429      a      a
# Line 4018  Line 4016 
4016    abc    abc
4017    abc\n    abc\n
4018    
4019  / End of testinput1 /  /(.*(.)?)*/
4020        abcd
4021    
4022    /( (A | (?(1)0|) )*   )/x
4023        abcd
4024    
4025    /( ( (?(1)0|) )*   )/x
4026        abcd
4027    
4028    /(  (?(1)0|)*   )/x
4029        abcd
4030    
4031    /[[:abcd:xyz]]/
4032        a]
4033        :]
4034    
4035    /[abc[:x\]pqr]/
4036        a
4037        [
4038        :
4039        ]
4040        p
4041    
4042    /.*[op][xyz]/
4043        fooabcfoo
4044    
4045    /(?(?=.*b)b|^)/
4046       adc
4047       abc
4048    
4049    /(?(?=^.*b)b|^)/
4050       adc
4051       abc
4052    
4053    /(?(?=.*b)b|^)*/
4054       adc
4055       abc
4056    
4057    /(?(?=.*b)b|^)+/
4058       adc
4059       abc
4060    
4061    /(?(?=b).*b|^d)/
4062        abc
4063    
4064    /(?(?=.*b).*b|^d)/
4065        abc
4066    
4067    /^%((?(?=[a])[^%])|b)*%$/
4068        %ab%
4069    
4070    /(?i)a(?-i)b|c/
4071        XabX
4072        XAbX
4073        CcC
4074        ** Failers
4075        XABX
4076    
4077    /[\x00-\xff\s]+/
4078        \x0a\x0b\x0c\x0d
4079    
4080    /^\c/
4081        ?
4082    
4083    /(abc)\1/i
4084       abc
4085    
4086    /(abc)\1/
4087       abc
4088    
4089    /[^a]*/i
4090        12abc
4091        12ABC
4092    
4093    /[^a]*+/i
4094        12abc
4095        12ABC
4096    
4097    /[^a]*?X/i
4098        ** Failers
4099        12abc
4100        12ABC
4101    
4102    /[^a]+?X/i
4103        ** Failers
4104        12abc
4105        12ABC
4106    
4107    /[^a]?X/i
4108        12aXbcX
4109        12AXBCX
4110        BCX
4111    
4112    /[^a]??X/i
4113        12aXbcX
4114        12AXBCX
4115        BCX
4116    
4117    /[^a]?+X/i
4118        12aXbcX
4119        12AXBCX
4120        BCX
4121    
4122    /[^a]{2,3}/i
4123        abcdef
4124        ABCDEF
4125    
4126    /[^a]{2,3}?/i
4127        abcdef
4128        ABCDEF
4129    
4130    /[^a]{2,3}+/i
4131        abcdef
4132        ABCDEF
4133    
4134    /((a|)+)+Z/
4135        Z
4136    
4137    /(a)b|(a)c/
4138        ac
4139    
4140    /(?>(a))b|(a)c/
4141        ac
4142    
4143    /(?=(a))ab|(a)c/
4144        ac
4145    
4146    /((?>(a))b|(a)c)/
4147        ac
4148    
4149    /((?>(a))b|(a)c)++/
4150        ac
4151    
4152    /(?:(?>(a))b|(a)c)++/
4153        ac
4154    
4155    /(?=(?>(a))b|(a)c)(..)/
4156        ac
4157    
4158    /(?>(?>(a))b|(a)c)/
4159        ac
4160    
4161    /(?:(?>([ab])))+a=/+
4162        =ba=
4163    
4164    /(?>([ab]))+a=/+
4165        =ba=
4166    
4167    /((?>(a+)b)+(aabab))/
4168        aaaabaaabaabab
4169    
4170    /(?>a+|ab)+?c/
4171        aabc
4172    
4173    /(?>a+|ab)+c/
4174        aabc
4175    
4176    /(?:a+|ab)+c/
4177        aabc
4178    
4179    /(?(?=(a))a)/
4180        a
4181    
4182    /(?(?=(a))a)(b)/
4183        ab
4184    
4185    /^(?:a|ab)++c/
4186        aaaabc
4187    
4188    /^(?>a|ab)++c/
4189        aaaabc
4190    
4191    /^(?:a|ab)+c/
4192        aaaabc
4193    
4194    /(?=abc){3}abc/+
4195        abcabcabc
4196        ** Failers
4197        xyz
4198    
4199    /(?=abc)+abc/+
4200        abcabcabc
4201        ** Failers
4202        xyz
4203    
4204    /(?=abc)++abc/+
4205        abcabcabc
4206        ** Failers
4207        xyz
4208    
4209    /(?=abc){0}xyz/
4210        xyz
4211    
4212    /(?=abc){1}xyz/
4213        ** Failers
4214        xyz
4215    
4216    /(?=(a))?./
4217        ab
4218        bc
4219    
4220    /(?=(a))??./
4221        ab
4222        bc
4223    
4224    /^(?=(a)){0}b(?1)/
4225        backgammon
4226    
4227    /^(?=(?1))?[az]([abc])d/
4228        abd
4229        zcdxx
4230    
4231    /^(?!a){0}\w+/
4232        aaaaa
4233    
4234    /(?<=(abc))?xyz/
4235        abcxyz
4236        pqrxyz
4237    
4238    /^[\g<a>]+/
4239        ggg<<<aaa>>>
4240        ** Failers
4241        \\ga
4242    
4243    /^[\ga]+/
4244        gggagagaxyz
4245    
4246    /^[:a[:digit:]]+/
4247        aaaa444:::Z
4248    
4249    /^[:a[:digit:]:b]+/
4250        aaaa444:::bbbZ
4251    
4252    /[:a]xxx[b:]/
4253         :xxx:
4254    
4255    /(?<=a{2})b/i
4256        xaabc
4257        ** Failers
4258        xabc
4259    
4260    /(?<!a{2})b/i
4261        xabc
4262        ** Failers
4263        xaabc
4264    
4265    /(?<=a\h)c/
4266        xa c
4267    
4268    /(?<=[^a]{2})b/
4269        axxbc
4270        aAAbc
4271        ** Failers
4272        xaabc
4273    
4274    /(?<=[^a]{2})b/i
4275        axxbc
4276        ** Failers
4277        aAAbc
4278        xaabc
4279    
4280    /(?<=a\H)c/
4281        abc
4282    
4283    /(?<=a\V)c/
4284        abc
4285    
4286    /(?<=a\v)c/
4287        a\nc
4288    
4289    /(?(?=c)c|d)++Y/
4290        XcccddYX
4291    
4292    /(?(?=c)c|d)*+Y/
4293        XcccddYX
4294    
4295    /^(a{2,3}){2,}+a/
4296        aaaaaaa
4297        ** Failers
4298        aaaaaa
4299        aaaaaaaaa
4300    
4301    /^(a{2,3})++a/
4302        ** Failers
4303        aaaaaa
4304    
4305    /^(a{2,3})*+a/
4306        ** Failers
4307        aaaaaa
4308    
4309    /ab\Cde/
4310        abXde
4311    
4312    /(?<=ab\Cde)X/
4313        abZdeX
4314    
4315    /a[\CD]b/
4316        aCb
4317        aDb
4318    
4319    /a[\C-X]b/
4320        aJb
4321    
4322    /\H\h\V\v/
4323        X X\x0a
4324        X\x09X\x0b
4325        ** Failers
4326        \xa0 X\x0a
4327    
4328    /\H*\h+\V?\v{3,4}/
4329        \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4330        \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4331        \x09\x20\xa0\x0a\x0b\x0c
4332        ** Failers
4333        \x09\x20\xa0\x0a\x0b
4334    
4335    /\H{3,4}/
4336        XY  ABCDE
4337        XY  PQR ST
4338    
4339    /.\h{3,4}./
4340        XY  AB    PQRS
4341    
4342    /\h*X\h?\H+Y\H?Z/
4343        >XNNNYZ
4344        >  X NYQZ
4345        ** Failers
4346        >XYZ
4347        >  X NY Z
4348    
4349    /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4350        >XY\x0aZ\x0aA\x0bNN\x0c
4351        >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4352    
4353    /(foo)\Kbar/
4354        foobar
4355    
4356    /(foo)(\Kbar|baz)/
4357        foobar
4358        foobaz
4359    
4360    /(foo\Kbar)baz/
4361        foobarbaz
4362    
4363    /abc\K|def\K/g+
4364        Xabcdefghi
4365    
4366    /ab\Kc|de\Kf/g+
4367        Xabcdefghi
4368    
4369    /(?=C)/g+
4370        ABCDECBA
4371    
4372    /^abc\K/+
4373        abcdef
4374        ** Failers
4375        defabcxyz
4376    
4377    /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
4378        ababababbbabZXXXX
4379    
4380    /(?<A>tom|bon)-\g{A}/
4381        tom-tom
4382        bon-bon
4383    
4384    /(^(a|b\g{-1}))/
4385        bacxxx
4386    
4387    /(?|(abc)|(xyz))\1/
4388        abcabc
4389        xyzxyz
4390        ** Failers
4391        abcxyz
4392        xyzabc
4393    
4394    /(?|(abc)|(xyz))(?1)/
4395        abcabc
4396        xyzabc
4397        ** Failers
4398        xyzxyz
4399    
4400    /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
4401        XYabcdY
4402    
4403    /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
4404        XYabcdY
4405    
4406    /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
4407        XYabcdY
4408    
4409    /(?'abc'\w+):\k<abc>{2}/
4410        a:aaxyz
4411        ab:ababxyz
4412        ** Failers
4413        a:axyz
4414        ab:abxyz
4415    
4416    /(?'abc'\w+):\g{abc}{2}/
4417        a:aaxyz
4418        ab:ababxyz
4419        ** Failers
4420        a:axyz
4421        ab:abxyz
4422    
4423    /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
4424        abd
4425        ce
4426    
4427    /^(a.)\g-1Z/
4428        aXaXZ
4429    
4430    /^(a.)\g{-1}Z/
4431        aXaXZ
4432    
4433    /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
4434        abcd
4435    
4436    /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
4437      (?(DEFINE)
4438      (?<NAME_PAT>[a-z]+)
4439      (?<ADDRESS_PAT>\d+)
4440      )/x
4441        metcalfe 33
4442    
4443    /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
4444        1.2.3.4
4445        131.111.10.206
4446        10.0.0.0
4447        ** Failers
4448        10.6
4449        455.3.4.5
4450    
4451    /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
4452        1.2.3.4
4453        131.111.10.206
4454        10.0.0.0
4455        ** Failers
4456        10.6
4457        455.3.4.5
4458    
4459    /^(\w++|\s++)*$/
4460        now is the time for all good men to come to the aid of the party
4461        *** Failers
4462        this is not a line with only words and spaces!
4463    
4464    /(\d++)(\w)/
4465        12345a
4466        *** Failers
4467        12345+
4468    
4469    /a++b/
4470        aaab
4471    
4472    /(a++b)/
4473        aaab
4474    
4475    /(a++)b/
4476        aaab
4477    
4478    /([^()]++|\([^()]*\))+/
4479        ((abc(ade)ufh()()x
4480    
4481    /\(([^()]++|\([^()]+\))+\)/
4482        (abc)
4483        (abc(def)xyz)
4484        *** Failers
4485        ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4486    
4487    /^([^()]|\((?1)*\))*$/
4488        abc
4489        a(b)c
4490        a(b(c))d
4491        *** Failers)
4492        a(b(c)d
4493    
4494    /^>abc>([^()]|\((?1)*\))*<xyz<$/
4495       >abc>123<xyz<
4496       >abc>1(2)3<xyz<
4497       >abc>(1(2)3)<xyz<
4498    
4499    /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
4500        1221
4501        Satanoscillatemymetallicsonatas
4502        AmanaplanacanalPanama
4503        AblewasIereIsawElba
4504        *** Failers
4505        Thequickbrownfox
4506    
4507    /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
4508        12
4509        (((2+2)*-3)-7)
4510        -12
4511        *** Failers
4512        ((2+2)*-3)-7)
4513    
4514    /^(x(y|(?1){2})z)/
4515        xyz
4516        xxyzxyzz
4517        *** Failers
4518        xxyzz
4519        xxyzxyzxyzz
4520    
4521    /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
4522        <>
4523        <abcd>
4524        <abc <123> hij>
4525        <abc <def> hij>
4526        <abc<>def>
4527        <abc<>
4528        *** Failers
4529        <abc
4530    
4531    /^a+(*FAIL)/
4532        aaaaaa
4533    
4534    /a+b?c+(*FAIL)/
4535        aaabccc
4536    
4537    /a+b?(*PRUNE)c+(*FAIL)/
4538        aaabccc
4539    
4540    /a+b?(*COMMIT)c+(*FAIL)/
4541        aaabccc
4542    
4543    /a+b?(*SKIP)c+(*FAIL)/
4544        aaabcccaaabccc
4545    
4546    /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4547        aaaxxxxxx
4548        aaa++++++
4549        bbbxxxxx
4550        bbb+++++
4551        cccxxxx
4552        ccc++++
4553        dddddddd
4554    
4555    /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4556        aaaxxxxxx
4557        aaa++++++
4558        bbbxxxxx
4559        bbb+++++
4560        cccxxxx
4561        ccc++++
4562        dddddddd
4563    
4564    /a+b?(*THEN)c+(*FAIL)/
4565        aaabccc
4566    
4567    /(A (A|B(*ACCEPT)|C) D)(E)/x
4568        AB
4569        ABX
4570        AADE
4571        ACDE
4572        ** Failers
4573        AD
4574    
4575    /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
4576        1221
4577        Satan, oscillate my metallic sonatas!
4578        A man, a plan, a canal: Panama!
4579        Able was I ere I saw Elba.
4580        *** Failers
4581        The quick brown fox
4582    
4583    /^((.)(?1)\2|.)$/
4584        a
4585        aba
4586        aabaa
4587        abcdcba
4588        pqaabaaqp
4589        ablewasiereisawelba
4590        rhubarb
4591        the quick brown fox
4592    
4593    /(a)(?<=b(?1))/
4594        baz
4595        ** Failers
4596        caz
4597    
4598    /(?<=b(?1))(a)/
4599        zbaaz
4600        ** Failers
4601        aaa
4602    
4603    /(?<X>a)(?<=b(?&X))/
4604        baz
4605    
4606    /^(?|(abc)|(def))\1/
4607        abcabc
4608        defdef
4609        ** Failers
4610        abcdef
4611        defabc
4612    
4613    /^(?|(abc)|(def))(?1)/
4614        abcabc
4615        defabc
4616        ** Failers
4617        defdef
4618        abcdef
4619    
4620    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
4621        a\"aaaaa
4622        b\"aaaaa
4623        ** Failers
4624        b\"11111
4625    
4626    /(?:(?1)|B)(A(*F)|C)/
4627        ABCD
4628        CCD
4629        ** Failers
4630        CAD
4631    
4632    /^(?:(?1)|B)(A(*F)|C)/
4633        CCD
4634        BCD
4635        ** Failers
4636        ABCD
4637        CAD
4638        BAD
4639    
4640    /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
4641        AAD
4642        ACD
4643        BAD
4644        BCD
4645        BAX
4646        ** Failers
4647        ACX
4648        ABC
4649    
4650    /(?(DEFINE)(A))B(?1)C/
4651        BAC
4652    
4653    /(?(DEFINE)((A)\2))B(?1)C/
4654        BAAC
4655    
4656    /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
4657        (ab(cd)ef)
4658    
4659    /^(?!a(*SKIP)b)/
4660        ac
4661    
4662    /^(?=a(*SKIP)b|ac)/
4663        ** Failers
4664        ac
4665    
4666    /^(?=a(*THEN)b|ac)/
4667        ac
4668    
4669    /^(?=a(*PRUNE)b)/
4670        ab
4671        ** Failers
4672        ac
4673    
4674    /^(?=a(*ACCEPT)b)/
4675        ac
4676    
4677    /^(?(?!a(*SKIP)b))/
4678        ac
4679    
4680    /(?>a\Kb)/
4681        ab
4682    
4683    /((?>a\Kb))/
4684        ab
4685    
4686    /(a\Kb)/
4687        ab
4688    
4689    /^a\Kcz|ac/
4690        ac
4691    
4692    /(?>a\Kbz|ab)/
4693        ab
4694    
4695    /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4696        ab
4697    
4698    /^([^()]|\((?1)*\))*$/
4699        a(b)c
4700        a(b(c)d)e
4701    
4702    /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4703        0
4704        00
4705        0000
4706    
4707    /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4708        0
4709        00
4710        0000
4711    
4712    /--- This one does fail, as expected, in Perl. It needs the complex item at the
4713         end of the pattern. A single letter instead of (B|D) makes it not fail,
4714         which I think is a Perl bug. --- /
4715    
4716    /A(*COMMIT)(B|D)/
4717        ACABX
4718    
4719    /--- Check the use of names for failure ---/
4720    
4721    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
4722        ** Failers
4723        AC
4724        CB
4725    
4726    /--- Force no study, otherwise mark is not seen. The studied version is in
4727         test 2 because it isn't Perl-compatible. ---/
4728    
4729    /(*MARK:A)(*SKIP:B)(C|X)/KSS
4730        C
4731        D
4732    
4733    /^(A(*THEN:A)B|C(*THEN:B)D)/K
4734        ** Failers
4735        CB
4736    
4737    /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
4738        CB
4739    
4740    /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
4741        CB
4742    
4743    /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
4744    that we have to have something complicated such as (B|Z) at the end because,
4745    for Perl, a simple character somehow causes an unwanted optimization to mess
4746    with the handling of backtracking verbs. ---/
4747    
4748    /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
4749        AAAC
4750    
4751    /--- Test skipping over a non-matching mark. ---/
4752    
4753    /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
4754        AAAC
4755    
4756    /--- Check shorthand for MARK ---/
4757    
4758    /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
4759        AAAC
4760    
4761    /--- Don't loop! Force no study, otherwise mark is not seen. ---/
4762    
4763    /(*:A)A+(*SKIP:A)(B|Z)/KSS
4764        AAAC
4765    
4766    /--- This should succeed, as a non-existent skip name disables the skip ---/
4767    
4768    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
4769        AAAC
4770    
4771    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
4772        AAAC
4773    
4774    /--- COMMIT at the start of a pattern should act like an anchor. Again,
4775    however, we need the complication for Perl. ---/
4776    
4777    /(*COMMIT)(A|P)(B|P)(C|P)/
4778        ABCDEFG
4779        ** Failers
4780        DEFGABC
4781    
4782    /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
4783    
4784    /(\w+)(?>b(*COMMIT))\w{2}/
4785        abbb
4786    
4787    /(\w+)b(*COMMIT)\w{2}/
4788        abbb
4789    
4790    /--- Check opening parens in comment when seeking forward reference. ---/
4791    
4792    /(?&t)(?#()(?(DEFINE)(?<t>a))/
4793        bac
4794    
4795    /--- COMMIT should override THEN ---/
4796    
4797    /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4798      yes
4799    
4800    /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4801      yes
4802    
4803    /b?(*SKIP)c/
4804        bc
4805        abc
4806    
4807    /(*SKIP)bc/
4808        a
4809    
4810    /(*SKIP)b/
4811        a
4812    
4813    /(?P<abn>(?P=abn)xxx|)+/
4814        xxx
4815    
4816    /(?i:([^b]))(?1)/
4817        aa
4818        aA
4819        ** Failers
4820        ab
4821        aB
4822        Ba
4823        ba
4824    
4825    /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4826        aaaaaaX
4827        ** Failers
4828        aaaaaa
4829    
4830    /^(?&t)*(?(DEFINE)(?<t>a))\w$/
4831        aaaaaaX
4832        aaaaaa
4833    
4834    /^(a)*+(\w)/
4835        aaaaX
4836        YZ
4837        ** Failers
4838        aaaa
4839    
4840    /^(?:a)*+(\w)/
4841        aaaaX
4842        YZ
4843        ** Failers
4844        aaaa
4845    
4846    /^(a)++(\w)/
4847        aaaaX
4848        ** Failers
4849        aaaa
4850        YZ
4851    
4852    /^(?:a)++(\w)/
4853        aaaaX
4854        ** Failers
4855        aaaa
4856        YZ
4857    
4858    /^(a)?+(\w)/
4859        aaaaX
4860        YZ
4861    
4862    /^(?:a)?+(\w)/
4863        aaaaX
4864        YZ
4865    
4866    /^(a){2,}+(\w)/
4867        aaaaX
4868        ** Failers
4869        aaa
4870        YZ
4871    
4872    /^(?:a){2,}+(\w)/
4873        aaaaX
4874        ** Failers
4875        aaa
4876        YZ
4877    
4878    /(a|)*(?1)b/
4879        b
4880        ab
4881        aab
4882    
4883    /(a)++(?1)b/
4884        ** Failers
4885        ab
4886        aab
4887    
4888    /(a)*+(?1)b/
4889        ** Failers
4890        ab
4891        aab
4892    
4893    /(?1)(?:(b)){0}/
4894        b
4895    
4896    /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4897        foo(bar(baz)+baz(bop))
4898    
4899    /(A (A|B(*ACCEPT)|C) D)(E)/x
4900        AB
4901    
4902    /\A.*?(?:a|b(*THEN)c)/
4903        ba
4904    
4905    /\A.*?(?:a|bc)/
4906        ba
4907    
4908    /\A.*?(a|b(*THEN)c)/
4909        ba
4910    
4911    /\A.*?(a|bc)/
4912        ba
4913    
4914    /\A.*?(?:a|b(*THEN)c)++/
4915        ba
4916    
4917    /\A.*?(?:a|bc)++/
4918        ba
4919    
4920    /\A.*?(a|b(*THEN)c)++/
4921        ba
4922    
4923    /\A.*?(a|bc)++/
4924        ba
4925    
4926    /\A.*?(?:a|b(*THEN)c|d)/
4927        ba
4928    
4929    /\A.*?(?:a|bc|d)/
4930        ba
4931    
4932    /(?:(b))++/
4933        beetle
4934    
4935    /(?(?=(a(*ACCEPT)z))a)/
4936        a
4937    
4938    /^(a)(?1)+ab/
4939        aaaab
4940    
4941    /^(a)(?1)++ab/
4942        aaaab
4943    
4944    /^(?=a(*:M))aZ/K
4945        aZbc
4946    
4947    /^(?!(*:M)b)aZ/K
4948        aZbc
4949    
4950    /(?(DEFINE)(a))?b(?1)/
4951        backgammon
4952    
4953    /^\N+/
4954        abc\ndef
4955    
4956    /^\N{1,}/
4957        abc\ndef
4958    
4959    /(?(R)a+|(?R)b)/
4960        aaaabcde
4961    
4962    /(?(R)a+|((?R))b)/
4963        aaaabcde
4964    
4965    /((?(R)a+|(?1)b))/
4966        aaaabcde
4967    
4968    /((?(R1)a+|(?1)b))/
4969        aaaabcde
4970    
4971    /a(*:any
4972    name)/K
4973        abc
4974    
4975    /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
4976        a
4977        ba
4978        bba
4979    
4980    /--- Checking revised (*THEN) handling ---/
4981    
4982    /--- Capture ---/
4983    
4984    /^.*? (a(*THEN)b) c/x
4985        aabc
4986    
4987    /^.*? (a(*THEN)b|(*F)) c/x
4988        aabc
4989    
4990    /^.*? ( (a(*THEN)b) | (*F) ) c/x
4991        aabc
4992    
4993    /^.*? ( (a(*THEN)b) ) c/x
4994        aabc
4995    
4996    /--- Non-capture ---/
4997    
4998    /^.*? (?:a(*THEN)b) c/x
4999        aabc
5000    
5001    /^.*? (?:a(*THEN)b|(*F)) c/x
5002        aabc
5003    
5004    /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
5005        aabc
5006    
5007    /^.*? (?: (?:a(*THEN)b) ) c/x
5008        aabc
5009    
5010    /--- Atomic ---/
5011    
5012    /^.*? (?>a(*THEN)b) c/x
5013        aabc
5014    
5015    /^.*? (?>a(*THEN)b|(*F)) c/x
5016        aabc
5017    
5018    /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
5019        aabc
5020    
5021    /^.*? (?> (?>a(*THEN)b) ) c/x
5022        aabc
5023    
5024    /--- Possessive capture ---/
5025    
5026    /^.*? (a(*THEN)b)++ c/x
5027        aabc
5028    
5029    /^.*? (a(*THEN)b|(*F))++ c/x
5030        aabc
5031    
5032    /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
5033        aabc
5034    
5035    /^.*? ( (a(*THEN)b)++ )++ c/x
5036        aabc
5037    
5038    /--- Possessive non-capture ---/
5039    
5040    /^.*? (?:a(*THEN)b)++ c/x
5041        aabc
5042    
5043    /^.*? (?:a(*THEN)b|(*F))++ c/x
5044        aabc
5045    
5046    /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
5047        aabc
5048    
5049    /^.*? (?: (?:a(*THEN)b)++ )++ c/x
5050        aabc
5051    
5052    /--- Condition assertion ---/
5053    
5054    /^(?(?=a(*THEN)b)ab|ac)/
5055        ac
5056    
5057    /--- Condition ---/
5058    
5059    /^.*?(?(?=a)a|b(*THEN)c)/
5060        ba
5061    
5062    /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5063        ba
5064    
5065    /^.*?(?(?=a)a(*THEN)b|c)/
5066        ac
5067    
5068    /--- Assertion ---/
5069    
5070    /^.*(?=a(*THEN)b)/
5071        aabc
5072    
5073    /------------------------------/
5074    
5075    /(?>a(*:m))/imsxSK
5076        a
5077    
5078    /(?>(a)(*:m))/imsxSK
5079        a
5080    
5081    /(?<=a(*ACCEPT)b)c/
5082        xacd
5083    
5084    /(?<=(a(*ACCEPT)b))c/
5085        xacd
5086    
5087    /(?<=(a(*COMMIT)b))c/
5088        xabcd
5089        ** Failers
5090        xacd
5091    
5092    /(?<!a(*FAIL)b)c/
5093        xcd
5094        acd
5095    
5096    /(?<=a(*:N)b)c/K
5097        xabcd
5098    
5099    /(?<=a(*PRUNE)b)c/
5100        xabcd
5101    
5102    /(?<=a(*SKIP)b)c/
5103        xabcd
5104    
5105    /(?<=a(*THEN)b)c/
5106        xabcd
5107    
5108    /(a)(?2){2}(.)/
5109        abcd
5110    
5111    /(*MARK:A)(*PRUNE:B)(C|X)/KS
5112        C
5113        D
5114    
5115    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
5116        C
5117        D
5118    
5119    /(*MARK:A)(*THEN:B)(C|X)/KS
5120        C
5121        D
5122    
5123    /(*MARK:A)(*THEN:B)(C|X)/KSY
5124        C
5125        D
5126    
5127    /(*MARK:A)(*THEN:B)(C|X)/KSS
5128        C
5129        D
5130    
5131    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
5132    
5133    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
5134        AAAC
5135    
5136    /--- Same --/
5137    
5138    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
5139        AAAC
5140    
5141    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
5142        AAAC
5143    
5144    /--- This should fail, as a null name is the same as no name ---/
5145    
5146    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
5147        AAAC
5148    
5149    /--- A check on what happens after hitting a mark and them bumping along to
5150    something that does not even start. Perl reports tags after the failures here,
5151    though it does not when the individual letters are made into something
5152    more complicated. ---/
5153    
5154    /A(*:A)B|XX(*:B)Y/K
5155        AABC
5156        XXYZ
5157        ** Failers
5158        XAQQ
5159        XAQQXZZ
5160        AXQQQ
5161        AXXQQQ
5162    
5163    /^(A(*THEN:A)B|C(*THEN:B)D)/K
5164        AB
5165        CD
5166        ** Failers
5167        AC
5168        CB
5169    
5170    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
5171        AB
5172        CD
5173        ** Failers
5174        AC
5175        CB
5176    
5177    /--- An empty name does not pass back an empty string. It is the same as if no
5178    name were given. ---/
5179    
5180    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
5181        AB
5182        CD
5183    
5184    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
5185    
5186    /A(*PRUNE:A)B/K
5187        ACAB
5188    
5189    /--- Mark names can be duplicated ---/
5190    
5191    /A(*:A)B|X(*:A)Y/K
5192        AABC
5193        XXYZ
5194    
5195    /b(*:m)f|a(*:n)w/K
5196        aw
5197        ** Failers
5198        abc
5199    
5200    /b(*:m)f|aw/K
5201        abaw
5202        ** Failers
5203        abc
5204        abax
5205    
5206    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
5207        AAAC
5208    
5209    /a(*PRUNE:X)bc|qq/KY
5210        ** Failers
5211        axy
5212    
5213    /a(*THEN:X)bc|qq/KY
5214        ** Failers
5215        axy
5216    
5217    /(?=a(*MARK:A)b)..x/K
5218        abxy
5219        ** Failers
5220        abpq
5221    
5222    /(?=a(*MARK:A)b)..(*:Y)x/K
5223        abxy
5224        ** Failers
5225        abpq
5226    
5227    /(?=a(*PRUNE:A)b)..x/K
5228        abxy
5229        ** Failers
5230        abpq
5231    
5232    /(?=a(*PRUNE:A)b)..(*:Y)x/K
5233        abxy
5234        ** Failers
5235        abpq
5236    
5237    /(?=a(*THEN:A)b)..x/K
5238        abxy
5239        ** Failers
5240        abpq
5241    
5242    /(?=a(*THEN:A)b)..(*:Y)x/K
5243        abxy
5244        ** Failers
5245        abpq
5246    
5247    /(another)?(\1?)test/
5248        hello world test
5249    
5250    /(another)?(\1+)test/
5251        hello world test
5252    
5253    /(a(*COMMIT)b){0}a(?1)|aac/
5254        aac
5255    
5256    /(?!a(*COMMIT)b)ac|cd/
5257        ac
5258    
5259    /((?:a?)*)*c/
5260      aac
5261    
5262    /((?>a?)*)*c/
5263      aac
5264    
5265    /(?>.*?a)(?<=ba)/
5266        aba
5267    
5268    /(?:.*?a)(?<=ba)/
5269        aba
5270    
5271    /.*?a(*PRUNE)b/
5272        aab
5273    
5274    /.*?a(*PRUNE)b/s
5275        aab
5276    
5277    /^a(*PRUNE)b/s
5278        aab
5279    
5280    /.*?a(*SKIP)b/
5281        aab
5282    
5283    /(?>.*?a)b/s
5284        aab
5285    
5286    /(?>.*?a)b/
5287        aab
5288    
5289    /(?>^a)b/s
5290        aab
5291    
5292    /(?>.*?)(?<=(abcd)|(wxyz))/
5293        alphabetabcd
5294        endingwxyz
5295    
5296    /(?>.*)(?<=(abcd)|(wxyz))/
5297        alphabetabcd
5298        endingwxyz
5299    
5300    "(?>.*)foo"
5301        abcdfooxyz
5302    
5303    "(?>.*?)foo"
5304        abcdfooxyz
5305    
5306    /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
5307        ac
5308    
5309    /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
5310        ac
5311    
5312    /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
5313        aac
5314    
5315    /(?<=(*SKIP)ac)a/
5316        aa
5317    
5318    /-- End of testinput1 --/

Legend:
Removed from v.93  
changed lines
  Added in v.1273

  ViewVC Help
Powered by ViewVC 1.1.5