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

Diff of /code/trunk/testdata/testoutput2

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

revision 442 by ph10, Fri Sep 11 10:21:02 2009 UTC revision 612 by ph10, Sat Jul 2 15:20:59 2011 UTC
# Line 1  Line 1 
1    /-- This set of tests is not Perl-compatible. It checks on special features
2        of PCRE's API, error diagnostics, and the compiled code of some patterns.
3        It also checks the non-Perl syntax the PCRE supports (Python, .NET,
4        Oniguruma). Finally, there are some tests where PCRE and Perl differ,
5        either because PCRE can't be compatible, or there is a possible Perl
6        bug. --/
7    
8    /-- Originally, the Perl >= 5.10 things were in here too, but now I have
9        separated many (most?) of them out into test 11. However, there may still
10        be some that were overlooked. --/
11    
12  /(a)b|/I  /(a)b|/I
13  Capturing subpattern count = 1  Capturing subpattern count = 1
14  No options  No options
# Line 92  Failed: missing terminating ] for charac Line 103  Failed: missing terminating ] for charac
103  /(?X)[\B]/  /(?X)[\B]/
104  Failed: invalid escape sequence in character class at offset 6  Failed: invalid escape sequence in character class at offset 6
105    
106    /(?X)[\R]/
107    Failed: invalid escape sequence in character class at offset 6
108    
109    /(?X)[\X]/
110    Failed: invalid escape sequence in character class at offset 6
111    
112    /[\B]/BZ
113    ------------------------------------------------------------------
114            Bra
115            B
116            Ket
117            End
118    ------------------------------------------------------------------
119    
120    /[\R]/BZ
121    ------------------------------------------------------------------
122            Bra
123            R
124            Ket
125            End
126    ------------------------------------------------------------------
127    
128    /[\X]/BZ
129    ------------------------------------------------------------------
130            Bra
131            X
132            Ket
133            End
134    ------------------------------------------------------------------
135    
136  /[z-a]/  /[z-a]/
137  Failed: range out of order in character class at offset 3  Failed: range out of order in character class at offset 3
138    
# Line 134  Capturing subpattern count = 0 Line 175  Capturing subpattern count = 0
175  No options  No options
176  No first char  No first char
177  No need char  No need char
178    Subject length lower bound = 3
179  Starting byte set: c d e  Starting byte set: c d e
180      this sentence eventually mentions a cat      this sentence eventually mentions a cat
181   0: cat   0: cat
# Line 145  Capturing subpattern count = 0 Line 187  Capturing subpattern count = 0
187  Options: caseless  Options: caseless
188  No first char  No first char
189  No need char  No need char
190    Subject length lower bound = 3
191  Starting byte set: C D E c d e  Starting byte set: C D E c d e
192      this sentence eventually mentions a CAT cat      this sentence eventually mentions a CAT cat
193   0: CAT   0: CAT
# Line 156  Capturing subpattern count = 0 Line 199  Capturing subpattern count = 0
199  No options  No options
200  No first char  No first char
201  No need char  No need char
202    Subject length lower bound = 1
203  Starting byte set: a b c d  Starting byte set: a b c d
204    
205  /(a|[^\dZ])/IS  /(a|[^\dZ])/IS
# Line 163  Capturing subpattern count = 1 Line 207  Capturing subpattern count = 1
207  No options  No options
208  No first char  No first char
209  No need char  No need char
210    Subject length lower bound = 1
211  Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a  Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
212    \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19    \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19
213    \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = >    \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = >
# Line 183  Capturing subpattern count = 1 Line 228  Capturing subpattern count = 1
228  No options  No options
229  No first char  No first char
230  No need char  No need char
231    Subject length lower bound = 1
232  Starting byte set: \x09 \x0a \x0c \x0d \x20 a b  Starting byte set: \x09 \x0a \x0c \x0d \x20 a b
233    
234  /(ab\2)/  /(ab\2)/
# Line 516  Capturing subpattern count = 0 Line 562  Capturing subpattern count = 0
562  No options  No options
563  No first char  No first char
564  No need char  No need char
565    Subject length lower bound = 1
566  Starting byte set: a b c d  Starting byte set: a b c d
567    
568  /(?i)[abcd]/IS  /(?i)[abcd]/IS
# Line 523  Capturing subpattern count = 0 Line 570  Capturing subpattern count = 0
570  Options: caseless  Options: caseless
571  No first char  No first char
572  No need char  No need char
573    Subject length lower bound = 1
574  Starting byte set: A B C D a b c d  Starting byte set: A B C D a b c d
575    
576  /(?m)[xy]|(b|c)/IS  /(?m)[xy]|(b|c)/IS
# Line 530  Capturing subpattern count = 1 Line 578  Capturing subpattern count = 1
578  Options: multiline  Options: multiline
579  No first char  No first char
580  No need char  No need char
581    Subject length lower bound = 1
582  Starting byte set: b c x y  Starting byte set: b c x y
583    
584  /(^a|^b)/Im  /(^a|^b)/Im
# Line 583  Need char = 'h' (caseless) Line 632  Need char = 'h' (caseless)
632  ------------------------------------------------------------------  ------------------------------------------------------------------
633          Bra          Bra
634          CBra 1          CBra 1
635       01 Opt       /i b
      NC b  
636          Ket          Ket
      00 Opt  
637          Ket          Ket
638          End          End
639  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 594  Capturing subpattern count = 1 Line 641  Capturing subpattern count = 1
641  No options  No options
642  First char = 'b' (caseless)  First char = 'b' (caseless)
643  No need char  No need char
644  Study returned NULL  Subject length lower bound = 1
645    No set of starting bytes
646    
647  /(a*b|(?i:c*(?-i)d))/IS  /(a*b|(?i:c*(?-i)d))/IS
648  Capturing subpattern count = 1  Capturing subpattern count = 1
649  No options  No options
650  No first char  No first char
651  No need char  No need char
652    Subject length lower bound = 1
653  Starting byte set: C a b c d  Starting byte set: C a b c d
654    
655  /a$/I  /a$/I
# Line 665  Capturing subpattern count = 0 Line 714  Capturing subpattern count = 0
714  No options  No options
715  No first char  No first char
716  No need char  No need char
717    Subject length lower bound = 1
718  Starting byte set: a b  Starting byte set: a b
719    
720  /(?<!foo)(alpha|omega)/IS  /(?<!foo)(alpha|omega)/IS
# Line 672  Capturing subpattern count = 1 Line 722  Capturing subpattern count = 1
722  No options  No options
723  No first char  No first char
724  Need char = 'a'  Need char = 'a'
725    Subject length lower bound = 5
726  Starting byte set: a o  Starting byte set: a o
727    
728  /(?!alphabet)[ab]/IS  /(?!alphabet)[ab]/IS
# Line 679  Capturing subpattern count = 0 Line 730  Capturing subpattern count = 0
730  No options  No options
731  No first char  No first char
732  No need char  No need char
733    Subject length lower bound = 1
734  Starting byte set: a b  Starting byte set: a b
735    
736  /(?<=foo\n)^bar/Im  /(?<=foo\n)^bar/Im
# Line 833  No match Line 885  No match
885      a      a
886  No match  No match
887    
888  /This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/I  /This one is here because Perl behaves differently; see also the following/I
889  Capturing subpattern count = 0  Capturing subpattern count = 0
890  No options  No options
891  First char = 'T'  First char = 'T'
# Line 845  Max back reference = 1 Line 897  Max back reference = 1
897  Options: anchored  Options: anchored
898  No first char  No first char
899  No need char  No need char
900        aaaa
901    No match
902      aaaaaa      aaaaaa
903   0: aaaaaa  No match
904   1: aa  
905    /Perl does not fail these two for the final subjects. Neither did PCRE until/
906    /release 8.01. The problem is in backtracking into a subpattern that contains/
907    No match
908    /a recursive reference to itself. PCRE has now made these into atomic patterns./
909    No match
910    
911    /^(xa|=?\1a){2}$/
912        xa=xaa
913     0: xa=xaa
914     1: =xaa
915        ** Failers
916    No match
917        xa=xaaa
918    No match
919    
920    /^(xa|=?\1a)+$/
921        xa=xaa
922     0: xa=xaa
923     1: =xaa
924        ** Failers
925    No match
926        xa=xaaa
927    No match
928    
929  /These are syntax tests from Perl 5.005/I  /These are syntax tests from Perl 5.005/I
930  Capturing subpattern count = 0  Capturing subpattern count = 0
# Line 1168  No need char Line 1245  No need char
1245  ------------------------------------------------------------------  ------------------------------------------------------------------
1246          Bra          Bra
1247          Bra          Bra
      04 Opt  
1248          AllAny*          AllAny*
1249          X          X
1250          Alt          Alt
      04 Opt  
1251          ^          ^
1252          B          B
1253          Ket          Ket
      00 Opt  
1254          Ket          Ket
1255          End          End
1256  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 1647  Capturing subpattern count = 0 Line 1721  Capturing subpattern count = 0
1721  Options: anchored  Options: anchored
1722  No first char  No first char
1723  Need char = 'd'  Need char = 'd'
1724  Study returned NULL  Subject length lower bound = 4
1725    No set of starting bytes
1726    
1727  /\(             # ( at start  /\(             # ( at start
1728    (?:           # Non-capturing bracket    (?:           # Non-capturing bracket
# Line 1805  Need char = ')' Line 1880  Need char = ')'
1880   0: (abcd(xyz<p>qrs)123)   0: (abcd(xyz<p>qrs)123)
1881   1: abcd(xyz<p>qrs)123   1: abcd(xyz<p>qrs)123
1882   2: 123   2: 123
  3: <unset>  
1883    
1884  /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix  /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
1885  Capturing subpattern count = 3  Capturing subpattern count = 3
# Line 1880  Capturing subpattern count = 0 Line 1954  Capturing subpattern count = 0
1954  No options  No options
1955  No first char  No first char
1956  No need char  No need char
1957    Subject length lower bound = 1
1958  Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1959    _ a b c d e f g h i j k l m n o p q r s t u v w x y z    _ a b c d e f g h i j k l m n o p q r s t u v w x y z
1960    
# Line 1941  Contains explicit CR or LF match Line 2016  Contains explicit CR or LF match
2016  No options  No options
2017  No first char  No first char
2018  No need char  No need char
2019    Subject length lower bound = 1
2020  Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20  Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20
2021    
2022  /^[[:cntrl:]]/DZ  /^[[:cntrl:]]/DZ
# Line 2683  No need char Line 2759  No need char
2759  ------------------------------------------------------------------  ------------------------------------------------------------------
2760          Bra          Bra
2761          a          a
2762       01 Opt       /i b
      NC b  
2763          Ket          Ket
2764          End          End
2765  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2706  No match Line 2781  No match
2781          Bra          Bra
2782          CBra 1          CBra 1
2783          a          a
2784       01 Opt       /i b
      NC b  
2785          Ket          Ket
      00 Opt  
2786          Ket          Ket
2787          End          End
2788  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2731  No match Line 2804  No match
2804  /   (?i)abc/IxDZ  /   (?i)abc/IxDZ
2805  ------------------------------------------------------------------  ------------------------------------------------------------------
2806          Bra          Bra
2807       NC abc       /i abc
2808          Ket          Ket
2809          End          End
2810  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2744  Need char = 'c' (caseless) Line 2817  Need char = 'c' (caseless)
2817    (?i)abc/IxDZ    (?i)abc/IxDZ
2818  ------------------------------------------------------------------  ------------------------------------------------------------------
2819          Bra          Bra
2820       NC abc       /i abc
2821          Ket          Ket
2822          End          End
2823  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 2917  No need char Line 2990  No need char
2990  /(x)*+/DZ  /(x)*+/DZ
2991  ------------------------------------------------------------------  ------------------------------------------------------------------
2992          Bra          Bra
2993          Once          Braposzero
2994          Brazero          CBraPos 1
         CBra 1  
2995          x          x
2996          KetRmax          KetRpos
         Ket  
2997          Ket          Ket
2998          End          End
2999  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 3147  Failed: POSIX collating elements are not Line 3218  Failed: POSIX collating elements are not
3218  Failed: POSIX named classes are supported only within a class at offset 0  Failed: POSIX named classes are supported only within a class at offset 0
3219    
3220  /\l/I  /\l/I
3221  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3222    
3223  /\L/I  /\L/I
3224  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3225    
3226  /\N{name}/I  /\N{name}/I
3227  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3228    
3229  /\u/I  /\u/I
3230  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3231    
3232  /\U/I  /\U/I
3233  Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1  Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3234    
3235  /[/I  /[/I
3236  Failed: missing terminating ] for character class at offset 1  Failed: missing terminating ] for character class at offset 1
# Line 3411  Capturing subpattern count = 0 Line 3482  Capturing subpattern count = 0
3482  No options  No options
3483  No first char  No first char
3484  No need char  No need char
3485    Subject length lower bound = 1
3486  Starting byte set: a b  Starting byte set: a b
3487    
3488  /[^a]/I  /[^a]/I
# Line 3430  Capturing subpattern count = 0 Line 3502  Capturing subpattern count = 0
3502  No options  No options
3503  No first char  No first char
3504  Need char = '6'  Need char = '6'
3505    Subject length lower bound = 4
3506  Starting byte set: 0 1 2 3 4 5 6 7 8 9  Starting byte set: 0 1 2 3 4 5 6 7 8 9
3507    
3508  /a^b/I  /a^b/I
# Line 3463  Capturing subpattern count = 0 Line 3536  Capturing subpattern count = 0
3536  Options: caseless  Options: caseless
3537  No first char  No first char
3538  No need char  No need char
3539    Subject length lower bound = 1
3540  Starting byte set: A B a b  Starting byte set: A B a b
3541    
3542  /[ab](?i)cd/IS  /[ab](?i)cd/IS
# Line 3470  Capturing subpattern count = 0 Line 3544  Capturing subpattern count = 0
3544  No options  No options
3545  No first char  No first char
3546  Need char = 'd' (caseless)  Need char = 'd' (caseless)
3547    Subject length lower bound = 3
3548  Starting byte set: a b  Starting byte set: a b
3549    
3550  /abc(?C)def/I  /abc(?C)def/I
# Line 3505  Need char = 'f' Line 3580  Need char = 'f'
3580    1    ^    ^     f    1    ^    ^     f
3581   0: abcdef   0: abcdef
3582    
3583  /(?C1)\dabc(?C2)def/I  /(?C1)\dabc(?C2)def/IS
3584    Capturing subpattern count = 0
3585    No options
3586    No first char
3587    Need char = 'f'
3588    Subject length lower bound = 7
3589    Starting byte set: 0 1 2 3 4 5 6 7 8 9
3590        1234abcdef
3591    --->1234abcdef
3592      1 ^              \d
3593      1  ^             \d
3594      1   ^            \d
3595      1    ^           \d
3596      2    ^   ^       d
3597     0: 4abcdef
3598        *** Failers
3599    No match
3600        abcdef
3601    No match
3602    
3603    /(?C1)\dabc(?C2)def/ISS
3604  Capturing subpattern count = 0  Capturing subpattern count = 0
3605  No options  No options
3606  No first char  No first char
# Line 3820  Capturing subpattern count = 0 Line 3915  Capturing subpattern count = 0
3915  No options  No options
3916  No first char  No first char
3917  No need char  No need char
3918    Subject length lower bound = 1
3919  Starting byte set: a b  Starting byte set: a b
3920    
3921  /(?R)/I  /(?R)/I
# Line 3939  No options Line 4035  No options
4035  First char = 'a'  First char = 'a'
4036  Need char = 'b'  Need char = 'b'
4037    
 /^\W*(?:((.)\W*(?1)\W*\2|)|((.)\W*(?3)\W*\4|\W*.\W*))\W*$/Ii  
 Capturing subpattern count = 4  
 Max back reference = 4  
 Options: anchored caseless  
 No first char  
 No need char  
     1221  
  0: 1221  
  1: 1221  
  2: 1  
     Satan, oscillate my metallic sonatas!  
  0: Satan, oscillate my metallic sonatas!  
  1: <unset>  
  2: <unset>  
  3: Satan, oscillate my metallic sonatas  
  4: S  
     A man, a plan, a canal: Panama!  
  0: A man, a plan, a canal: Panama!  
  1: <unset>  
  2: <unset>  
  3: A man, a plan, a canal: Panama  
  4: A  
     Able was I ere I saw Elba.  
  0: Able was I ere I saw Elba.  
  1: <unset>  
  2: <unset>  
  3: Able was I ere I saw Elba  
  4: A  
     *** Failers  
 No match  
     The quick brown fox  
 No match  
   
4038  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
4039  Capturing subpattern count = 2  Capturing subpattern count = 2
4040  Options: anchored  Options: anchored
# Line 4371  No first char Line 4434  No first char
4434  Need char = 'z'  Need char = 'z'
4435    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
4436  Minimum match() limit = 8  Minimum match() limit = 8
4437  Minimum match() recursion limit = 6  Minimum match() recursion limit = 7
4438   0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz   0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
4439   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4440    aaaaaaaaaaaaaz\M    aaaaaaaaaaaaaz\M
4441  Minimum match() limit = 32768  Minimum match() limit = 32768
4442  Minimum match() recursion limit = 42  Minimum match() recursion limit = 43
4443  No match  No match
4444    
4445  /(aaa(?C1)bbb|ab)/I  /(aaa(?C1)bbb|ab)/I
# Line 4637  Capturing subpattern count = 3 Line 4700  Capturing subpattern count = 3
4700  Options: caseless  Options: caseless
4701  No first char  No first char
4702  Need char = 'g' (caseless)  Need char = 'g' (caseless)
4703  Study returned NULL  Subject length lower bound = 8
4704    No set of starting bytes
4705       Baby Bjorn Active Carrier - With free SHIPPING!!       Baby Bjorn Active Carrier - With free SHIPPING!!
4706   0: Baby Bjorn Active Carrier - With free SHIPPING!!   0: Baby Bjorn Active Carrier - With free SHIPPING!!
4707   1: Baby Bjorn Active Carrier - With free SHIPPING!!   1: Baby Bjorn Active Carrier - With free SHIPPING!!
# Line 4655  Capturing subpattern count = 0 Line 4719  Capturing subpattern count = 0
4719  No options  No options
4720  No first char  No first char
4721  Need char = 'b'  Need char = 'b'
4722  Study returned NULL  Subject length lower bound = 1
4723    No set of starting bytes
4724    
4725  /(a|b)*.?c/ISDZ  /(a|b)*.?c/ISDZ
4726  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 4675  Capturing subpattern count = 1 Line 4740  Capturing subpattern count = 1
4740  No options  No options
4741  No first char  No first char
4742  Need char = 'c'  Need char = 'c'
4743  Study returned NULL  Subject length lower bound = 1
4744    No set of starting bytes
4745    
4746  /abc(?C255)de(?C)f/DZ  /abc(?C255)de(?C)f/DZ
4747  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 4732  Need char = 'e' Line 4798  Need char = 'e'
4798   +4 ^   ^      e   +4 ^   ^      e
4799  No match  No match
4800    
4801  /a*b/ICDZ  /a*b/ICDZS
4802    ------------------------------------------------------------------
4803            Bra
4804            Callout 255 0 2
4805            a*+
4806            Callout 255 2 1
4807            b
4808            Callout 255 3 0
4809            Ket
4810            End
4811    ------------------------------------------------------------------
4812    Capturing subpattern count = 0
4813    Options:
4814    No first char
4815    Need char = 'b'
4816    Subject length lower bound = 1
4817    Starting byte set: a b
4818      ab
4819    --->ab
4820     +0 ^      a*
4821     +2 ^^     b
4822     +3 ^ ^
4823     0: ab
4824      aaaab
4825    --->aaaab
4826     +0 ^         a*
4827     +2 ^   ^     b
4828     +3 ^    ^
4829     0: aaaab
4830      aaaacb
4831    --->aaaacb
4832     +0 ^          a*
4833     +2 ^   ^      b
4834     +0  ^         a*
4835     +2  ^  ^      b
4836     +0   ^        a*
4837     +2   ^ ^      b
4838     +0    ^       a*
4839     +2    ^^      b
4840     +0      ^     a*
4841     +2      ^     b
4842     +3      ^^
4843     0: b
4844    
4845    /a*b/ICDZSS
4846  ------------------------------------------------------------------  ------------------------------------------------------------------
4847          Bra          Bra
4848          Callout 255 0 2          Callout 255 0 2
# Line 4815  Need char = 'b' Line 4925  Need char = 'b'
4925   +2    ^^      b   +2    ^^      b
4926  No match  No match
4927    
4928  /(abc|def)x/ICDZ  /(abc|def)x/ICDZS
4929    ------------------------------------------------------------------
4930            Bra
4931            Callout 255 0 9
4932            CBra 1
4933            Callout 255 1 1
4934            a
4935            Callout 255 2 1
4936            b
4937            Callout 255 3 1
4938            c
4939            Callout 255 4 0
4940            Alt
4941            Callout 255 5 1
4942            d
4943            Callout 255 6 1
4944            e
4945            Callout 255 7 1
4946            f
4947            Callout 255 8 0
4948            Ket
4949            Callout 255 9 1
4950            x
4951            Callout 255 10 0
4952            Ket
4953            End
4954    ------------------------------------------------------------------
4955    Capturing subpattern count = 1
4956    Options:
4957    No first char
4958    Need char = 'x'
4959    Subject length lower bound = 4
4960    Starting byte set: a d
4961      abcx
4962    --->abcx
4963     +0 ^        (abc|def)
4964     +1 ^        a
4965     +2 ^^       b
4966     +3 ^ ^      c
4967     +4 ^  ^     |
4968     +9 ^  ^     x
4969    +10 ^   ^
4970     0: abcx
4971     1: abc
4972      defx
4973    --->defx
4974     +0 ^        (abc|def)
4975     +1 ^        a
4976     +5 ^        d
4977     +6 ^^       e
4978     +7 ^ ^      f
4979     +8 ^  ^     )
4980     +9 ^  ^     x
4981    +10 ^   ^
4982     0: defx
4983     1: def
4984      ** Failers
4985    No match
4986      abcdefzx
4987    --->abcdefzx
4988     +0 ^            (abc|def)
4989     +1 ^            a
4990     +2 ^^           b
4991     +3 ^ ^          c
4992     +4 ^  ^         |
4993     +9 ^  ^         x
4994     +5 ^            d
4995     +0    ^         (abc|def)
4996     +1    ^         a
4997     +5    ^         d
4998     +6    ^^        e
4999     +7    ^ ^       f
5000     +8    ^  ^      )
5001     +9    ^  ^      x
5002    No match
5003    
5004    /(abc|def)x/ICDZSS
5005  ------------------------------------------------------------------  ------------------------------------------------------------------
5006          Bra          Bra
5007          Callout 255 0 9          Callout 255 0 9
# Line 4869  Need char = 'x' Line 5055  Need char = 'x'
5055  +10 ^   ^  +10 ^   ^
5056   0: defx   0: defx
5057   1: def   1: def
5058      ** Failers
5059    No match
5060    abcdefzx    abcdefzx
5061  --->abcdefzx  --->abcdefzx
5062   +0 ^            (abc|def)   +0 ^            (abc|def)
# Line 4969  No need char Line 5157  No need char
5157   0: abcdcdcd   0: abcdcdcd
5158   1: cd   1: cd
5159    
5160  /([ab]{,4}c|xy)/ICDZ  /([ab]{,4}c|xy)/ICDZS
5161  ------------------------------------------------------------------  ------------------------------------------------------------------
5162          Bra          Bra
5163          Callout 255 0 14          Callout 255 0 14
# Line 5002  Capturing subpattern count = 1 Line 5190  Capturing subpattern count = 1
5190  Options:  Options:
5191  No first char  No first char
5192  No need char  No need char
5193    Subject length lower bound = 2
5194    Starting byte set: a b x
5195      Note: that { does NOT introduce a quantifier      Note: that { does NOT introduce a quantifier
5196  --->Note: that { does NOT introduce a quantifier  --->Note: that { does NOT introduce a quantifier
  +0 ^                                                ([ab]{,4}c|xy)  
  +1 ^                                                [ab]  
 +11 ^                                                x  
  +0  ^                                               ([ab]{,4}c|xy)  
  +1  ^                                               [ab]  
 +11  ^                                               x  
  +0   ^                                              ([ab]{,4}c|xy)  
  +1   ^                                              [ab]  
 +11   ^                                              x  
  +0    ^                                             ([ab]{,4}c|xy)  
  +1    ^                                             [ab]  
 +11    ^                                             x  
  +0     ^                                            ([ab]{,4}c|xy)  
  +1     ^                                            [ab]  
 +11     ^                                            x  
  +0      ^                                           ([ab]{,4}c|xy)  
  +1      ^                                           [ab]  
 +11      ^                                           x  
  +0       ^                                          ([ab]{,4}c|xy)  
  +1       ^                                          [ab]  
 +11       ^                                          x  
  +0        ^                                         ([ab]{,4}c|xy)  
  +1        ^                                         [ab]  
 +11        ^                                         x  
5197   +0         ^                                        ([ab]{,4}c|xy)   +0         ^                                        ([ab]{,4}c|xy)
5198   +1         ^                                        [ab]   +1         ^                                        [ab]
5199   +5         ^^                                       {   +5         ^^                                       {
5200  +11         ^                                        x  +11         ^                                        x
5201   +0          ^                                       ([ab]{,4}c|xy)   +0                                 ^                ([ab]{,4}c|xy)
5202   +1          ^                                       [ab]   +1                                 ^                [ab]
5203  +11          ^                                       x   +5                                 ^^               {
5204   +0           ^                                      ([ab]{,4}c|xy)  +11                                 ^                x
5205   +1           ^                                      [ab]   +0                                     ^            ([ab]{,4}c|xy)
5206  +11           ^                                      x   +1                                     ^            [ab]
5207   +0            ^                                     ([ab]{,4}c|xy)   +5                                     ^^           {
5208   +1            ^                                     [ab]  +11                                     ^            x
5209  +11            ^                                     x  No match
5210   +0             ^                                    ([ab]{,4}c|xy)  
5211   +1             ^                                    [ab]  /([ab]{,4}c|xy)/ICDZSS
5212  +11             ^                                    x  ------------------------------------------------------------------
5213   +0              ^                                   ([ab]{,4}c|xy)          Bra
5214   +1              ^                                   [ab]          Callout 255 0 14
5215  +11              ^                                   x          CBra 1
5216   +0               ^                                  ([ab]{,4}c|xy)          Callout 255 1 4
5217   +1               ^                                  [ab]          [ab]
5218  +11               ^                                  x          Callout 255 5 1
5219   +0                ^                                 ([ab]{,4}c|xy)          {
5220            Callout 255 6 1
5221            ,
5222            Callout 255 7 1
5223            4
5224            Callout 255 8 1
5225            }
5226            Callout 255 9 1
5227            c
5228            Callout 255 10 0
5229            Alt
5230            Callout 255 11 1
5231            x
5232            Callout 255 12 1
5233            y
5234            Callout 255 13 0
5235            Ket
5236            Callout 255 14 0
5237            Ket
5238            End
5239    ------------------------------------------------------------------
5240    Capturing subpattern count = 1
5241    Options:
5242    No first char
5243    No need char
5244        Note: that { does NOT introduce a quantifier
5245    --->Note: that { does NOT introduce a quantifier
5246     +0 ^                                                ([ab]{,4}c|xy)
5247     +1 ^                                                [ab]
5248    +11 ^                                                x
5249     +0  ^                                               ([ab]{,4}c|xy)
5250     +1  ^                                               [ab]
5251    +11  ^                                               x
5252     +0   ^                                              ([ab]{,4}c|xy)
5253     +1   ^                                              [ab]
5254    +11   ^                                              x
5255     +0    ^                                             ([ab]{,4}c|xy)
5256     +1    ^                                             [ab]
5257    +11    ^                                             x
5258     +0     ^                                            ([ab]{,4}c|xy)
5259     +1     ^                                            [ab]
5260    +11     ^                                            x
5261     +0      ^                                           ([ab]{,4}c|xy)
5262     +1      ^                                           [ab]
5263    +11      ^                                           x
5264     +0       ^                                          ([ab]{,4}c|xy)
5265     +1       ^                                          [ab]
5266    +11       ^                                          x
5267     +0        ^                                         ([ab]{,4}c|xy)
5268     +1        ^                                         [ab]
5269    +11        ^                                         x
5270     +0         ^                                        ([ab]{,4}c|xy)
5271     +1         ^                                        [ab]
5272     +5         ^^                                       {
5273    +11         ^                                        x
5274     +0          ^                                       ([ab]{,4}c|xy)
5275     +1          ^                                       [ab]
5276    +11          ^                                       x
5277     +0           ^                                      ([ab]{,4}c|xy)
5278     +1           ^                                      [ab]
5279    +11           ^                                      x
5280     +0            ^                                     ([ab]{,4}c|xy)
5281     +1            ^                                     [ab]
5282    +11            ^                                     x
5283     +0             ^                                    ([ab]{,4}c|xy)
5284     +1             ^                                    [ab]
5285    +11             ^                                    x
5286     +0              ^                                   ([ab]{,4}c|xy)
5287     +1              ^                                   [ab]
5288    +11              ^                                   x
5289     +0               ^                                  ([ab]{,4}c|xy)
5290     +1               ^                                  [ab]
5291    +11               ^                                  x
5292     +0                ^                                 ([ab]{,4}c|xy)
5293   +1                ^                                 [ab]   +1                ^                                 [ab]
5294  +11                ^                                 x  +11                ^                                 x
5295   +0                 ^                                ([ab]{,4}c|xy)   +0                 ^                                ([ab]{,4}c|xy)
# Line 5421  No match Line 5660  No match
5660      123456\P      123456\P
5661  No match  No match
5662    
5663  /abc/I>testsavedregex  /abc/IS>testsavedregex
5664    Capturing subpattern count = 0
5665    No options
5666    First char = 'a'
5667    Need char = 'c'
5668    Subject length lower bound = 3
5669    No set of starting bytes
5670    Compiled pattern written to testsavedregex
5671    Study data written to testsavedregex
5672    <testsavedregex
5673    Compiled pattern loaded from testsavedregex
5674    Study data loaded from testsavedregex
5675        abc
5676     0: abc
5677        ** Failers
5678    No match
5679        bca
5680    No match
5681    
5682    /abc/ISS>testsavedregex
5683  Capturing subpattern count = 0  Capturing subpattern count = 0
5684  No options  No options
5685  First char = 'a'  First char = 'a'
5686  Need char = 'c'  Need char = 'c'
5687  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5688  <testsavedregex  <testsavedregex
5689  Compiled regex loaded from testsavedregex  Compiled pattern loaded from testsavedregex
5690  No study data  No study data
5691      abc      abc
5692   0: abc   0: abc
# Line 5437  No match Line 5695  No match
5695      bca      bca
5696  No match  No match
5697    
5698  /abc/IF>testsavedregex  /abc/IFS>testsavedregex
5699    Capturing subpattern count = 0
5700    No options
5701    First char = 'a'
5702    Need char = 'c'
5703    Subject length lower bound = 3
5704    No set of starting bytes
5705    Compiled pattern written to testsavedregex
5706    Study data written to testsavedregex
5707    <testsavedregex
5708    Compiled pattern (byte-inverted) loaded from testsavedregex
5709    Study data loaded from testsavedregex
5710        abc
5711     0: abc
5712        ** Failers
5713    No match
5714        bca
5715    No match
5716    
5717    /abc/IFSS>testsavedregex
5718  Capturing subpattern count = 0  Capturing subpattern count = 0
5719  No options  No options
5720  First char = 'a'  First char = 'a'
5721  Need char = 'c'  Need char = 'c'
5722  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5723  <testsavedregex  <testsavedregex
5724  Compiled regex (byte-inverted) loaded from testsavedregex  Compiled pattern (byte-inverted) loaded from testsavedregex
5725  No study data  No study data
5726      abc      abc
5727   0: abc   0: abc
# Line 5458  Capturing subpattern count = 1 Line 5735  Capturing subpattern count = 1
5735  No options  No options
5736  No first char  No first char
5737  No need char  No need char
5738    Subject length lower bound = 1
5739  Starting byte set: a b  Starting byte set: a b
5740  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5741  Study data written to testsavedregex  Study data written to testsavedregex
5742  <testsavedregex  <testsavedregex
5743  Compiled regex loaded from testsavedregex  Compiled pattern loaded from testsavedregex
5744  Study data loaded from testsavedregex  Study data loaded from testsavedregex
5745      abc      abc
5746   0: a   0: a
# Line 5473  Study data loaded from testsavedregex Line 5751  Study data loaded from testsavedregex
5751      def      def
5752  No match  No match
5753    
5754    /(a|b)/ISS>testsavedregex
5755    Capturing subpattern count = 1
5756    No options
5757    No first char
5758    No need char
5759    Compiled pattern written to testsavedregex
5760    <testsavedregex
5761    Compiled pattern loaded from testsavedregex
5762    No study data
5763        abc
5764     0: a
5765     1: a
5766        ** Failers
5767     0: a
5768     1: a
5769        def
5770    No match
5771    
5772  /(a|b)/ISF>testsavedregex  /(a|b)/ISF>testsavedregex
5773  Capturing subpattern count = 1  Capturing subpattern count = 1
5774  No options  No options
5775  No first char  No first char
5776  No need char  No need char
5777    Subject length lower bound = 1
5778  Starting byte set: a b  Starting byte set: a b
5779  Compiled regex written to testsavedregex  Compiled pattern written to testsavedregex
5780  Study data written to testsavedregex  Study data written to testsavedregex
5781  <testsavedregex  <testsavedregex
5782  Compiled regex (byte-inverted) loaded from testsavedregex  Compiled pattern (byte-inverted) loaded from testsavedregex
5783  Study data loaded from testsavedregex  Study data loaded from testsavedregex
5784      abc      abc
5785   0: a   0: a
# Line 5493  Study data loaded from testsavedregex Line 5790  Study data loaded from testsavedregex
5790      def      def
5791  No match  No match
5792    
5793    /(a|b)/ISSF>testsavedregex
5794    Capturing subpattern count = 1
5795    No options
5796    No first char
5797    No need char
5798    Compiled pattern written to testsavedregex
5799    <testsavedregex
5800    Compiled pattern (byte-inverted) loaded from testsavedregex
5801    No study data
5802        abc
5803     0: a
5804     1: a
5805        ** Failers
5806     0: a
5807     1: a
5808        def
5809    No match
5810    
5811  ~<(\w+)/?>(.)*</(\1)>~smgI  ~<(\w+)/?>(.)*</(\1)>~smgI
5812  Capturing subpattern count = 3  Capturing subpattern count = 3
5813  Max back reference = 1  Max back reference = 1
# Line 6190  Capturing subpattern count = 0 Line 6505  Capturing subpattern count = 0
6505  No options  No options
6506  No first char  No first char
6507  Need char = ','  Need char = ','
6508    Subject length lower bound = 1
6509  Starting byte set: \x09 \x0a \x0c \x0d \x20 ,  Starting byte set: \x09 \x0a \x0c \x0d \x20 ,
6510      \x0b,\x0b      \x0b,\x0b
6511   0: ,   0: ,
# Line 6362  No first char Line 6678  No first char
6678  No need char  No need char
6679     /* this is a C style comment */\M     /* this is a C style comment */\M
6680  Minimum match() limit = 120  Minimum match() limit = 120
6681  Minimum match() recursion limit = 6  Minimum match() recursion limit = 35
6682   0: /* this is a C style comment */   0: /* this is a C style comment */
6683   1: /* this is a C style comment */   1: /* this is a C style comment */
6684    
# Line 6494  Capturing subpattern count = 1 Line 6810  Capturing subpattern count = 1
6810  No options  No options
6811  No first char  No first char
6812  No need char  No need char
6813    Subject length lower bound = 1
6814  Starting byte set: C a b c d  Starting byte set: C a b c d
6815    
6816  /()[ab]xyz/IS  /()[ab]xyz/IS
# Line 6501  Capturing subpattern count = 1 Line 6818  Capturing subpattern count = 1
6818  No options  No options
6819  No first char  No first char
6820  Need char = 'z'  Need char = 'z'
6821    Subject length lower bound = 4
6822  Starting byte set: a b  Starting byte set: a b
6823    
6824  /(|)[ab]xyz/IS  /(|)[ab]xyz/IS
# Line 6508  Capturing subpattern count = 1 Line 6826  Capturing subpattern count = 1
6826  No options  No options
6827  No first char  No first char
6828  Need char = 'z'  Need char = 'z'
6829    Subject length lower bound = 4
6830  Starting byte set: a b  Starting byte set: a b
6831    
6832  /(|c)[ab]xyz/IS  /(|c)[ab]xyz/IS
# Line 6515  Capturing subpattern count = 1 Line 6834  Capturing subpattern count = 1
6834  No options  No options
6835  No first char  No first char
6836  Need char = 'z'  Need char = 'z'
6837    Subject length lower bound = 4
6838  Starting byte set: a b c  Starting byte set: a b c
6839    
6840  /(|c?)[ab]xyz/IS  /(|c?)[ab]xyz/IS
# Line 6522  Capturing subpattern count = 1 Line 6842  Capturing subpattern count = 1
6842  No options  No options
6843  No first char  No first char
6844  Need char = 'z'  Need char = 'z'
6845    Subject length lower bound = 4
6846  Starting byte set: a b c  Starting byte set: a b c
6847    
6848  /(d?|c?)[ab]xyz/IS  /(d?|c?)[ab]xyz/IS
# Line 6529  Capturing subpattern count = 1 Line 6850  Capturing subpattern count = 1
6850  No options  No options
6851  No first char  No first char
6852  Need char = 'z'  Need char = 'z'
6853    Subject length lower bound = 4
6854  Starting byte set: a b c d  Starting byte set: a b c d
6855    
6856  /(d?|c)[ab]xyz/IS  /(d?|c)[ab]xyz/IS
# Line 6536  Capturing subpattern count = 1 Line 6858  Capturing subpattern count = 1
6858  No options  No options
6859  No first char  No first char
6860  Need char = 'z'  Need char = 'z'
6861    Subject length lower bound = 4
6862  Starting byte set: a b c d  Starting byte set: a b c d
6863    
6864  /^a*b\d/DZ  /^a*b\d/DZ
# Line 6608  No match Line 6931  No match
6931  ------------------------------------------------------------------  ------------------------------------------------------------------
6932          Bra          Bra
6933          ^          ^
6934          a*       /i a*
6935       NC A       /i A
6936          \d          \d
6937          Ket          Ket
6938          End          End
# Line 6628  Capturing subpattern count = 1 Line 6951  Capturing subpattern count = 1
6951  No options  No options
6952  No first char  No first char
6953  No need char  No need char
6954    Subject length lower bound = 1
6955  Starting byte set: a b c d  Starting byte set: a b c d
6956    
6957  /(a+|b*)[cd]/IS  /(a+|b*)[cd]/IS
# Line 6635  Capturing subpattern count = 1 Line 6959  Capturing subpattern count = 1
6959  No options  No options
6960  No first char  No first char
6961  No need char  No need char
6962    Subject length lower bound = 1
6963  Starting byte set: a b c d  Starting byte set: a b c d
6964    
6965  /(a*|b+)[cd]/IS  /(a*|b+)[cd]/IS
# Line 6642  Capturing subpattern count = 1 Line 6967  Capturing subpattern count = 1
6967  No options  No options
6968  No first char  No first char
6969  No need char  No need char
6970    Subject length lower bound = 1
6971  Starting byte set: a b c d  Starting byte set: a b c d
6972    
6973  /(a+|b+)[cd]/IS  /(a+|b+)[cd]/IS
# Line 6649  Capturing subpattern count = 1 Line 6975  Capturing subpattern count = 1
6975  No options  No options
6976  No first char  No first char
6977  No need char  No need char
6978    Subject length lower bound = 2
6979  Starting byte set: a b  Starting byte set: a b
6980    
6981  /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((  /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
# Line 7233  Matched, but too many substrings Line 7560  Matched, but too many substrings
7560  /[^a]+a/BZi  /[^a]+a/BZi
7561  ------------------------------------------------------------------  ------------------------------------------------------------------
7562          Bra          Bra
7563          [^A]++       /i [^A]++
7564       NC a       /i a
7565          Ket          Ket
7566          End          End
7567  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 7242  Matched, but too many substrings Line 7569  Matched, but too many substrings
7569  /[^a]+A/BZi  /[^a]+A/BZi
7570  ------------------------------------------------------------------  ------------------------------------------------------------------
7571          Bra          Bra
7572          [^A]++       /i [^A]++
7573       NC A       /i A
7574          Ket          Ket
7575          End          End
7576  ------------------------------------------------------------------  ------------------------------------------------------------------
# Line 7454  No match Line 7781  No match
7781          ^          ^
7782          CBra 1          CBra 1
7783          Cond          Cond
7784        2 Cond ref        2 Cond nref
7785          y          y
7786          Ket          Ket
7787          [()]          [()]
# Line 7572  Need char = ':' Line 7899  Need char = ':'
7899   0: abcd:   0: abcd:
7900   1: abcd   1: abcd
7901    
 /(?'abc'\w+):\k<abc>{2}/  
     a:aaxyz  
  0: a:aa  
  1: a  
     ab:ababxyz  
  0: ab:abab  
  1: ab  
     ** Failers  
 No match  
     a:axyz  
 No match  
     ab:abxyz  
 No match  
   
7902  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
7903      adaa      adaa
7904   0: adaa   0: adaa
# Line 7612  No match Line 7925  No match
7925      bddd      bddd
7926  No match  No match
7927    
 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x  
     abd  
  0: abd  
  1: a  
     ce  
  0: ce  
   
7928  /(?(<bc))/  /(?(<bc))/
7929  Failed: malformed number or name after (?( at offset 6  Failed: malformed number or name after (?( at offset 6
7930    
# Line 7649  Failed: reference to non-existent subpat Line 7955  Failed: reference to non-existent subpat
7955   1: abcabc1Xabc2XabcX   1: abcabc1Xabc2XabcX
7956   2: abcabc1Xabc2XabcX   2: abcabc1Xabc2XabcX
7957    
 /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x  
     abcd  
  0: ab  
  1: <unset>  
  2: <unset>  
   
 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))  
   (?(DEFINE)  
   (?<NAME_PAT>[a-z]+)  
   (?<ADDRESS_PAT>\d+)  
   )/x  
     metcalfe 33  
  0: metcalfe 33  
  1: metcalfe  
  2: 33  
  3: <unset>  
  4: <unset>  
   
7958  /^(?(DEFINE) abc | xyz ) /x  /^(?(DEFINE) abc | xyz ) /x
7959  Failed: DEFINE group contains more than one branch at offset 22  Failed: DEFINE group contains more than one branch at offset 22
7960    
# Line 7844  Need char = 'P' Line 8132  Need char = 'P'
8132   0: PXP   0: PXP
8133   1: P   1: P
8134    
 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/  
     1.2.3.4  
  0: 1.2.3.4  
  1: <unset>  
  2: .4  
     131.111.10.206  
  0: 131.111.10.206  
  1: <unset>  
  2: .206  
     10.0.0.0  
  0: 10.0.0.0  
  1: <unset>  
  2: .0  
     ** Failers  
 No match  
     10.6  
 No match  
     455.3.4.5  
 No match  
   
 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/  
     1.2.3.4  
  0: 1.2.3.4  
  1: .4  
  2: <unset>  
     131.111.10.206  
  0: 131.111.10.206  
  1: .206  
  2: <unset>  
     10.0.0.0  
  0: 10.0.0.0  
  1: .0  
  2: <unset>  
     ** Failers  
 No match  
     10.6  
 No match  
     455.3.4.5  
 No match  
   
8135  /(?:a(?&abc)b)*(?<abc>x)/  /(?:a(?&abc)b)*(?<abc>x)/
8136      123axbaxbaxbx456      123axbaxbaxbx456
8137   0: axbaxbaxbx   0: axbaxbaxbx
# Line 7921  No match Line 8169  No match
8169     DEFabcABCXYZ     DEFabcABCXYZ
8170  No match  No match
8171    
 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/  
     ababababbbabZXXXX  
  0: ababababbbabZ  
  1: ab  
  2: b  
   
8172  /^(a)\g-2/  /^(a)\g-2/
8173  Failed: reference to non-existent subpattern at offset 7  Failed: reference to non-existent subpattern at offset 7
8174    
# Line 8182  Failed: reference to non-existent subpat Line 8424  Failed: reference to non-existent subpat
8424   0: Y!   0: Y!
8425   1: !   1: !
8426    
 /(foo)\Kbar/  
     foobar  
  0: bar  
  1: foo  
   
 /(foo)(\Kbar|baz)/  
     foobar  
  0: bar  
  1: foo  
  2: bar  
     foobaz  
  0: foobaz  
  1: foo  
  2: baz  
   
 /(foo\Kbar)baz/  
     foobarbaz  
  0: barbaz  
  1: foobar  
   
8427  /(?<A>tom|bon)-\k{A}/  /(?<A>tom|bon)-\k{A}/
8428      tom-tom      tom-tom
8429   0: tom-tom   0: tom-tom
# Line 8214  No match Line 8436  No match
8436      tom-bon      tom-bon
8437  No match  No match
8438    
 /(?<A>tom|bon)-\g{A}/  
     tom-tom  
  0: tom-tom  
  1: tom  
     bon-bon  
  0: bon-bon  
  1: bon  
   
8439  /\g{A/  /\g{A/
8440  Failed: syntax error in subpattern name (missing terminator) at offset 4  Failed: syntax error in subpattern name (missing terminator) at offset 4
8441    
# Line 8316  Failed: syntax error in subpattern name Line 8530  Failed: syntax error in subpattern name
8530   3: <unset>   3: <unset>
8531   4: x   4: x
8532    
 /(?|(abc)|(xyz))\1/  
     abcabc  
  0: abcabc  
  1: abc  
     xyzxyz  
  0: xyzxyz  
  1: xyz  
     ** Failers  
 No match  
     abcxyz  
 No match  
     xyzabc  
 No match  
   
 /(?|(abc)|(xyz))(?1)/  
     abcabc  
  0: abcabc  
  1: abc  
     xyzabc  
  0: xyzabc  
  1: xyz  
     ** Failers  
 No match  
     xyzxyz  
 No match  
   
 /\H\h\V\v/  
     X X\x0a  
  0: X X\x0a  
     X\x09X\x0b  
  0: X\x09X\x0b  
     ** Failers  
 No match  
     \xa0 X\x0a  
 No match  
   
 /\H*\h+\V?\v{3,4}/  
     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a  
  0: \x09 \xa0X\x0a\x0b\x0c\x0d  
     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a  
  0: \x09 \xa0\x0a\x0b\x0c\x0d  
     \x09\x20\xa0\x0a\x0b\x0c  
  0: \x09 \xa0\x0a\x0b\x0c  
     ** Failers  
 No match  
     \x09\x20\xa0\x0a\x0b  
 No match  
   
 /\H{3,4}/  
     XY  ABCDE  
  0: ABCD  
     XY  PQR ST  
  0: PQR  
   
 /.\h{3,4}./  
     XY  AB    PQRS  
  0: B    P  
   
 /\h*X\h?\H+Y\H?Z/  
     >XNNNYZ  
  0: XNNNYZ  
     >  X NYQZ  
  0:   X NYQZ  
     ** Failers  
 No match  
     >XYZ  
 No match  
     >  X NY Z  
 No match  
   
 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/  
     >XY\x0aZ\x0aA\x0bNN\x0c  
  0: XY\x0aZ\x0aA\x0bNN\x0c  
     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c  
  0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c  
   
8533  /[\h]/BZ  /[\h]/BZ
8534  ------------------------------------------------------------------  ------------------------------------------------------------------
8535          Bra          Bra
# Line 8688  Failed: missing terminating ] for charac Line 8826  Failed: missing terminating ] for charac
8826          End          End
8827  ------------------------------------------------------------------  ------------------------------------------------------------------
8828    
 /^a+(*FAIL)/  
     aaaaaa  
 No match  
   
 /a+b?c+(*FAIL)/  
     aaabccc  
 No match  
   
 /a+b?(*PRUNE)c+(*FAIL)/  
     aaabccc  
 No match  
   
 /a+b?(*COMMIT)c+(*FAIL)/  
     aaabccc  
 No match  
   
 /a+b?(*SKIP)c+(*FAIL)/  
     aaabcccaaabccc  
 No match  
   
 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/  
     aaaxxxxxx  
  0: aaaxxxxxx  
     aaa++++++  
  0: aaa  
     bbbxxxxx  
  0: bbbxxxxx  
     bbb+++++  
  0: bbb  
     cccxxxx  
  0: cccxxxx  
     ccc++++  
  0: ccc  
     dddddddd  
  0: ddd  
   
 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/  
     aaaxxxxxx  
  0: aaaxxxxxx  
  1: aaaxxxxxx  
     aaa++++++  
  0: aaa  
  1: aaa  
     bbbxxxxx  
  0: bbbxxxxx  
  1: bbbxxxxx  
     bbb+++++  
  0: bbb  
  1: bbb  
     cccxxxx  
  0: cccxxxx  
  1: cccxxxx  
     ccc++++  
  0: ccc  
  1: ccc  
     dddddddd  
  0: ddd  
  1: ddd  
   
 /a+b?(*THEN)c+(*FAIL)/  
     aaabccc  
 No match  
   
 /(A (A|B(*ACCEPT)|C) D)(E)/x  
     ABX  
  0: AB  
     AADE  
  0: AADE  
  1: AAD  
  2: A  
  3: E  
     ACDE  
  0: ACDE  
  1: ACD  
  2: C  
  3: E  
     ** Failers  
 No match  
     AD  
 No match  
   
8829  /^a+(*FAIL)/C  /^a+(*FAIL)/C
8830      aaaaaa      aaaaaa
8831  --->aaaaaa  --->aaaaaa
# Line 8897  No match Line 8954  No match
8954  +13   ^  ^      (*FAIL)  +13   ^  ^      (*FAIL)
8955  No match  No match
8956    
 /a(*PRUNE:XXX)b/  
 Failed: (*VERB) with an argument is not supported at offset 8  
   
8957  /a(*MARK)b/  /a(*MARK)b/
8958  Failed: (*VERB) not recognized at offset 7  Failed: (*MARK) must have an argument at offset 7
8959    
8960  /(?i:A{1,}\6666666666)/  /(?i:A{1,}\6666666666)/
8961  Failed: number is too big at offset 19  Failed: number is too big at offset 19
# Line 8990  No match Line 9044  No match
9044  No match  No match
9045      a\x85b      a\x85b
9046  No match  No match
9047    
9048    /(*ANY).*/g
9049        abc\r\ndef
9050     0: abc
9051     0:
9052     0: def
9053     0:
9054    
9055    /(*ANYCRLF).*/g
9056        abc\r\ndef
9057     0: abc
9058     0:
9059     0: def
9060     0:
9061    
9062    /(*CRLF).*/g
9063        abc\r\ndef
9064     0: abc
9065     0:
9066     0: def
9067     0:
9068    
9069  /a\Rb/I<bsr_anycrlf>  /a\Rb/I<bsr_anycrlf>
9070  Capturing subpattern count = 0  Capturing subpattern count = 0
# Line 9240  Failed: unknown POSIX class name at offs Line 9315  Failed: unknown POSIX class name at offs
9315  /[[:a\dz:]]/  /[[:a\dz:]]/
9316  Failed: unknown POSIX class name at offset 3  Failed: unknown POSIX class name at offset 3
9317    
 /^(?<name>a|b\g<name>c)/  
     aaaa  
  0: a  
  1: a  
     bacxxx  
  0: bac  
  1: bac  
     bbaccxxx  
  0: bbacc  
  1: bbacc  
     bbbacccxx  
  0: bbbaccc  
  1: bbbaccc  
   
 /^(?<name>a|b\g'name'c)/  
     aaaa  
  0: a  
  1: a  
     bacxxx  
  0: bac  
  1: bac  
     bbaccxxx  
  0: bbacc  
  1: bbacc  
     bbbacccxx  
  0: bbbaccc  
  1: bbbaccc  
   
 /^(a|b\g<1>c)/  
     aaaa  
  0: a  
  1: a  
     bacxxx  
  0: bac  
  1: bac  
     bbaccxxx  
  0: bbacc  
  1: bbacc  
     bbbacccxx  
  0: bbbaccc  
  1: bbbaccc  
   
 /^(a|b\g'1'c)/  
     aaaa  
  0: a  
  1: a  
     bacxxx  
  0: bac  
  1: bac  
     bbaccxxx  
  0: bbacc  
  1: bbacc  
     bbbacccxx  
  0: bbbaccc  
  1: bbbaccc  
   
 /^(a|b\g'-1'c)/  
     aaaa  
  0: a  
  1: a  
     bacxxx  
  0: bac  
  1: bac  
     bbaccxxx  
  0: bbacc  
  1: bbacc  
     bbbacccxx  
  0: bbbaccc  
  1: bbbaccc  
   
 /(^(a|b\g<-1>c))/  
     aaaa  
  0: a  
  1: a  
  2: a  
     bacxxx  
  0: bac  
  1: bac  
  2: bac  
     bbaccxxx  
  0: bbacc  
  1: bbacc  
  2: bbacc  
     bbbacccxx  
  0: bbbaccc  
  1: bbbaccc  
  2: bbbaccc  
   
9318  /(^(a|b\g<-1'c))/  /(^(a|b\g<-1'c))/
9319  Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15  Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15
9320    
 /(^(a|b\g{-1}))/  
     bacxxx  
 No match  
   
 /(?-i:\g<name>)(?i:(?<name>a))/  
     XaaX  
  0: aa  
  1: a  
     XAAX  
  0: AA  
  1: A  
   
 /(?i:\g<name>)(?-i:(?<name>a))/  
     XaaX  
  0: aa  
  1: a  
     ** Failers  
 No match  
     XAAX  
 No match  
   
 /(?-i:\g<+1>)(?i:(a))/  
     XaaX  
  0: aa  
  1: a  
     XAAX  
  0: AA  
  1: A  
   
 /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/  
   
 /(?<n>a|b|c)\g<n>*/  
    abc  
  0: abc  
  1: a  
    accccbbb  
  0: accccbbb  
  1: a  
   
9321  /^(?+1)(?<a>x|y){0}z/  /^(?+1)(?<a>x|y){0}z/
9322      xzxx      xzxx
9323   0: xz   0: xz
  1: <unset>  
9324      yzyy      yzyy
9325   0: yz   0: yz
  1: <unset>  
9326      ** Failers      ** Failers
9327  No match  No match
9328      xxz      xxz
# Line 9491  Capturing subpattern count = 1 Line 9437  Capturing subpattern count = 1
9437  No options  No options
9438  No first char  No first char
9439  No need char  No need char
9440    Subject length lower bound = 1
9441  Starting byte set: x y z  Starting byte set: x y z
9442    
9443  /(?(?=.*b)b|^)/CI  /(?(?=.*b)b|^)/CI
# Line 9604  No match Line 9551  No match
9551   +0        ^     x   +0        ^     x
9552   +0         ^    x   +0         ^    x
9553  No match  No match
9554    
9555    /(*NO_START_OPT)xyz/C
9556      abcxyz
9557    --->abcxyz
9558    +15 ^          x
9559    +15  ^         x
9560    +15   ^        x
9561    +15    ^       x
9562    +16    ^^      y
9563    +17    ^ ^     z
9564    +18    ^  ^
9565     0: xyz
9566    
9567    /xyz/CY
9568      abcxyz
9569    --->abcxyz
9570     +0 ^          x
9571     +0  ^         x
9572     +0   ^        x
9573     +0    ^       x
9574     +1    ^^      y
9575     +2    ^ ^     z
9576     +3    ^  ^
9577     0: xyz
9578    
9579  /^"((?(?=[a])[^"])|b)*"$/C  /^"((?(?=[a])[^"])|b)*"$/C
9580      "ab"      "ab"
# Line 9638  No match Line 9609  No match
9609   0: "ab"   0: "ab"
9610   1:   1:
9611    
 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/  
     XYabcdY  
  0: XYabcdY  
  1: a  
  2: b  
  3: c  
  4: d  
  5: Y  
   
9612  /^X(?5)(a)(?|(b)|(q))(c)(d)Y/  /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
9613  Failed: reference to non-existent subpattern at offset 5  Failed: reference to non-existent subpattern at offset 5
9614    
# Line 9659  Failed: reference to non-existent subpat Line 9621  Failed: reference to non-existent subpat
9621   4: d   4: d
9622   5: Y   5: Y
9623    
 /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/  
     XYabcdY  
  0: XYabcdY  
  1: a  
  2: b  
  3: <unset>  
  4: <unset>  
  5: c  
  6: d  
  7: Y  
   
 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/  
     XYabcdY  
  0: XYabcdY  
  1: a  
  2: b  
  3: <unset>  
  4: <unset>  
  5: c  
  6: d  
  7: Y  
   
 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/  
     XYabcdY  
  0: XYabcdY  
  1: a  
  2: b  
  3: <unset>  
  4: <unset>  
  5: c  
  6: d  
  7: Y  
   
9624  /Xa{2,4}b/  /Xa{2,4}b/
9625      X\P      X\P
9626  Partial match: X  Partial match: X
# Line 10048  Partial match: +ab Line 9977  Partial match: +ab
9977          End          End
9978  ------------------------------------------------------------------  ------------------------------------------------------------------
9979    
9980  /abc\K|def\K/g+  /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
9981      Xabcdefghi  ------------------------------------------------------------------
9982   0:          Bra
9983   0+ defghi          CBra 1
9984   0:          ab
9985   0+ ghi          Ket
9986            CBra 2
9987  /ab\Kc|de\Kf/g+          x
9988      Xabcdefghi          CBra 3
9989   0: c          y
9990   0+ defghi          Ket
9991   0: f          z
9992   0+ ghi          CBra 4
9993            cd
9994  /(?=C)/g+          Close 4
9995      ABCDECBA          Close 2
9996   0:          *ACCEPT
9997   0+ CDECBA          Ket
9998   0:          Ket
9999   0+ CBA          pq
10000            Ket
10001  /^abc\K/+          End
10002      abcdef  ------------------------------------------------------------------
  0:  
  0+ def  
     ** Failers  
 No match  
     defabcxyz  
 No match  
10003    
10004  /abc\K/+  /abc\K/+
10005      abcdef      abcdef
# Line 10148  No match Line 10071  No match
10071      xyz\N      xyz\N
10072  No match  No match
10073    
10074  / End of testinput2 /  /^(?<name>a|b\g<name>c)/
10075        aaaa
10076     0: a
10077     1: a
10078        bacxxx
10079     0: bac
10080     1: bac
10081        bbaccxxx
10082     0: bbacc
10083     1: bbacc
10084        bbbacccxx
10085     0: bbbaccc
10086     1: bbbaccc
10087    
10088    /^(?<name>a|b\g'name'c)/
10089        aaaa
10090     0: a
10091     1: a
10092        bacxxx
10093     0: bac
10094     1: bac
10095        bbaccxxx
10096     0: bbacc
10097     1: bbacc
10098        bbbacccxx
10099     0: bbbaccc
10100     1: bbbaccc
10101    
10102    /^(a|b\g<1>c)/
10103        aaaa
10104     0: a
10105     1: a
10106        bacxxx
10107     0: bac
10108     1: bac
10109        bbaccxxx
10110     0: bbacc
10111     1: bbacc
10112        bbbacccxx
10113     0: bbbaccc
10114     1: bbbaccc
10115    
10116    /^(a|b\g'1'c)/
10117        aaaa
10118     0: a
10119     1: a
10120        bacxxx
10121     0: bac
10122     1: bac
10123        bbaccxxx
10124     0: bbacc
10125     1: bbacc
10126        bbbacccxx
10127     0: bbbaccc
10128     1: bbbaccc
10129    
10130    /^(a|b\g'-1'c)/
10131        aaaa
10132     0: a
10133     1: a
10134        bacxxx
10135     0: bac
10136     1: bac
10137        bbaccxxx
10138     0: bbacc
10139     1: bbacc
10140        bbbacccxx
10141     0: bbbaccc
10142     1: bbbaccc
10143    
10144    /(^(a|b\g<-1>c))/
10145        aaaa
10146     0: a
10147     1: a
10148     2: a
10149        bacxxx
10150     0: bac
10151     1: bac
10152     2: bac
10153        bbaccxxx
10154     0: bbacc
10155     1: bbacc
10156     2: bbacc
10157        bbbacccxx
10158     0: bbbaccc
10159     1: bbbaccc
10160     2: bbbaccc
10161    
10162    /(?-i:\g<name>)(?i:(?<name>a))/
10163        XaaX
10164     0: aa
10165     1: a
10166        XAAX
10167     0: AA
10168     1: A
10169    
10170    /(?i:\g<name>)(?-i:(?<name>a))/
10171        XaaX
10172     0: aa
10173     1: a
10174        ** Failers
10175    No match
10176        XAAX
10177    No match
10178    
10179    /(?-i:\g<+1>)(?i:(a))/
10180        XaaX
10181     0: aa
10182     1: a
10183        XAAX
10184     0: AA
10185     1: A
10186    
10187    /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
10188    
10189    /(?<n>a|b|c)\g<n>*/
10190       abc
10191     0: abc
10192     1: a
10193       accccbbb
10194     0: accccbbb
10195     1: a
10196    
10197    /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
10198        XYabcdY
10199     0: XYabcdY
10200     1: a
10201     2: b
10202     3: <unset>
10203     4: <unset>
10204     5: c
10205     6: d
10206     7: Y
10207    
10208    /(?<=b(?1)|zzz)(a)/
10209        xbaax
10210     0: a
10211     1: a
10212        xzzzax
10213     0: a
10214     1: a
10215    
10216    /(a)(?<=b\1)/
10217    Failed: lookbehind assertion is not fixed length at offset 10
10218    
10219    /(a)(?<=b+(?1))/
10220    Failed: lookbehind assertion is not fixed length at offset 13
10221    
10222    /(a+)(?<=b(?1))/
10223    Failed: lookbehind assertion is not fixed length at offset 14
10224    
10225    /(a(?<=b(?1)))/
10226    Failed: lookbehind assertion is not fixed length at offset 13
10227    
10228    /(?<=b(?1))xyz/
10229    Failed: reference to non-existent subpattern at offset 8
10230    
10231    /(?<=b(?1))xyz(b+)pqrstuvew/
10232    Failed: lookbehind assertion is not fixed length at offset 26
10233    
10234    /(a|bc)\1/SI
10235    Capturing subpattern count = 1
10236    Max back reference = 1
10237    No options
10238    No first char
10239    No need char
10240    Subject length lower bound = 2
10241    Starting byte set: a b
10242    
10243    /(a|bc)\1{2,3}/SI
10244    Capturing subpattern count = 1
10245    Max back reference = 1
10246    No options
10247    No first char
10248    No need char
10249    Subject length lower bound = 3
10250    Starting byte set: a b
10251    
10252    /(a|bc)(?1)/SI
10253    Capturing subpattern count = 1
10254    No options
10255    No first char
10256    No need char
10257    Subject length lower bound = 2
10258    Starting byte set: a b
10259    
10260    /(a|b\1)(a|b\1)/SI
10261    Capturing subpattern count = 2
10262    Max back reference = 1
10263    No options
10264    No first char
10265    No need char
10266    Subject length lower bound = 2
10267    Starting byte set: a b
10268    
10269    /(a|b\1){2}/SI
10270    Capturing subpattern count = 1
10271    Max back reference = 1
10272    No options
10273    No first char
10274    No need char
10275    Subject length lower bound = 2
10276    Starting byte set: a b
10277    
10278    /(a|bbbb\1)(a|bbbb\1)/SI
10279    Capturing subpattern count = 2
10280    Max back reference = 1
10281    No options
10282    No first char
10283    No need char
10284    Subject length lower bound = 2
10285    Starting byte set: a b
10286    
10287    /(a|bbbb\1){2}/SI
10288    Capturing subpattern count = 1
10289    Max back reference = 1
10290    No options
10291    No first char
10292    No need char
10293    Subject length lower bound = 2
10294    Starting byte set: a b
10295    
10296    /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI
10297    Capturing subpattern count = 1
10298    Options: anchored
10299    No first char
10300    Need char = ':'
10301    Subject length lower bound = 22
10302    No set of starting bytes
10303    
10304    /  (?: [\040\t] |  \(
10305    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10306    \)  )*                          # optional leading comment
10307    (?:    (?:
10308    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10309    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10310    |
10311    " (?:                      # opening quote...
10312    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10313    |                     #    or
10314    \\ [^\x80-\xff]           #   Escaped something (something != CR)
10315    )* "  # closing quote
10316    )                    # initial word
10317    (?:  (?: [\040\t] |  \(
10318    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10319    \)  )*  \.  (?: [\040\t] |  \(
10320    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10321    \)  )*   (?:
10322    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10323    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10324    |
10325    " (?:                      # opening quote...
10326    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10327    |                     #    or
10328    \\ [^\x80-\xff]           #   Escaped something (something != CR)
10329    )* "  # closing quote
10330    )  )* # further okay, if led by a period
10331    (?: [\040\t] |  \(
10332    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10333    \)  )*  @  (?: [\040\t] |  \(
10334    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10335    \)  )*    (?:
10336    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10337    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10338    |   \[                         # [
10339    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10340    \]                        #           ]
10341    )                           # initial subdomain
10342    (?:                                  #
10343    (?: [\040\t] |  \(
10344    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10345    \)  )*  \.                        # if led by a period...
10346    (?: [\040\t] |  \(
10347    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10348    \)  )*   (?:
10349    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10350    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10351    |   \[                         # [
10352    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10353    \]                        #           ]
10354    )                     #   ...further okay
10355    )*
10356    # address
10357    |                     #  or
10358    (?:
10359    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10360    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10361    |
10362    " (?:                      # opening quote...
10363    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10364    |                     #    or
10365    \\ [^\x80-\xff]           #   Escaped something (something != CR)
10366    )* "  # closing quote
10367    )             # one word, optionally followed by....
10368    (?:
10369    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
10370    \(
10371    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10372    \)       |  # comments, or...
10373    
10374    " (?:                      # opening quote...
10375    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10376    |                     #    or
10377    \\ [^\x80-\xff]           #   Escaped something (something != CR)
10378    )* "  # closing quote
10379    # quoted strings
10380    )*
10381    <  (?: [\040\t] |  \(
10382    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10383    \)  )*                     # leading <
10384    (?:  @  (?: [\040\t] |  \(
10385    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10386    \)  )*    (?:
10387    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10388    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10389    |   \[                         # [
10390    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10391    \]                        #           ]
10392    )                           # initial subdomain
10393    (?:                                  #
10394    (?: [\040\t] |  \(
10395    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10396    \)  )*  \.                        # if led by a period...
10397    (?: [\040\t] |  \(
10398    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10399    \)  )*   (?:
10400    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10401    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10402    |   \[                         # [
10403    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10404    \]                        #           ]
10405    )                     #   ...further okay
10406    )*
10407    
10408    (?:  (?: [\040\t] |  \(
10409    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10410    \)  )*  ,  (?: [\040\t] |  \(
10411    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10412    \)  )*  @  (?: [\040\t] |  \(
10413    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10414    \)  )*    (?:
10415    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10416    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10417    |   \[                         # [
10418    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10419    \]                        #           ]
10420    )                           # initial subdomain
10421    (?:                                  #
10422    (?: [\040\t] |  \(
10423    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10424    \)  )*  \.                        # if led by a period...
10425    (?: [\040\t] |  \(
10426    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10427    \)  )*   (?:
10428    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10429    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10430    |   \[                         # [
10431    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10432    \]                        #           ]
10433    )                     #   ...further okay
10434    )*
10435    )* # further okay, if led by comma
10436    :                                # closing colon
10437    (?: [\040\t] |  \(
10438    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10439    \)  )*  )? #       optional route
10440    (?:
10441    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10442    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10443    |
10444    " (?:                      # opening quote...
10445    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10446    |                     #    or
10447    \\ [^\x80-\xff]           #   Escaped something (something != CR)
10448    )* "  # closing quote
10449    )                    # initial word
10450    (?:  (?: [\040\t] |  \(
10451    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10452    \)  )*  \.  (?: [\040\t] |  \(
10453    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10454    \)  )*   (?:
10455    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10456    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10457    |
10458    " (?:                      # opening quote...
10459    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10460    |                     #    or
10461    \\ [^\x80-\xff]           #   Escaped something (something != CR)
10462    )* "  # closing quote
10463    )  )* # further okay, if led by a period
10464    (?: [\040\t] |  \(
10465    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10466    \)  )*  @  (?: [\040\t] |  \(
10467    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10468    \)  )*    (?:
10469    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10470    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10471    |   \[                         # [
10472    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10473    \]                        #           ]
10474    )                           # initial subdomain
10475    (?:                                  #
10476    (?: [\040\t] |  \(
10477    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10478    \)  )*  \.                        # if led by a period...
10479    (?: [\040\t] |  \(
10480    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10481    \)  )*   (?:
10482    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10483    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10484    |   \[                         # [
10485    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10486    \]                        #           ]
10487    )                     #   ...further okay
10488    )*
10489    #       address spec
10490    (?: [\040\t] |  \(
10491    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10492    \)  )*  > #                  trailing >
10493    # name and address
10494    )  (?: [\040\t] |  \(
10495    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10496    \)  )*                       # optional trailing comment
10497    /xSI
10498    Capturing subpattern count = 0
10499    Contains explicit CR or LF match
10500    Options: extended
10501    No first char
10502    No need char
10503    Subject length lower bound = 3
10504    Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8
10505      9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e
10506      f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
10507    
10508    /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS
10509    Capturing subpattern count = 11
10510    Options: caseless dotall
10511    First char = '<'
10512    Need char = '>'
10513    Subject length lower bound = 47
10514    No set of starting bytes
10515    
10516    "(?>.*/)foo"SI
10517    Capturing subpattern count = 0
10518    No options
10519    First char at start or follows newline
10520    Need char = 'o'
10521    Subject length lower bound = 4
10522    No set of starting bytes
10523    
10524    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
10525    Capturing subpattern count = 0
10526    Options: extended
10527    No first char
10528    Need char = '-'
10529    Subject length lower bound = 8
10530    No set of starting bytes
10531    
10532    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
10533    Capturing subpattern count = 1
10534    Options: caseless
10535    No first char
10536    No need char
10537    Subject length lower bound = 1
10538    Starting byte set: A B C a b c
10539    
10540    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
10541    Capturing subpattern count = 0
10542    No options
10543    No first char
10544    Need char = 'b'
10545    Subject length lower bound = 41
10546    Starting byte set: c d
10547    
10548    /<a[\s]+href[\s]*=[\s]*          # find <a href=
10549     ([\"\'])?                       # find single or double quote
10550     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
10551                                     # quote, otherwise match up to next space
10552    /isxSI
10553    Capturing subpattern count = 3
10554    Max back reference = 1
10555    Options: caseless extended dotall
10556    First char = '<'
10557    Need char = '='
10558    Subject length lower bound = 9
10559    No set of starting bytes
10560    
10561    /^(?!:)                       # colon disallowed at start
10562      (?:                         # start of item
10563        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
10564        (?(1)0 | () ) )           # if null previously matched, fail; else null
10565        :                         # followed by colon
10566      ){1,7}                      # end item; 1-7 of them required
10567      [0-9a-f]{1,4} $             # final hex number at end of string
10568      (?(1)|.)                    # check that there was an empty component
10569      /xiIS
10570    Capturing subpattern count = 1
10571    Options: anchored caseless extended
10572    No first char
10573    Need char = ':'
10574    Subject length lower bound = 2
10575    No set of starting bytes
10576    
10577    /(?|(?<a>A)|(?<a>B))/I
10578    Capturing subpattern count = 1
10579    Named capturing subpatterns:
10580      a   1
10581      a   1
10582    No options
10583    No first char
10584    No need char
10585        AB\Ca
10586     0: A
10587     1: A
10588      C A (1) a
10589        BA\Ca
10590     0: B
10591     1: B
10592      C B (1) a
10593    
10594    /(?|(?<a>A)|(?<b>B))/
10595    Failed: different names for subpatterns of the same number are not allowed at offset 15
10596    
10597    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
10598        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
10599        (?('quote')[a-z]+|[0-9]+)/JIx
10600    Capturing subpattern count = 6
10601    Named capturing subpatterns:
10602      apostrophe   2
10603      apostrophe   5
10604      quote        1
10605      quote        4
10606      realquote    3
10607      realquote    6
10608    Options: extended dupnames
10609    No first char
10610    No need char
10611        a"aaaaa
10612     0: a"aaaaa
10613     1: "
10614     2: <unset>
10615     3: "
10616        b"aaaaa
10617     0: b"aaaaa
10618     1: <unset>
10619     2: <unset>
10620     3: <unset>
10621     4: "
10622     5: <unset>
10623     6: "
10624        ** Failers
10625    No match
10626        b"11111
10627    No match
10628        a"11111
10629    No match
10630    
10631    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
10632    ------------------------------------------------------------------
10633            Bra
10634            ^
10635            Bra
10636            CBra 1
10637            a
10638            Ket
10639            CBra 2
10640            b
10641            Ket
10642            CBra 3
10643            c
10644            Ket
10645            CBra 4
10646            d
10647            Ket
10648            Alt
10649            CBra 1
10650            e
10651            Ket
10652            Ket
10653            Cond
10654          4 Cond nref
10655            X
10656            Alt
10657            Y
10658            Ket
10659            Ket
10660            End
10661    ------------------------------------------------------------------
10662    Capturing subpattern count = 4
10663    Named capturing subpatterns:
10664      D   4
10665      D   1
10666    Options: anchored extended dupnames
10667    No first char
10668    No need char
10669        abcdX
10670     0: abcdX
10671     1: a
10672     2: b
10673     3: c
10674     4: d
10675        eX
10676     0: eX
10677     1: e
10678        ** Failers
10679    No match
10680        abcdY
10681    No match
10682        ey
10683    No match
10684    
10685    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
10686    ------------------------------------------------------------------
10687            Bra
10688            CBra 1
10689            a
10690            Ket
10691            CBra 2
10692            b
10693            Ket
10694            CBra 3
10695            c
10696            Ket
10697            CBra 4
10698            d
10699            Cond
10700            Cond nrecurse 1
10701            $
10702            Alt
10703            Once
10704            Recurse
10705            Ket
10706            Ket
10707            Ket
10708            Ket
10709            End
10710    ------------------------------------------------------------------
10711    Capturing subpattern count = 4
10712    Named capturing subpatterns:
10713      A   1
10714      A   4
10715    Options: extended dupnames
10716    First char = 'a'
10717    Need char = 'd'
10718        abcdd
10719     0: abcdd
10720     1: a
10721     2: b
10722     3: c
10723     4: dd
10724        ** Failers
10725    No match
10726        abcdde
10727    No match
10728    
10729    /abcd*/
10730        xxxxabcd\P
10731     0: abcd
10732        xxxxabcd\P\P
10733    Partial match: abcd
10734    
10735    /abcd*/i
10736        xxxxabcd\P
10737     0: abcd
10738        xxxxabcd\P\P
10739    Partial match: abcd
10740        XXXXABCD\P
10741     0: ABCD
10742        XXXXABCD\P\P
10743    Partial match: ABCD
10744    
10745    /abc\d*/
10746        xxxxabc1\P
10747     0: abc1
10748        xxxxabc1\P\P
10749    Partial match: abc1
10750    
10751    /(a)bc\1*/
10752        xxxxabca\P
10753     0: abca
10754     1: a
10755        xxxxabca\P\P
10756    Partial match: abca
10757    
10758    /abc[de]*/
10759        xxxxabcde\P
10760     0: abcde
10761        xxxxabcde\P\P
10762    Partial match: abcde
10763    
10764    /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
10765        broken and not behaving as specified in that it *does* bumpalong after
10766        hitting (*COMMIT). --/
10767    
10768    /(?1)(A(*COMMIT)|B)D/
10769        ABD
10770     0: ABD
10771     1: B
10772        XABD
10773     0: ABD
10774     1: B
10775        BAD
10776     0: BAD
10777     1: A
10778        ABXABD
10779     0: ABD
10780     1: B
10781        ** Failers
10782    No match
10783        ABX
10784    No match
10785        BAXBAD
10786    No match
10787    
10788    /(\3)(\1)(a)/<JS>
10789        cat
10790     0: a
10791     1:
10792     2:
10793     3: a
10794    
10795    /(\3)(\1)(a)/SI<JS>
10796    Capturing subpattern count = 3
10797    Max back reference = 3
10798    Options:
10799    No first char
10800    Need char = 'a'
10801    Subject length lower bound = 1
10802    No set of starting bytes
10803        cat
10804     0: a
10805     1:
10806     2:
10807     3: a
10808    
10809    /(\3)(\1)(a)/SI
10810    Capturing subpattern count = 3
10811    Max back reference = 3
10812    No options
10813    No first char
10814    Need char = 'a'
10815    Subject length lower bound = 3
10816    No set of starting bytes
10817        cat
10818    No match
10819    
10820    /i(?(DEFINE)(?<s>a))/SI
10821    Capturing subpattern count = 1
10822    Named capturing subpatterns:
10823      s   1
10824    No options
10825    First char = 'i'
10826    No need char
10827    Subject length lower bound = 1
10828    No set of starting bytes
10829        i
10830     0: i
10831    
10832    /()i(?(1)a)/SI
10833    Capturing subpattern count = 1
10834    No options
10835    No first char
10836    Need char = 'i'
10837    Subject length lower bound = 1
10838    Starting byte set: i
10839        ia
10840     0: ia
10841     1:
10842    
10843    /(?i)a(?-i)b|c/BZ
10844    ------------------------------------------------------------------
10845            Bra
10846         /i a
10847            b
10848            Alt
10849            c
10850            Ket
10851            End
10852    ------------------------------------------------------------------
10853        XabX
10854     0: ab
10855        XAbX
10856     0: Ab
10857        CcC
10858     0: c
10859        ** Failers
10860    No match
10861        XABX
10862    No match
10863    
10864    /(?i)a(?s)b|c/BZ
10865    ------------------------------------------------------------------
10866            Bra
10867         /i ab
10868            Alt
10869         /i c
10870            Ket
10871            End
10872    ------------------------------------------------------------------
10873    
10874    /(?i)a(?s-i)b|c/BZ
10875    ------------------------------------------------------------------
10876            Bra
10877         /i a
10878            b
10879            Alt
10880            c
10881            Ket
10882            End
10883    ------------------------------------------------------------------
10884    
10885    /^(ab(c\1)d|x){2}$/BZ
10886    ------------------------------------------------------------------
10887            Bra
10888            ^
10889            Once
10890            CBra 1
10891            ab
10892            CBra 2
10893            c
10894            \1
10895            Ket
10896            d
10897            Alt
10898            x
10899            Ket
10900            Ket
10901            Once
10902            CBra 1
10903            ab
10904            CBra 2
10905            c
10906            \1
10907            Ket
10908            d
10909            Alt
10910            x
10911            Ket
10912            Ket
10913            $
10914            Ket
10915            End
10916    ------------------------------------------------------------------
10917        xabcxd
10918     0: xabcxd
10919     1: abcxd
10920     2: cx
10921    
10922    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
10923    ------------------------------------------------------------------
10924            Bra
10925            ^
10926            Once
10927            Brazero
10928            Once
10929            Recurse
10930            KetRmax
10931            Ket
10932            Cond
10933            Cond def
10934            CBra 1
10935            Any
10936            Ket
10937            Ket
10938            $
10939            Ket
10940            End
10941    ------------------------------------------------------------------
10942    
10943    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
10944    ------------------------------------------------------------------
10945            Bra
10946            ^
10947            Brazero
10948            Once
10949            Recurse
10950            KetRmax
10951            Cond
10952            Cond def
10953            CBra 1
10954            Any
10955            Ket
10956            Ket
10957            $
10958            Ket
10959            End
10960    ------------------------------------------------------------------
10961    
10962    / -- The first four of these are not in the Perl >= 5.10 test because Perl
10963         documents that the use of \K in assertions is "not well defined". The
10964         last is here because Perl gives the match as "b" rather than "ab". I
10965         believe this to be a Perl bug. --/
10966    
10967    /(?=a\Kb)ab/
10968        ab
10969     0: b
10970    
10971    /(?!a\Kb)ac/
10972        ac
10973     0: ac
10974    
10975    /^abc(?<=b\Kc)d/
10976        abcd
10977     0: cd
10978    
10979    /^abc(?<!b\Kq)d/
10980        abcd
10981     0: abcd
10982    
10983    /(?>a\Kb)z|(ab)/
10984        ab
10985     0: ab
10986     1: ab
10987    
10988    /----------------------/
10989    
10990    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
10991    Failed: recursive call could loop indefinitely at offset 31
10992    
10993    /abc(*MARK:)pqr/
10994    Failed: (*MARK) must have an argument at offset 10
10995    
10996    /abc(*:)pqr/
10997    Failed: (*MARK) must have an argument at offset 6
10998    
10999    /abc(*FAIL:123)xyz/
11000    Failed: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) at offset 13
11001    
11002    /--- This should, and does, fail. In Perl, it does not, which I think is a
11003         bug because replacing the B in the pattern by (B|D) does make it fail. ---/
11004    
11005    /A(*COMMIT)B/+K
11006        ACABX
11007    No match
11008    
11009    /--- These should be different, but in Perl 5.11 are not, which I think
11010         is a bug in Perl. ---/
11011    
11012    /A(*THEN)B|A(*THEN)C/K
11013        AC
11014     0: AC
11015    
11016    /A(*PRUNE)B|A(*PRUNE)C/K
11017        AC
11018    No match
11019    
11020    /--- A whole lot of tests of verbs with arguments are here rather than in test
11021         11 because Perl doesn't seem to follow its specification entirely
11022         correctly. ---/
11023    
11024    /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is
11025         not clear how Perl defines "involved in the failure of the match". ---/
11026    
11027    /^(A(*THEN:A)B|C(*THEN:B)D)/K
11028        AB
11029     0: AB
11030     1: AB
11031        CD
11032     0: CD
11033     1: CD
11034        ** Failers
11035    No match
11036        AC
11037    No match
11038        CB
11039    No match, mark = B
11040    
11041    /--- Check the use of names for success and failure. PCRE doesn't show these
11042    names for success, though Perl does, contrary to its spec. ---/
11043    
11044    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
11045        AB
11046     0: AB
11047     1: AB
11048        CD
11049     0: CD
11050     1: CD
11051        ** Failers
11052    No match
11053        AC
11054    No match, mark = A
11055        CB
11056    No match, mark = B
11057    
11058    /--- An empty name does not pass back an empty string. It is the same as if no
11059    name were given. ---/
11060    
11061    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
11062        AB
11063     0: AB
11064     1: AB
11065        CD
11066     0: CD
11067     1: CD
11068    
11069    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
11070    
11071    /A(*PRUNE:A)B/K
11072        ACAB
11073     0: AB
11074    
11075    /(*MARK:A)(*PRUNE:B)(C|X)/KS
11076        C
11077     0: C
11078     1: C
11079    MK: A
11080        D
11081    No match
11082    
11083    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
11084        C
11085     0: C
11086     1: C
11087    MK: A
11088        D
11089    No match, mark = B
11090    
11091    /(*MARK:A)(*THEN:B)(C|X)/KS
11092        C
11093     0: C
11094     1: C
11095    MK: A
11096        D
11097    No match
11098    
11099    /(*MARK:A)(*THEN:B)(C|X)/KSS
11100        C
11101     0: C
11102     1: C
11103    MK: A
11104        D
11105    No match, mark = B
11106    
11107    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
11108    
11109    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
11110        AAAC
11111    No match
11112    
11113    /--- Same --/
11114    
11115    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
11116        AAAC
11117    No match
11118    
11119    /--- This should fail; the SKIP advances by one, but when we get to AC, the
11120         PRUNE kills it. ---/
11121    
11122    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
11123        AAAC
11124    No match
11125    
11126    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
11127        AAAC
11128    No match
11129    
11130    /--- This should fail, as a null name is the same as no name ---/
11131    
11132    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
11133        AAAC
11134    No match
11135    
11136    /--- This fails in PCRE, and I think that is in accordance with Perl's
11137         documentation, though in Perl it succeeds. ---/
11138    
11139    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
11140        AAAC
11141    No match
11142    
11143    /--- Mark names can be duplicated ---/
11144    
11145    /A(*:A)B|X(*:A)Y/K
11146        AABC
11147     0: AB
11148    MK: A
11149        XXYZ
11150     0: XY
11151    MK: A
11152    
11153    /^A(*:A)B|^X(*:A)Y/K
11154        ** Failers
11155    No match
11156        XAQQ
11157    No match, mark = A
11158    
11159    /--- A check on what happens after hitting a mark and them bumping along to
11160    something that does not even start. Perl reports tags after the failures here,
11161    though it does not when the individual letters are made into something
11162    more complicated. ---/
11163    
11164    /A(*:A)B|XX(*:B)Y/K
11165        AABC
11166     0: AB
11167    MK: A
11168        XXYZ
11169     0: XXY
11170    MK: B
11171        ** Failers
11172    No match
11173        XAQQ
11174    No match
11175        XAQQXZZ
11176    No match
11177        AXQQQ
11178    No match
11179        AXXQQQ
11180    No match
11181    
11182    /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
11183    optimizations defeat this. So does the PCRE optimization unless we disable it
11184    with \Y. ---/
11185    
11186    /(*COMMIT)ABC/
11187        ABCDEFG
11188     0: ABC
11189        ** Failers
11190    No match
11191        DEFGABC\Y
11192    No match
11193    
11194    /--- Repeat some tests with added studying. ---/
11195    
11196    /A(*COMMIT)B/+KS
11197        ACABX
11198    No match
11199    
11200    /A(*THEN)B|A(*THEN)C/KS
11201        AC
11202     0: AC
11203    
11204    /A(*PRUNE)B|A(*PRUNE)C/KS
11205        AC
11206    No match
11207    
11208    /^(A(*THEN:A)B|C(*THEN:B)D)/KS
11209        AB
11210     0: AB
11211     1: AB
11212        CD
11213     0: CD
11214     1: CD
11215        ** Failers
11216    No match
11217        AC
11218    No match
11219        CB
11220    No match, mark = B
11221    
11222    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS
11223        AB
11224     0: AB
11225     1: AB
11226        CD
11227     0: CD
11228     1: CD
11229        ** Failers
11230    No match
11231        AC
11232    No match, mark = A
11233        CB
11234    No match, mark = B
11235    
11236    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS
11237        AB
11238     0: AB
11239     1: AB
11240        CD
11241     0: CD
11242     1: CD
11243    
11244    /A(*PRUNE:A)B/KS
11245        ACAB
11246     0: AB
11247    
11248    /(*MARK:A)(*PRUNE:B)(C|X)/KS
11249        C
11250     0: C
11251     1: C
11252    MK: A
11253        D
11254    No match
11255    
11256    /(*MARK:A)(*THEN:B)(C|X)/KS
11257        C
11258     0: C
11259     1: C
11260    MK: A
11261        D
11262    No match
11263    
11264    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
11265        AAAC
11266    No match
11267    
11268    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
11269        AAAC
11270    No match
11271    
11272    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
11273        AAAC
11274    No match
11275    
11276    /A(*:A)A+(*SKIP)(B|Z) | AC/xKS
11277        AAAC
11278    No match
11279    
11280    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
11281        AAAC
11282    No match
11283    
11284    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
11285        AAAC
11286    No match
11287    
11288    /A(*:A)B|XX(*:B)Y/KS
11289        AABC
11290     0: AB
11291    MK: A
11292        XXYZ
11293     0: XXY
11294    MK: B
11295        ** Failers
11296    No match
11297        XAQQ
11298    No match
11299        XAQQXZZ
11300    No match
11301        AXQQQ
11302    No match
11303        AXXQQQ
11304    No match
11305    
11306    /(*COMMIT)ABC/
11307        ABCDEFG
11308     0: ABC
11309        ** Failers
11310    No match
11311        DEFGABC\Y
11312    No match
11313    
11314    /^(ab (c+(*THEN)cd) | xyz)/x
11315        abcccd
11316    No match
11317    
11318    /^(ab (c+(*PRUNE)cd) | xyz)/x
11319        abcccd
11320    No match
11321    
11322    /^(ab (c+(*FAIL)cd) | xyz)/x
11323        abcccd
11324    No match
11325    
11326    /--- Perl 5.11 gets some of these wrong ---/
11327    
11328    /(?>.(*ACCEPT))*?5/
11329        abcde
11330     0: a
11331    
11332    /(.(*ACCEPT))*?5/
11333        abcde
11334     0: a
11335     1: a
11336    
11337    /(.(*ACCEPT))5/
11338        abcde
11339     0: a
11340     1: a
11341    
11342    /(.(*ACCEPT))*5/
11343        abcde
11344     0: a
11345     1: a
11346    
11347    /A\NB./BZ
11348    ------------------------------------------------------------------
11349            Bra
11350            A
11351            Any
11352            B
11353            Any
11354            Ket
11355            End
11356    ------------------------------------------------------------------
11357        ACBD
11358     0: ACBD
11359        *** Failers
11360    No match
11361        A\nB
11362    No match
11363        ACB\n
11364    No match
11365    
11366    /A\NB./sBZ
11367    ------------------------------------------------------------------
11368            Bra
11369            A
11370            Any
11371            B
11372            AllAny
11373            Ket
11374            End
11375    ------------------------------------------------------------------
11376        ACBD
11377     0: ACBD
11378        ACB\n
11379     0: ACB\x0a
11380        *** Failers
11381    No match
11382        A\nB
11383    No match
11384    
11385    /A\NB/<crlf>
11386        A\nB
11387     0: A\x0aB
11388        A\rB
11389     0: A\x0dB
11390        ** Failers
11391    No match
11392        A\r\nB
11393    No match
11394    
11395    /\R+b/BZ
11396    ------------------------------------------------------------------
11397            Bra
11398            \R++
11399            b
11400            Ket
11401            End
11402    ------------------------------------------------------------------
11403    
11404    /\R+\n/BZ
11405    ------------------------------------------------------------------
11406            Bra
11407            \R+
11408            \x0a
11409            Ket
11410            End
11411    ------------------------------------------------------------------
11412    
11413    /\R+\d/BZ
11414    ------------------------------------------------------------------
11415            Bra
11416            \R++
11417            \d
11418            Ket
11419            End
11420    ------------------------------------------------------------------
11421    
11422    /\d*\R/BZ
11423    ------------------------------------------------------------------
11424            Bra
11425            \d*+
11426            \R
11427            Ket
11428            End
11429    ------------------------------------------------------------------
11430    
11431    /\s*\R/BZ
11432    ------------------------------------------------------------------
11433            Bra
11434            \s*+
11435            \R
11436            Ket
11437            End
11438    ------------------------------------------------------------------
11439    
11440    /-- Perl treats this one differently, not failing the second string. I believe
11441        that is a bug in Perl. --/
11442    
11443    /^((abc|abcx)(*THEN)y|abcd)/
11444        abcd
11445     0: abcd
11446     1: abcd
11447        *** Failers
11448    No match
11449        abcxy
11450    No match
11451    
11452    /(?<=abc)def/
11453        abc\P\P
11454    Partial match: abc
11455    
11456    /abc$/
11457        abc
11458     0: abc
11459        abc\P
11460     0: abc
11461        abc\P\P
11462    Partial match: abc
11463    
11464    /abc$/m
11465        abc
11466     0: abc
11467        abc\n
11468     0: abc
11469        abc\P\P
11470    Partial match: abc
11471        abc\n\P\P
11472     0: abc
11473        abc\P
11474     0: abc
11475        abc\n\P
11476     0: abc
11477    
11478    /abc\z/
11479        abc
11480     0: abc
11481        abc\P
11482     0: abc
11483        abc\P\P
11484    Partial match: abc
11485    
11486    /abc\Z/
11487        abc
11488     0: abc
11489        abc\P
11490     0: abc
11491        abc\P\P
11492    Partial match: abc
11493    
11494    /abc\b/
11495        abc
11496     0: abc
11497        abc\P
11498     0: abc
11499        abc\P\P
11500    Partial match: abc
11501    
11502    /abc\B/
11503        abc
11504    No match
11505        abc\P
11506    Partial match: abc
11507        abc\P\P
11508    Partial match: abc
11509    
11510    /.+/
11511        abc\>0
11512     0: abc
11513        abc\>1
11514     0: bc
11515        abc\>2
11516     0: c
11517        abc\>3
11518    No match
11519        abc\>4
11520    Error -24 (bad offset value)
11521        abc\>-4
11522    Error -24 (bad offset value)
11523    
11524    /^\cģ/
11525    Failed: \c must be followed by an ASCII character at offset 3
11526    
11527    /(?P<abn>(?P=abn)xxx)/BZ
11528    ------------------------------------------------------------------
11529            Bra
11530            Once
11531            CBra 1
11532            \1
11533            xxx
11534            Ket
11535            Ket
11536            Ket
11537            End
11538    ------------------------------------------------------------------
11539    
11540    /(a\1z)/BZ
11541    ------------------------------------------------------------------
11542            Bra
11543            Once
11544            CBra 1
11545            a
11546            \1
11547            z
11548            Ket
11549            Ket
11550            Ket
11551            End
11552    ------------------------------------------------------------------
11553    
11554    /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
11555    Failed: syntax error in subpattern name (missing terminator) at offset 29
11556    
11557    /(?P<abn>(?P=axn)xxx)/BZ
11558    Failed: reference to non-existent subpattern at offset 15
11559    
11560    /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
11561    ------------------------------------------------------------------
11562            Bra
11563            CBra 1
11564            \2
11565            xxx
11566            Ket
11567            CBra 2
11568            yy
11569            Ket
11570            Ket
11571            End
11572    ------------------------------------------------------------------
11573    
11574    /-- These tests are here because Perl gets the first one wrong. --/
11575    
11576    /(\R*)(.)/s
11577        \r\n
11578     0: \x0d
11579     1:
11580     2: \x0d
11581        \r\r\n\n\r
11582     0: \x0d\x0d\x0a\x0a\x0d
11583     1: \x0d\x0d\x0a\x0a
11584     2: \x0d
11585        \r\r\n\n\r\n
11586     0: \x0d\x0d\x0a\x0a\x0d
11587     1: \x0d\x0d\x0a\x0a
11588     2: \x0d
11589    
11590    /(\R)*(.)/s
11591        \r\n
11592     0: \x0d
11593     1: <unset>
11594     2: \x0d
11595        \r\r\n\n\r
11596     0: \x0d\x0d\x0a\x0a\x0d
11597     1: \x0a
11598     2: \x0d
11599        \r\r\n\n\r\n
11600     0: \x0d\x0d\x0a\x0a\x0d
11601     1: \x0a
11602     2: \x0d
11603    
11604    /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
11605        \r\n
11606     0: \x0d
11607     1:
11608     2: \x0d
11609        \r\r\n\n\r
11610     0: \x0d\x0d\x0a\x0a\x0d
11611     1: \x0d\x0d\x0a\x0a
11612     2: \x0d
11613        \r\r\n\n\r\n
11614     0: \x0d\x0d\x0a\x0a\x0d
11615     1: \x0d\x0d\x0a\x0a
11616     2: \x0d
11617    
11618    /-- --/
11619    
11620    /^abc$/BZ
11621    ------------------------------------------------------------------
11622            Bra
11623            ^
11624            abc
11625            $
11626            Ket
11627            End
11628    ------------------------------------------------------------------
11629    
11630    /^abc$/BZm
11631    ------------------------------------------------------------------
11632            Bra
11633         /m ^
11634            abc
11635         /m $
11636            Ket
11637            End
11638    ------------------------------------------------------------------
11639    
11640    /^(a)*+(\w)/S
11641        aaaaX
11642     0: aaaaX
11643     1: a
11644     2: X
11645        ** Failers
11646    No match
11647        aaaa
11648    No match
11649    
11650    /^(?:a)*+(\w)/S
11651        aaaaX
11652     0: aaaaX
11653     1: X
11654        ** Failers
11655    No match
11656        aaaa
11657    No match
11658    
11659    /(a)++1234/SDZ
11660    ------------------------------------------------------------------
11661            Bra
11662            CBraPos 1
11663            a
11664            KetRpos
11665            1234
11666            Ket
11667            End
11668    ------------------------------------------------------------------
11669    Capturing subpattern count = 1
11670    No options
11671    First char = 'a'
11672    Need char = '4'
11673    Subject length lower bound = 5
11674    No set of starting bytes
11675    
11676    /([abc])++1234/SI
11677    Capturing subpattern count = 1
11678    No options
11679    No first char
11680    Need char = '4'
11681    Subject length lower bound = 5
11682    Starting byte set: a b c
11683    
11684    /(?<=(abc)+)X/
11685    Failed: lookbehind assertion is not fixed length at offset 10
11686    
11687    /(^ab)/I
11688    Capturing subpattern count = 1
11689    Options: anchored
11690    No first char
11691    No need char
11692    
11693    /(^ab)++/I
11694    Capturing subpattern count = 1
11695    Options: anchored
11696    No first char
11697    No need char
11698    
11699    /(^ab|^)+/I
11700    Capturing subpattern count = 1
11701    Options: anchored
11702    No first char
11703    No need char
11704    
11705    /(^ab|^)++/I
11706    Capturing subpattern count = 1
11707    Options: anchored
11708    No first char
11709    No need char
11710    
11711    /(?:^ab)/I
11712    Capturing subpattern count = 0
11713    Options: anchored
11714    No first char
11715    No need char
11716    
11717    /(?:^ab)++/I
11718    Capturing subpattern count = 0
11719    Options: anchored
11720    No first char
11721    No need char
11722    
11723    /(?:^ab|^)+/I
11724    Capturing subpattern count = 0
11725    Options: anchored
11726    No first char
11727    No need char
11728    
11729    /(?:^ab|^)++/I
11730    Capturing subpattern count = 0
11731    Options: anchored
11732    No first char
11733    No need char
11734    
11735    /(.*ab)/I
11736    Capturing subpattern count = 1
11737    No options
11738    First char at start or follows newline
11739    Need char = 'b'
11740    
11741    /(.*ab)++/I
11742    Capturing subpattern count = 1
11743    No options
11744    First char at start or follows newline
11745    Need char = 'b'
11746    
11747    /(.*ab|.*)+/I
11748    Capturing subpattern count = 1
11749    No options
11750    First char at start or follows newline
11751    No need char
11752    
11753    /(.*ab|.*)++/I
11754    Capturing subpattern count = 1
11755    No options
11756    First char at start or follows newline
11757    No need char
11758    
11759    /(?:.*ab)/I
11760    Capturing subpattern count = 0
11761    No options
11762    First char at start or follows newline
11763    Need char = 'b'
11764    
11765    /(?:.*ab)++/I
11766    Capturing subpattern count = 0
11767    No options
11768    First char at start or follows newline
11769    Need char = 'b'
11770    
11771    /(?:.*ab|.*)+/I
11772    Capturing subpattern count = 0
11773    No options
11774    First char at start or follows newline
11775    No need char
11776    
11777    /(?:.*ab|.*)++/I
11778    Capturing subpattern count = 0
11779    No options
11780    First char at start or follows newline
11781    No need char
11782    
11783    /(?=a)[bcd]/I
11784    Capturing subpattern count = 0
11785    No options
11786    First char = 'a'
11787    No need char
11788    
11789    /((?=a))[bcd]/I
11790    Capturing subpattern count = 1
11791    No options
11792    First char = 'a'
11793    No need char
11794    
11795    /((?=a))+[bcd]/I
11796    Capturing subpattern count = 1
11797    No options
11798    First char = 'a'
11799    No need char
11800    
11801    /((?=a))++[bcd]/I
11802    Capturing subpattern count = 1
11803    No options
11804    First char = 'a'
11805    No need char
11806    
11807    /(?=a+)[bcd]/iI
11808    Capturing subpattern count = 0
11809    Options: caseless
11810    First char = 'a' (caseless)
11811    No need char
11812    
11813    /(?=a+?)[bcd]/iI
11814    Capturing subpattern count = 0
11815    Options: caseless
11816    First char = 'a' (caseless)
11817    No need char
11818    
11819    /(?=a++)[bcd]/iI
11820    Capturing subpattern count = 0
11821    Options: caseless
11822    First char = 'a' (caseless)
11823    No need char
11824    
11825    /(?=a{3})[bcd]/iI
11826    Capturing subpattern count = 0
11827    Options: caseless
11828    First char = 'a' (caseless)
11829    Need char = 'a' (caseless)
11830    
11831    /(abc)\1+/S
11832    
11833    /-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
11834    
11835    /(?1)(?:(b(*ACCEPT))){0}/
11836        b
11837     0: b
11838    
11839    /(?1)(?:(b(*ACCEPT))){0}c/
11840        bc
11841     0: bc
11842        ** Failers
11843    No match
11844        b
11845    No match
11846    
11847    /(?1)(?:((*ACCEPT))){0}c/
11848        c
11849     0: c
11850        c\N
11851     0: c
11852    
11853    /^.*?(?(?=a)a|b(*THEN)c)/
11854        ba
11855     0: ba
11856    
11857    /^.*?(?(?=a)a|bc)/
11858        ba
11859     0: ba
11860    
11861    /-- --/
11862    
11863    /-- These studied versions are here because they are not Perl-compatible; the
11864        studying means the mark is not seen. --/
11865    
11866    /(*MARK:A)(*SKIP:B)(C|X)/KS
11867        C
11868     0: C
11869     1: C
11870    MK: A
11871        D
11872    No match
11873    
11874    /(*:A)A+(*SKIP:A)(B|Z)/KS
11875        AAAC
11876    No match
11877    
11878    /-- --/
11879    
11880    /-- End of testinput2 --/

Legend:
Removed from v.442  
changed lines
  Added in v.612

  ViewVC Help
Powered by ViewVC 1.1.5