• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
13Capturing subpattern count = 1
14No options
15No first char
16No need char
17
18/abc/I
19Capturing subpattern count = 0
20No options
21First char = 'a'
22Need char = 'c'
23    abc
24 0: abc
25    defabc
26 0: abc
27    \Aabc
28 0: abc
29    *** Failers
30No match
31    \Adefabc
32No match
33    ABC
34No match
35
36/^abc/I
37Capturing subpattern count = 0
38Options: anchored
39No first char
40No need char
41    abc
42 0: abc
43    \Aabc
44 0: abc
45    *** Failers
46No match
47    defabc
48No match
49    \Adefabc
50No match
51
52/a+bc/I
53Capturing subpattern count = 0
54No options
55First char = 'a'
56Need char = 'c'
57
58/a*bc/I
59Capturing subpattern count = 0
60No options
61No first char
62Need char = 'c'
63
64/a{3}bc/I
65Capturing subpattern count = 0
66No options
67First char = 'a'
68Need char = 'c'
69
70/(abc|a+z)/I
71Capturing subpattern count = 1
72No options
73First char = 'a'
74No need char
75
76/^abc$/I
77Capturing subpattern count = 0
78Options: anchored
79No first char
80No need char
81    abc
82 0: abc
83    *** Failers
84No match
85    def\nabc
86No match
87
88/ab\idef/X
89Failed: unrecognized character follows \ at offset 3
90
91/(?X)ab\idef/X
92Failed: unrecognized character follows \ at offset 7
93
94/x{5,4}/
95Failed: numbers out of order in {} quantifier at offset 5
96
97/z{65536}/
98Failed: number too big in {} quantifier at offset 7
99
100/[abcd/
101Failed: missing terminating ] for character class at offset 5
102
103/(?X)[\B]/
104Failed: invalid escape sequence in character class at offset 6
105
106/(?X)[\R]/
107Failed: invalid escape sequence in character class at offset 6
108
109/(?X)[\X]/
110Failed: 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]/
137Failed: range out of order in character class at offset 3
138
139/^*/
140Failed: nothing to repeat at offset 1
141
142/(abc/
143Failed: missing ) at offset 4
144
145/(?# abc/
146Failed: missing ) after comment at offset 7
147
148/(?z)abc/
149Failed: unrecognized character after (? or (?- at offset 2
150
151/.*b/I
152Capturing subpattern count = 0
153No options
154First char at start or follows newline
155Need char = 'b'
156
157/.*?b/I
158Capturing subpattern count = 0
159No options
160First char at start or follows newline
161Need char = 'b'
162
163/cat|dog|elephant/I
164Capturing subpattern count = 0
165No options
166No first char
167No need char
168    this sentence eventually mentions a cat
169 0: cat
170    this sentences rambles on and on for a while and then reaches elephant
171 0: elephant
172
173/cat|dog|elephant/IS
174Capturing subpattern count = 0
175No options
176No first char
177No need char
178Subject length lower bound = 3
179Starting byte set: c d e
180    this sentence eventually mentions a cat
181 0: cat
182    this sentences rambles on and on for a while and then reaches elephant
183 0: elephant
184
185/cat|dog|elephant/IiS
186Capturing subpattern count = 0
187Options: caseless
188No first char
189No need char
190Subject length lower bound = 3
191Starting byte set: C D E c d e
192    this sentence eventually mentions a CAT cat
193 0: CAT
194    this sentences rambles on and on for a while to elephant ElePhant
195 0: elephant
196
197/a|[bcd]/IS
198Capturing subpattern count = 0
199No options
200No first char
201No need char
202Subject length lower bound = 1
203Starting byte set: a b c d
204
205/(a|[^\dZ])/IS
206Capturing subpattern count = 1
207No options
208No first char
209No need char
210Subject length lower bound = 1
211Starting 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
213  \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / : ; < = >
214  ? @ 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 [ \ ] ^ _ ` a b c d
215  e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83
216  \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92
217  \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1
218  \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0
219  \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf
220  \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce
221  \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd
222  \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec
223  \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb
224  \xfc \xfd \xfe \xff
225
226/(a|b)*[\s]/IS
227Capturing subpattern count = 1
228No options
229No first char
230No need char
231Subject length lower bound = 1
232Starting byte set: \x09 \x0a \x0c \x0d \x20 a b
233
234/(ab\2)/
235Failed: reference to non-existent subpattern at offset 6
236
237/{4,5}abc/
238Failed: nothing to repeat at offset 4
239
240/(a)(b)(c)\2/I
241Capturing subpattern count = 3
242Max back reference = 2
243No options
244First char = 'a'
245Need char = 'c'
246    abcb
247 0: abcb
248 1: a
249 2: b
250 3: c
251    \O0abcb
252Matched, but too many substrings
253    \O3abcb
254Matched, but too many substrings
255 0: abcb
256    \O6abcb
257Matched, but too many substrings
258 0: abcb
259 1: a
260    \O9abcb
261Matched, but too many substrings
262 0: abcb
263 1: a
264 2: b
265    \O12abcb
266 0: abcb
267 1: a
268 2: b
269 3: c
270
271/(a)bc|(a)(b)\2/I
272Capturing subpattern count = 3
273Max back reference = 2
274No options
275First char = 'a'
276No need char
277    abc
278 0: abc
279 1: a
280    \O0abc
281Matched, but too many substrings
282    \O3abc
283Matched, but too many substrings
284 0: abc
285    \O6abc
286 0: abc
287 1: a
288    aba
289 0: aba
290 1: <unset>
291 2: a
292 3: b
293    \O0aba
294Matched, but too many substrings
295    \O3aba
296Matched, but too many substrings
297 0: aba
298    \O6aba
299Matched, but too many substrings
300 0: aba
301 1: <unset>
302    \O9aba
303Matched, but too many substrings
304 0: aba
305 1: <unset>
306 2: a
307    \O12aba
308 0: aba
309 1: <unset>
310 2: a
311 3: b
312
313/abc$/IE
314Capturing subpattern count = 0
315Options: dollar_endonly
316First char = 'a'
317Need char = 'c'
318    abc
319 0: abc
320    *** Failers
321No match
322    abc\n
323No match
324    abc\ndef
325No match
326
327/(a)(b)(c)(d)(e)\6/
328Failed: reference to non-existent subpattern at offset 17
329
330/the quick brown fox/I
331Capturing subpattern count = 0
332No options
333First char = 't'
334Need char = 'x'
335    the quick brown fox
336 0: the quick brown fox
337    this is a line with the quick brown fox
338 0: the quick brown fox
339
340/the quick brown fox/IA
341Capturing subpattern count = 0
342Options: anchored
343No first char
344No need char
345    the quick brown fox
346 0: the quick brown fox
347    *** Failers
348No match
349    this is a line with the quick brown fox
350No match
351
352/ab(?z)cd/
353Failed: unrecognized character after (? or (?- at offset 4
354
355/^abc|def/I
356Capturing subpattern count = 0
357No options
358No first char
359No need char
360    abcdef
361 0: abc
362    abcdef\B
363 0: def
364
365/.*((abc)$|(def))/I
366Capturing subpattern count = 3
367No options
368First char at start or follows newline
369No need char
370    defabc
371 0: defabc
372 1: abc
373 2: abc
374    \Zdefabc
375 0: def
376 1: def
377 2: <unset>
378 3: def
379
380/abc/P
381    abc
382 0: abc
383    *** Failers
384No match: POSIX code 17: match failed
385
386/^abc|def/P
387    abcdef
388 0: abc
389    abcdef\B
390 0: def
391
392/.*((abc)$|(def))/P
393    defabc
394 0: defabc
395 1: abc
396 2: abc
397    \Zdefabc
398 0: def
399 1: def
400 3: def
401
402/the quick brown fox/P
403    the quick brown fox
404 0: the quick brown fox
405    *** Failers
406No match: POSIX code 17: match failed
407    The Quick Brown Fox
408No match: POSIX code 17: match failed
409
410/the quick brown fox/Pi
411    the quick brown fox
412 0: the quick brown fox
413    The Quick Brown Fox
414 0: The Quick Brown Fox
415
416/abc.def/P
417    *** Failers
418No match: POSIX code 17: match failed
419    abc\ndef
420No match: POSIX code 17: match failed
421
422/abc$/P
423    abc
424 0: abc
425    abc\n
426 0: abc
427
428/(abc)\2/P
429Failed: POSIX code 15: bad back reference at offset 7
430
431/(abc\1)/P
432    abc
433No match: POSIX code 17: match failed
434
435/)/
436Failed: unmatched parentheses at offset 0
437
438/a[]b/
439Failed: missing terminating ] for character class at offset 4
440
441/[^aeiou ]{3,}/I
442Capturing subpattern count = 0
443No options
444No first char
445No need char
446    co-processors, and for
447 0: -pr
448
449/<.*>/I
450Capturing subpattern count = 0
451No options
452First char = '<'
453Need char = '>'
454    abc<def>ghi<klm>nop
455 0: <def>ghi<klm>
456
457/<.*?>/I
458Capturing subpattern count = 0
459No options
460First char = '<'
461Need char = '>'
462    abc<def>ghi<klm>nop
463 0: <def>
464
465/<.*>/IU
466Capturing subpattern count = 0
467Options: ungreedy
468First char = '<'
469Need char = '>'
470    abc<def>ghi<klm>nop
471 0: <def>
472
473/(?U)<.*>/I
474Capturing subpattern count = 0
475Options: ungreedy
476First char = '<'
477Need char = '>'
478    abc<def>ghi<klm>nop
479 0: <def>
480
481/<.*?>/IU
482Capturing subpattern count = 0
483Options: ungreedy
484First char = '<'
485Need char = '>'
486    abc<def>ghi<klm>nop
487 0: <def>ghi<klm>
488
489/={3,}/IU
490Capturing subpattern count = 0
491Options: ungreedy
492First char = '='
493Need char = '='
494    abc========def
495 0: ===
496
497/(?U)={3,}?/I
498Capturing subpattern count = 0
499Options: ungreedy
500First char = '='
501Need char = '='
502    abc========def
503 0: ========
504
505/(?<!bar|cattle)foo/I
506Capturing subpattern count = 0
507No options
508First char = 'f'
509Need char = 'o'
510    foo
511 0: foo
512    catfoo
513 0: foo
514    *** Failers
515No match
516    the barfoo
517No match
518    and cattlefoo
519No match
520
521/(?<=a+)b/
522Failed: lookbehind assertion is not fixed length at offset 6
523
524/(?<=aaa|b{0,3})b/
525Failed: lookbehind assertion is not fixed length at offset 14
526
527/(?<!(foo)a\1)bar/
528Failed: lookbehind assertion is not fixed length at offset 12
529
530/(?i)abc/I
531Capturing subpattern count = 0
532Options: caseless
533First char = 'a' (caseless)
534Need char = 'c' (caseless)
535
536/(a|(?m)a)/I
537Capturing subpattern count = 1
538No options
539First char = 'a'
540No need char
541
542/(?i)^1234/I
543Capturing subpattern count = 0
544Options: anchored caseless
545No first char
546No need char
547
548/(^b|(?i)^d)/I
549Capturing subpattern count = 1
550Options: anchored
551No first char
552No need char
553
554/(?s).*/I
555Capturing subpattern count = 0
556Options: anchored dotall
557No first char
558No need char
559
560/[abcd]/IS
561Capturing subpattern count = 0
562No options
563No first char
564No need char
565Subject length lower bound = 1
566Starting byte set: a b c d
567
568/(?i)[abcd]/IS
569Capturing subpattern count = 0
570Options: caseless
571No first char
572No need char
573Subject length lower bound = 1
574Starting byte set: A B C D a b c d
575
576/(?m)[xy]|(b|c)/IS
577Capturing subpattern count = 1
578Options: multiline
579No first char
580No need char
581Subject length lower bound = 1
582Starting byte set: b c x y
583
584/(^a|^b)/Im
585Capturing subpattern count = 1
586Options: multiline
587First char at start or follows newline
588No need char
589
590/(?i)(^a|^b)/Im
591Capturing subpattern count = 1
592Options: caseless multiline
593First char at start or follows newline
594No need char
595
596/(a)(?(1)a|b|c)/
597Failed: conditional group contains more than two branches at offset 13
598
599/(?(?=a)a|b|c)/
600Failed: conditional group contains more than two branches at offset 12
601
602/(?(1a)/
603Failed: missing ) at offset 6
604
605/(?(1a))/
606Failed: reference to non-existent subpattern at offset 6
607
608/(?(?i))/
609Failed: assertion expected after (?( at offset 3
610
611/(?(abc))/
612Failed: reference to non-existent subpattern at offset 7
613
614/(?(?<ab))/
615Failed: syntax error in subpattern name (missing terminator) at offset 7
616
617/((?s)blah)\s+\1/I
618Capturing subpattern count = 1
619Max back reference = 1
620No options
621First char = 'b'
622Need char = 'h'
623
624/((?i)blah)\s+\1/I
625Capturing subpattern count = 1
626Max back reference = 1
627No options
628First char = 'b' (caseless)
629Need char = 'h' (caseless)
630
631/((?i)b)/IDZS
632------------------------------------------------------------------
633        Bra
634        CBra 1
635     01 Opt
636     NC b
637        Ket
638     00 Opt
639        Ket
640        End
641------------------------------------------------------------------
642Capturing subpattern count = 1
643No options
644First char = 'b' (caseless)
645No need char
646Subject length lower bound = 1
647No set of starting bytes
648
649/(a*b|(?i:c*(?-i)d))/IS
650Capturing subpattern count = 1
651No options
652No first char
653No need char
654Subject length lower bound = 1
655Starting byte set: C a b c d
656
657/a$/I
658Capturing subpattern count = 0
659No options
660First char = 'a'
661No need char
662    a
663 0: a
664    a\n
665 0: a
666    *** Failers
667No match
668    \Za
669No match
670    \Za\n
671No match
672
673/a$/Im
674Capturing subpattern count = 0
675Options: multiline
676First char = 'a'
677No need char
678    a
679 0: a
680    a\n
681 0: a
682    \Za\n
683 0: a
684    *** Failers
685No match
686    \Za
687No match
688
689/\Aabc/Im
690Capturing subpattern count = 0
691Options: anchored multiline
692No first char
693No need char
694
695/^abc/Im
696Capturing subpattern count = 0
697Options: multiline
698First char at start or follows newline
699Need char = 'c'
700
701/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
702Capturing subpattern count = 5
703Options: anchored
704No first char
705No need char
706  aaaaabbbbbcccccdef
707 0: aaaaabbbbbcccccdef
708 1: aaaaabbbbbcccccdef
709 2: aaaaa
710 3: b
711 4: bbbbccccc
712 5: def
713
714/(?<=foo)[ab]/IS
715Capturing subpattern count = 0
716No options
717No first char
718No need char
719Subject length lower bound = 1
720Starting byte set: a b
721
722/(?<!foo)(alpha|omega)/IS
723Capturing subpattern count = 1
724No options
725No first char
726Need char = 'a'
727Subject length lower bound = 5
728Starting byte set: a o
729
730/(?!alphabet)[ab]/IS
731Capturing subpattern count = 0
732No options
733No first char
734No need char
735Subject length lower bound = 1
736Starting byte set: a b
737
738/(?<=foo\n)^bar/Im
739Capturing subpattern count = 0
740Contains explicit CR or LF match
741Options: multiline
742No first char
743Need char = 'r'
744    foo\nbarbar
745 0: bar
746    ***Failers
747No match
748    rhubarb
749No match
750    barbell
751No match
752    abc\nbarton
753No match
754
755/^(?<=foo\n)bar/Im
756Capturing subpattern count = 0
757Contains explicit CR or LF match
758Options: multiline
759First char at start or follows newline
760Need char = 'r'
761    foo\nbarbar
762 0: bar
763    ***Failers
764No match
765    rhubarb
766No match
767    barbell
768No match
769    abc\nbarton
770No match
771
772/(?>^abc)/Im
773Capturing subpattern count = 0
774Options: multiline
775First char at start or follows newline
776Need char = 'c'
777    abc
778 0: abc
779    def\nabc
780 0: abc
781    *** Failers
782No match
783    defabc
784No match
785
786/(?<=ab(c+)d)ef/
787Failed: lookbehind assertion is not fixed length at offset 11
788
789/(?<=ab(?<=c+)d)ef/
790Failed: lookbehind assertion is not fixed length at offset 12
791
792/(?<=ab(c|de)f)g/
793Failed: lookbehind assertion is not fixed length at offset 13
794
795/The next three are in testinput2 because they have variable length branches/
796
797/(?<=bullock|donkey)-cart/I
798Capturing subpattern count = 0
799No options
800First char = '-'
801Need char = 't'
802    the bullock-cart
803 0: -cart
804    a donkey-cart race
805 0: -cart
806    *** Failers
807No match
808    cart
809No match
810    horse-and-cart
811No match
812
813/(?<=ab(?i)x|y|z)/I
814Capturing subpattern count = 0
815No options
816No first char
817No need char
818
819/(?>.*)(?<=(abcd)|(xyz))/I
820Capturing subpattern count = 2
821No options
822First char at start or follows newline
823No need char
824    alphabetabcd
825 0: alphabetabcd
826 1: abcd
827    endingxyz
828 0: endingxyz
829 1: <unset>
830 2: xyz
831
832/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
833Capturing subpattern count = 0
834No options
835First char = 'Z'
836Need char = 'Z'
837    abxyZZ
838 0: ZZ
839    abXyZZ
840 0: ZZ
841    ZZZ
842 0: ZZ
843    zZZ
844 0: ZZ
845    bZZ
846 0: ZZ
847    BZZ
848 0: ZZ
849    *** Failers
850No match
851    ZZ
852No match
853    abXYZZ
854No match
855    zzz
856No match
857    bzz
858No match
859
860/(?<!(foo)a)bar/I
861Capturing subpattern count = 1
862No options
863First char = 'b'
864Need char = 'r'
865    bar
866 0: bar
867    foobbar
868 0: bar
869    *** Failers
870No match
871    fooabar
872No match
873
874/This one is here because Perl 5.005_02 doesn't fail it/I
875Capturing subpattern count = 0
876No options
877First char = 'T'
878Need char = 't'
879
880/^(a)?(?(1)a|b)+$/I
881Capturing subpattern count = 1
882Options: anchored
883No first char
884No need char
885    *** Failers
886No match
887    a
888No match
889
890/This one is here because Perl behaves differently; see also the following/I
891Capturing subpattern count = 0
892No options
893First char = 'T'
894Need char = 'g'
895
896/^(a\1?){4}$/I
897Capturing subpattern count = 1
898Max back reference = 1
899Options: anchored
900No first char
901No need char
902    aaaa
903No match
904    aaaaaa
905No match
906
907/Perl does not fail these two for the final subjects. Neither did PCRE until/
908/release 8.01. The problem is in backtracking into a subpattern that contains/
909No match
910/a recursive reference to itself. PCRE has now made these into atomic patterns./
911No match
912
913/^(xa|=?\1a){2}$/
914    xa=xaa
915 0: xa=xaa
916 1: =xaa
917    ** Failers
918No match
919    xa=xaaa
920No match
921
922/^(xa|=?\1a)+$/
923    xa=xaa
924 0: xa=xaa
925 1: =xaa
926    ** Failers
927No match
928    xa=xaaa
929No match
930
931/These are syntax tests from Perl 5.005/I
932Capturing subpattern count = 0
933No options
934First char = 'T'
935Need char = '5'
936
937/a[b-a]/
938Failed: range out of order in character class at offset 4
939
940/a[]b/
941Failed: missing terminating ] for character class at offset 4
942
943/a[/
944Failed: missing terminating ] for character class at offset 2
945
946/*a/
947Failed: nothing to repeat at offset 0
948
949/(*)b/
950Failed: nothing to repeat at offset 1
951
952/abc)/
953Failed: unmatched parentheses at offset 3
954
955/(abc/
956Failed: missing ) at offset 4
957
958/a**/
959Failed: nothing to repeat at offset 2
960
961/)(/
962Failed: unmatched parentheses at offset 0
963
964/\1/
965Failed: reference to non-existent subpattern at offset 2
966
967/\2/
968Failed: reference to non-existent subpattern at offset 2
969
970/(a)|\2/
971Failed: reference to non-existent subpattern at offset 6
972
973/a[b-a]/Ii
974Failed: range out of order in character class at offset 4
975
976/a[]b/Ii
977Failed: missing terminating ] for character class at offset 4
978
979/a[/Ii
980Failed: missing terminating ] for character class at offset 2
981
982/*a/Ii
983Failed: nothing to repeat at offset 0
984
985/(*)b/Ii
986Failed: nothing to repeat at offset 1
987
988/abc)/Ii
989Failed: unmatched parentheses at offset 3
990
991/(abc/Ii
992Failed: missing ) at offset 4
993
994/a**/Ii
995Failed: nothing to repeat at offset 2
996
997/)(/Ii
998Failed: unmatched parentheses at offset 0
999
1000/:(?:/
1001Failed: missing ) at offset 4
1002
1003/(?<%)b/
1004Failed: unrecognized character after (?< at offset 3
1005
1006/a(?{)b/
1007Failed: unrecognized character after (? or (?- at offset 3
1008
1009/a(?{{})b/
1010Failed: unrecognized character after (? or (?- at offset 3
1011
1012/a(?{}})b/
1013Failed: unrecognized character after (? or (?- at offset 3
1014
1015/a(?{"{"})b/
1016Failed: unrecognized character after (? or (?- at offset 3
1017
1018/a(?{"{"}})b/
1019Failed: unrecognized character after (? or (?- at offset 3
1020
1021/(?(1?)a|b)/
1022Failed: malformed number or name after (?( at offset 4
1023
1024/[a[:xyz:/
1025Failed: missing terminating ] for character class at offset 8
1026
1027/(?<=x+)y/
1028Failed: lookbehind assertion is not fixed length at offset 6
1029
1030/a{37,17}/
1031Failed: numbers out of order in {} quantifier at offset 7
1032
1033/abc/\
1034Failed: \ at end of pattern at offset 4
1035
1036/abc/\P
1037Failed: POSIX code 9: bad escape sequence at offset 4
1038
1039/abc/\i
1040Failed: \ at end of pattern at offset 4
1041
1042/(a)bc(d)/I
1043Capturing subpattern count = 2
1044No options
1045First char = 'a'
1046Need char = 'd'
1047    abcd
1048 0: abcd
1049 1: a
1050 2: d
1051    abcd\C2
1052 0: abcd
1053 1: a
1054 2: d
1055 2C d (1)
1056    abcd\C5
1057 0: abcd
1058 1: a
1059 2: d
1060copy substring 5 failed -7
1061
1062/(.{20})/I
1063Capturing subpattern count = 1
1064No options
1065No first char
1066No need char
1067    abcdefghijklmnopqrstuvwxyz
1068 0: abcdefghijklmnopqrst
1069 1: abcdefghijklmnopqrst
1070    abcdefghijklmnopqrstuvwxyz\C1
1071 0: abcdefghijklmnopqrst
1072 1: abcdefghijklmnopqrst
1073 1C abcdefghijklmnopqrst (20)
1074    abcdefghijklmnopqrstuvwxyz\G1
1075 0: abcdefghijklmnopqrst
1076 1: abcdefghijklmnopqrst
1077 1G abcdefghijklmnopqrst (20)
1078
1079/(.{15})/I
1080Capturing subpattern count = 1
1081No options
1082No first char
1083No need char
1084    abcdefghijklmnopqrstuvwxyz
1085 0: abcdefghijklmno
1086 1: abcdefghijklmno
1087    abcdefghijklmnopqrstuvwxyz\C1\G1
1088 0: abcdefghijklmno
1089 1: abcdefghijklmno
1090 1C abcdefghijklmno (15)
1091 1G abcdefghijklmno (15)
1092
1093/(.{16})/I
1094Capturing subpattern count = 1
1095No options
1096No first char
1097No need char
1098    abcdefghijklmnopqrstuvwxyz
1099 0: abcdefghijklmnop
1100 1: abcdefghijklmnop
1101    abcdefghijklmnopqrstuvwxyz\C1\G1\L
1102 0: abcdefghijklmnop
1103 1: abcdefghijklmnop
1104 1C abcdefghijklmnop (16)
1105 1G abcdefghijklmnop (16)
1106 0L abcdefghijklmnop
1107 1L abcdefghijklmnop
1108
1109/^(a|(bc))de(f)/I
1110Capturing subpattern count = 3
1111Options: anchored
1112No first char
1113No need char
1114    adef\G1\G2\G3\G4\L
1115 0: adef
1116 1: a
1117 2: <unset>
1118 3: f
1119 1G a (1)
1120 2G  (0)
1121 3G f (1)
1122get substring 4 failed -7
1123 0L adef
1124 1L a
1125 2L
1126 3L f
1127    bcdef\G1\G2\G3\G4\L
1128 0: bcdef
1129 1: bc
1130 2: bc
1131 3: f
1132 1G bc (2)
1133 2G bc (2)
1134 3G f (1)
1135get substring 4 failed -7
1136 0L bcdef
1137 1L bc
1138 2L bc
1139 3L f
1140    adefghijk\C0
1141 0: adef
1142 1: a
1143 2: <unset>
1144 3: f
1145 0C adef (4)
1146
1147/^abc\00def/I
1148Capturing subpattern count = 0
1149Options: anchored
1150No first char
1151No need char
1152    abc\00def\L\C0
1153 0: abc\x00def
1154 0C abc (7)
1155 0L abc
1156
1157/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
1158)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
1159)?)?)?)?)?)?)?)?)?otherword/I
1160Capturing subpattern count = 8
1161Contains explicit CR or LF match
1162No options
1163First char = 'w'
1164Need char = 'd'
1165
1166/.*X/IDZ
1167------------------------------------------------------------------
1168        Bra
1169        Any*
1170        X
1171        Ket
1172        End
1173------------------------------------------------------------------
1174Capturing subpattern count = 0
1175No options
1176First char at start or follows newline
1177Need char = 'X'
1178
1179/.*X/IDZs
1180------------------------------------------------------------------
1181        Bra
1182        AllAny*
1183        X
1184        Ket
1185        End
1186------------------------------------------------------------------
1187Capturing subpattern count = 0
1188Options: anchored dotall
1189No first char
1190Need char = 'X'
1191
1192/(.*X|^B)/IDZ
1193------------------------------------------------------------------
1194        Bra
1195        CBra 1
1196        Any*
1197        X
1198        Alt
1199        ^
1200        B
1201        Ket
1202        Ket
1203        End
1204------------------------------------------------------------------
1205Capturing subpattern count = 1
1206No options
1207First char at start or follows newline
1208No need char
1209
1210/(.*X|^B)/IDZs
1211------------------------------------------------------------------
1212        Bra
1213        CBra 1
1214        AllAny*
1215        X
1216        Alt
1217        ^
1218        B
1219        Ket
1220        Ket
1221        End
1222------------------------------------------------------------------
1223Capturing subpattern count = 1
1224Options: anchored dotall
1225No first char
1226No need char
1227
1228/(?s)(.*X|^B)/IDZ
1229------------------------------------------------------------------
1230        Bra
1231        CBra 1
1232        AllAny*
1233        X
1234        Alt
1235        ^
1236        B
1237        Ket
1238        Ket
1239        End
1240------------------------------------------------------------------
1241Capturing subpattern count = 1
1242Options: anchored dotall
1243No first char
1244No need char
1245
1246/(?s:.*X|^B)/IDZ
1247------------------------------------------------------------------
1248        Bra
1249        Bra
1250     04 Opt
1251        AllAny*
1252        X
1253        Alt
1254     04 Opt
1255        ^
1256        B
1257        Ket
1258     00 Opt
1259        Ket
1260        End
1261------------------------------------------------------------------
1262Capturing subpattern count = 0
1263Options: anchored
1264No first char
1265No need char
1266
1267/\Biss\B/I+
1268Capturing subpattern count = 0
1269No options
1270First char = 'i'
1271Need char = 's'
1272    Mississippi
1273 0: iss
1274 0+ issippi
1275
1276/\Biss\B/I+P
1277    Mississippi
1278 0: iss
1279 0+ issippi
1280
1281/iss/IG+
1282Capturing subpattern count = 0
1283No options
1284First char = 'i'
1285Need char = 's'
1286    Mississippi
1287 0: iss
1288 0+ issippi
1289 0: iss
1290 0+ ippi
1291
1292/\Biss\B/IG+
1293Capturing subpattern count = 0
1294No options
1295First char = 'i'
1296Need char = 's'
1297    Mississippi
1298 0: iss
1299 0+ issippi
1300
1301/\Biss\B/Ig+
1302Capturing subpattern count = 0
1303No options
1304First char = 'i'
1305Need char = 's'
1306    Mississippi
1307 0: iss
1308 0+ issippi
1309 0: iss
1310 0+ ippi
1311    *** Failers
1312No match
1313    Mississippi\A
1314No match
1315
1316/(?<=[Ms])iss/Ig+
1317Capturing subpattern count = 0
1318No options
1319First char = 'i'
1320Need char = 's'
1321    Mississippi
1322 0: iss
1323 0+ issippi
1324 0: iss
1325 0+ ippi
1326
1327/(?<=[Ms])iss/IG+
1328Capturing subpattern count = 0
1329No options
1330First char = 'i'
1331Need char = 's'
1332    Mississippi
1333 0: iss
1334 0+ issippi
1335
1336/^iss/Ig+
1337Capturing subpattern count = 0
1338Options: anchored
1339No first char
1340No need char
1341    ississippi
1342 0: iss
1343 0+ issippi
1344
1345/.*iss/Ig+
1346Capturing subpattern count = 0
1347No options
1348First char at start or follows newline
1349Need char = 's'
1350    abciss\nxyzisspqr
1351 0: abciss
1352 0+ \x0axyzisspqr
1353 0: xyziss
1354 0+ pqr
1355
1356/.i./I+g
1357Capturing subpattern count = 0
1358No options
1359No first char
1360Need char = 'i'
1361    Mississippi
1362 0: Mis
1363 0+ sissippi
1364 0: sis
1365 0+ sippi
1366 0: sip
1367 0+ pi
1368    Mississippi\A
1369 0: Mis
1370 0+ sissippi
1371 0: sis
1372 0+ sippi
1373 0: sip
1374 0+ pi
1375    Missouri river
1376 0: Mis
1377 0+ souri river
1378 0: ri
1379 0+ river
1380 0: riv
1381 0+ er
1382    Missouri river\A
1383 0: Mis
1384 0+ souri river
1385
1386/^.is/I+g
1387Capturing subpattern count = 0
1388Options: anchored
1389No first char
1390No need char
1391    Mississippi
1392 0: Mis
1393 0+ sissippi
1394
1395/^ab\n/Ig+
1396Capturing subpattern count = 0
1397Contains explicit CR or LF match
1398Options: anchored
1399No first char
1400No need char
1401    ab\nab\ncd
1402 0: ab\x0a
1403 0+ ab\x0acd
1404
1405/^ab\n/Img+
1406Capturing subpattern count = 0
1407Contains explicit CR or LF match
1408Options: multiline
1409First char at start or follows newline
1410Need char = 10
1411    ab\nab\ncd
1412 0: ab\x0a
1413 0+ ab\x0acd
1414 0: ab\x0a
1415 0+ cd
1416
1417/abc/I
1418Capturing subpattern count = 0
1419No options
1420First char = 'a'
1421Need char = 'c'
1422
1423/abc|bac/I
1424Capturing subpattern count = 0
1425No options
1426No first char
1427Need char = 'c'
1428
1429/(abc|bac)/I
1430Capturing subpattern count = 1
1431No options
1432No first char
1433Need char = 'c'
1434
1435/(abc|(c|dc))/I
1436Capturing subpattern count = 2
1437No options
1438No first char
1439Need char = 'c'
1440
1441/(abc|(d|de)c)/I
1442Capturing subpattern count = 2
1443No options
1444No first char
1445Need char = 'c'
1446
1447/a*/I
1448Capturing subpattern count = 0
1449No options
1450No first char
1451No need char
1452
1453/a+/I
1454Capturing subpattern count = 0
1455No options
1456First char = 'a'
1457No need char
1458
1459/(baa|a+)/I
1460Capturing subpattern count = 1
1461No options
1462No first char
1463Need char = 'a'
1464
1465/a{0,3}/I
1466Capturing subpattern count = 0
1467No options
1468No first char
1469No need char
1470
1471/baa{3,}/I
1472Capturing subpattern count = 0
1473No options
1474First char = 'b'
1475Need char = 'a'
1476
1477/"([^\\"]+|\\.)*"/I
1478Capturing subpattern count = 1
1479No options
1480First char = '"'
1481Need char = '"'
1482
1483/(abc|ab[cd])/I
1484Capturing subpattern count = 1
1485No options
1486First char = 'a'
1487No need char
1488
1489/(a|.)/I
1490Capturing subpattern count = 1
1491No options
1492No first char
1493No need char
1494
1495/a|ba|\w/I
1496Capturing subpattern count = 0
1497No options
1498No first char
1499No need char
1500
1501/abc(?=pqr)/I
1502Capturing subpattern count = 0
1503No options
1504First char = 'a'
1505Need char = 'r'
1506
1507/...(?<=abc)/I
1508Capturing subpattern count = 0
1509No options
1510No first char
1511No need char
1512
1513/abc(?!pqr)/I
1514Capturing subpattern count = 0
1515No options
1516First char = 'a'
1517Need char = 'c'
1518
1519/ab./I
1520Capturing subpattern count = 0
1521No options
1522First char = 'a'
1523Need char = 'b'
1524
1525/ab[xyz]/I
1526Capturing subpattern count = 0
1527No options
1528First char = 'a'
1529Need char = 'b'
1530
1531/abc*/I
1532Capturing subpattern count = 0
1533No options
1534First char = 'a'
1535Need char = 'b'
1536
1537/ab.c*/I
1538Capturing subpattern count = 0
1539No options
1540First char = 'a'
1541Need char = 'b'
1542
1543/a.c*/I
1544Capturing subpattern count = 0
1545No options
1546First char = 'a'
1547No need char
1548
1549/.c*/I
1550Capturing subpattern count = 0
1551No options
1552No first char
1553No need char
1554
1555/ac*/I
1556Capturing subpattern count = 0
1557No options
1558First char = 'a'
1559No need char
1560
1561/(a.c*|b.c*)/I
1562Capturing subpattern count = 1
1563No options
1564No first char
1565No need char
1566
1567/a.c*|aba/I
1568Capturing subpattern count = 0
1569No options
1570First char = 'a'
1571No need char
1572
1573/.+a/I
1574Capturing subpattern count = 0
1575No options
1576No first char
1577Need char = 'a'
1578
1579/(?=abcda)a.*/I
1580Capturing subpattern count = 0
1581No options
1582First char = 'a'
1583Need char = 'a'
1584
1585/(?=a)a.*/I
1586Capturing subpattern count = 0
1587No options
1588First char = 'a'
1589No need char
1590
1591/a(b)*/I
1592Capturing subpattern count = 1
1593No options
1594First char = 'a'
1595No need char
1596
1597/a\d*/I
1598Capturing subpattern count = 0
1599No options
1600First char = 'a'
1601No need char
1602
1603/ab\d*/I
1604Capturing subpattern count = 0
1605No options
1606First char = 'a'
1607Need char = 'b'
1608
1609/a(\d)*/I
1610Capturing subpattern count = 1
1611No options
1612First char = 'a'
1613No need char
1614
1615/abcde{0,0}/I
1616Capturing subpattern count = 0
1617No options
1618First char = 'a'
1619Need char = 'd'
1620
1621/ab\d+/I
1622Capturing subpattern count = 0
1623No options
1624First char = 'a'
1625Need char = 'b'
1626
1627/a(?(1)b)(.)/I
1628Capturing subpattern count = 1
1629No options
1630First char = 'a'
1631No need char
1632
1633/a(?(1)bag|big)(.)/I
1634Capturing subpattern count = 1
1635No options
1636First char = 'a'
1637Need char = 'g'
1638
1639/a(?(1)bag|big)*(.)/I
1640Capturing subpattern count = 1
1641No options
1642First char = 'a'
1643No need char
1644
1645/a(?(1)bag|big)+(.)/I
1646Capturing subpattern count = 1
1647No options
1648First char = 'a'
1649Need char = 'g'
1650
1651/a(?(1)b..|b..)(.)/I
1652Capturing subpattern count = 1
1653No options
1654First char = 'a'
1655Need char = 'b'
1656
1657/ab\d{0}e/I
1658Capturing subpattern count = 0
1659No options
1660First char = 'a'
1661Need char = 'e'
1662
1663/a?b?/I
1664Capturing subpattern count = 0
1665No options
1666No first char
1667No need char
1668    a
1669 0: a
1670    b
1671 0: b
1672    ab
1673 0: ab
1674    \
1675 0:
1676    *** Failers
1677 0:
1678    \N
1679No match
1680
1681/|-/I
1682Capturing subpattern count = 0
1683No options
1684No first char
1685No need char
1686    abcd
1687 0:
1688    -abc
1689 0:
1690    \Nab-c
1691 0: -
1692    *** Failers
1693 0:
1694    \Nabc
1695No match
1696
1697/a*(b+)(z)(z)/P
1698    aaaabbbbzzzz
1699 0: aaaabbbbzz
1700 1: bbbb
1701 2: z
1702 3: z
1703    aaaabbbbzzzz\O0
1704    aaaabbbbzzzz\O1
1705 0: aaaabbbbzz
1706    aaaabbbbzzzz\O2
1707 0: aaaabbbbzz
1708 1: bbbb
1709    aaaabbbbzzzz\O3
1710 0: aaaabbbbzz
1711 1: bbbb
1712 2: z
1713    aaaabbbbzzzz\O4
1714 0: aaaabbbbzz
1715 1: bbbb
1716 2: z
1717 3: z
1718    aaaabbbbzzzz\O5
1719 0: aaaabbbbzz
1720 1: bbbb
1721 2: z
1722 3: z
1723
1724/^.?abcd/IS
1725Capturing subpattern count = 0
1726Options: anchored
1727No first char
1728Need char = 'd'
1729Subject length lower bound = 4
1730No set of starting bytes
1731
1732/\(             # ( at start
1733  (?:           # Non-capturing bracket
1734  (?>[^()]+)    # Either a sequence of non-brackets (no backtracking)
1735  |             # Or
1736  (?R)          # Recurse - i.e. nested bracketed string
1737  )*            # Zero or more contents
1738  \)            # Closing )
1739  /Ix
1740Capturing subpattern count = 0
1741Options: extended
1742First char = '('
1743Need char = ')'
1744    (abcd)
1745 0: (abcd)
1746    (abcd)xyz
1747 0: (abcd)
1748    xyz(abcd)
1749 0: (abcd)
1750    (ab(xy)cd)pqr
1751 0: (ab(xy)cd)
1752    (ab(xycd)pqr
1753 0: (xycd)
1754    () abc ()
1755 0: ()
1756    12(abcde(fsh)xyz(foo(bar))lmno)89
1757 0: (abcde(fsh)xyz(foo(bar))lmno)
1758    *** Failers
1759No match
1760    abcd
1761No match
1762    abcd)
1763No match
1764    (abcd
1765No match
1766
1767/\(  ( (?>[^()]+) | (?R) )* \) /Ixg
1768Capturing subpattern count = 1
1769Options: extended
1770First char = '('
1771Need char = ')'
1772    (ab(xy)cd)pqr
1773 0: (ab(xy)cd)
1774 1: cd
1775    1(abcd)(x(y)z)pqr
1776 0: (abcd)
1777 1: abcd
1778 0: (x(y)z)
1779 1: z
1780
1781/\(  (?: (?>[^()]+) | (?R) ) \) /Ix
1782Capturing subpattern count = 0
1783Options: extended
1784First char = '('
1785Need char = ')'
1786    (abcd)
1787 0: (abcd)
1788    (ab(xy)cd)
1789 0: (xy)
1790    (a(b(c)d)e)
1791 0: (c)
1792    ((ab))
1793 0: ((ab))
1794    *** Failers
1795No match
1796    ()
1797No match
1798
1799/\(  (?: (?>[^()]+) | (?R) )? \) /Ix
1800Capturing subpattern count = 0
1801Options: extended
1802First char = '('
1803Need char = ')'
1804    ()
1805 0: ()
1806    12(abcde(fsh)xyz(foo(bar))lmno)89
1807 0: (fsh)
1808
1809/\(  ( (?>[^()]+) | (?R) )* \) /Ix
1810Capturing subpattern count = 1
1811Options: extended
1812First char = '('
1813Need char = ')'
1814    (ab(xy)cd)
1815 0: (ab(xy)cd)
1816 1: cd
1817
1818/\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
1819Capturing subpattern count = 2
1820Options: extended
1821First char = '('
1822Need char = ')'
1823    (ab(xy)cd)
1824 0: (ab(xy)cd)
1825 1: ab(xy)cd
1826 2: cd
1827
1828/\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
1829Capturing subpattern count = 3
1830Options: extended
1831First char = '('
1832Need char = ')'
1833    (ab(xy)cd)
1834 0: (ab(xy)cd)
1835 1: <unset>
1836 2: ab(xy)cd
1837 3: cd
1838    (123ab(xy)cd)
1839 0: (123ab(xy)cd)
1840 1: 123
1841 2: ab(xy)cd
1842 3: cd
1843
1844/\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix
1845Capturing subpattern count = 3
1846Options: extended
1847First char = '('
1848Need char = ')'
1849    (ab(xy)cd)
1850 0: (ab(xy)cd)
1851 1: ab(xy)cd
1852 2: <unset>
1853 3: cd
1854    (123ab(xy)cd)
1855 0: (123ab(xy)cd)
1856 1: 123ab(xy)cd
1857 2: 123
1858 3: cd
1859
1860/\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix
1861Capturing subpattern count = 11
1862Options: extended
1863First char = '('
1864Need char = ')'
1865    (ab(xy)cd)
1866 0: (ab(xy)cd)
1867 1: ab(xy)cd
1868 2: ab(xy)cd
1869 3: ab(xy)cd
1870 4: ab(xy)cd
1871 5: ab(xy)cd
1872 6: ab(xy)cd
1873 7: ab(xy)cd
1874 8: ab(xy)cd
1875 9: ab(xy)cd
187610: ab(xy)cd
187711: cd
1878
1879/\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
1880Capturing subpattern count = 3
1881Options: extended
1882First char = '('
1883Need char = ')'
1884    (abcd(xyz<p>qrs)123)
1885 0: (abcd(xyz<p>qrs)123)
1886 1: abcd(xyz<p>qrs)123
1887 2: 123
1888
1889/\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
1890Capturing subpattern count = 3
1891Options: extended
1892First char = '('
1893Need char = ')'
1894    (ab(cd)ef)
1895 0: (ab(cd)ef)
1896 1: ab(cd)ef
1897 2: ef
1898 3: (cd)
1899    (ab(cd(ef)gh)ij)
1900 0: (ab(cd(ef)gh)ij)
1901 1: ab(cd(ef)gh)ij
1902 2: ij
1903 3: (cd(ef)gh)
1904
1905/^[[:alnum:]]/DZ
1906------------------------------------------------------------------
1907        Bra
1908        ^
1909        [0-9A-Za-z]
1910        Ket
1911        End
1912------------------------------------------------------------------
1913Capturing subpattern count = 0
1914Options: anchored
1915No first char
1916No need char
1917
1918/^[[:^alnum:]]/DZ
1919------------------------------------------------------------------
1920        Bra
1921        ^
1922        [\x00-/:-@[-`{-\xff] (neg)
1923        Ket
1924        End
1925------------------------------------------------------------------
1926Capturing subpattern count = 0
1927Options: anchored
1928No first char
1929No need char
1930
1931/^[[:alpha:]]/DZ
1932------------------------------------------------------------------
1933        Bra
1934        ^
1935        [A-Za-z]
1936        Ket
1937        End
1938------------------------------------------------------------------
1939Capturing subpattern count = 0
1940Options: anchored
1941No first char
1942No need char
1943
1944/^[[:^alpha:]]/DZ
1945------------------------------------------------------------------
1946        Bra
1947        ^
1948        [\x00-@[-`{-\xff] (neg)
1949        Ket
1950        End
1951------------------------------------------------------------------
1952Capturing subpattern count = 0
1953Options: anchored
1954No first char
1955No need char
1956
1957/[_[:alpha:]]/IS
1958Capturing subpattern count = 0
1959No options
1960No first char
1961No need char
1962Subject length lower bound = 1
1963Starting 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
1964  _ 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
1965
1966/^[[:ascii:]]/DZ
1967------------------------------------------------------------------
1968        Bra
1969        ^
1970        [\x00-\x7f]
1971        Ket
1972        End
1973------------------------------------------------------------------
1974Capturing subpattern count = 0
1975Options: anchored
1976No first char
1977No need char
1978
1979/^[[:^ascii:]]/DZ
1980------------------------------------------------------------------
1981        Bra
1982        ^
1983        [\x80-\xff] (neg)
1984        Ket
1985        End
1986------------------------------------------------------------------
1987Capturing subpattern count = 0
1988Options: anchored
1989No first char
1990No need char
1991
1992/^[[:blank:]]/DZ
1993------------------------------------------------------------------
1994        Bra
1995        ^
1996        [\x09 ]
1997        Ket
1998        End
1999------------------------------------------------------------------
2000Capturing subpattern count = 0
2001Options: anchored
2002No first char
2003No need char
2004
2005/^[[:^blank:]]/DZ
2006------------------------------------------------------------------
2007        Bra
2008        ^
2009        [\x00-\x08\x0a-\x1f!-\xff] (neg)
2010        Ket
2011        End
2012------------------------------------------------------------------
2013Capturing subpattern count = 0
2014Options: anchored
2015No first char
2016No need char
2017
2018/[\n\x0b\x0c\x0d[:blank:]]/IS
2019Capturing subpattern count = 0
2020Contains explicit CR or LF match
2021No options
2022No first char
2023No need char
2024Subject length lower bound = 1
2025Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20
2026
2027/^[[:cntrl:]]/DZ
2028------------------------------------------------------------------
2029        Bra
2030        ^
2031        [\x00-\x1f\x7f]
2032        Ket
2033        End
2034------------------------------------------------------------------
2035Capturing subpattern count = 0
2036Options: anchored
2037No first char
2038No need char
2039
2040/^[[:digit:]]/DZ
2041------------------------------------------------------------------
2042        Bra
2043        ^
2044        [0-9]
2045        Ket
2046        End
2047------------------------------------------------------------------
2048Capturing subpattern count = 0
2049Options: anchored
2050No first char
2051No need char
2052
2053/^[[:graph:]]/DZ
2054------------------------------------------------------------------
2055        Bra
2056        ^
2057        [!-~]
2058        Ket
2059        End
2060------------------------------------------------------------------
2061Capturing subpattern count = 0
2062Options: anchored
2063No first char
2064No need char
2065
2066/^[[:lower:]]/DZ
2067------------------------------------------------------------------
2068        Bra
2069        ^
2070        [a-z]
2071        Ket
2072        End
2073------------------------------------------------------------------
2074Capturing subpattern count = 0
2075Options: anchored
2076No first char
2077No need char
2078
2079/^[[:print:]]/DZ
2080------------------------------------------------------------------
2081        Bra
2082        ^
2083        [ -~]
2084        Ket
2085        End
2086------------------------------------------------------------------
2087Capturing subpattern count = 0
2088Options: anchored
2089No first char
2090No need char
2091
2092/^[[:punct:]]/DZ
2093------------------------------------------------------------------
2094        Bra
2095        ^
2096        [!-/:-@[-`{-~]
2097        Ket
2098        End
2099------------------------------------------------------------------
2100Capturing subpattern count = 0
2101Options: anchored
2102No first char
2103No need char
2104
2105/^[[:space:]]/DZ
2106------------------------------------------------------------------
2107        Bra
2108        ^
2109        [\x09-\x0d ]
2110        Ket
2111        End
2112------------------------------------------------------------------
2113Capturing subpattern count = 0
2114Options: anchored
2115No first char
2116No need char
2117
2118/^[[:upper:]]/DZ
2119------------------------------------------------------------------
2120        Bra
2121        ^
2122        [A-Z]
2123        Ket
2124        End
2125------------------------------------------------------------------
2126Capturing subpattern count = 0
2127Options: anchored
2128No first char
2129No need char
2130
2131/^[[:xdigit:]]/DZ
2132------------------------------------------------------------------
2133        Bra
2134        ^
2135        [0-9A-Fa-f]
2136        Ket
2137        End
2138------------------------------------------------------------------
2139Capturing subpattern count = 0
2140Options: anchored
2141No first char
2142No need char
2143
2144/^[[:word:]]/DZ
2145------------------------------------------------------------------
2146        Bra
2147        ^
2148        [0-9A-Z_a-z]
2149        Ket
2150        End
2151------------------------------------------------------------------
2152Capturing subpattern count = 0
2153Options: anchored
2154No first char
2155No need char
2156
2157/^[[:^cntrl:]]/DZ
2158------------------------------------------------------------------
2159        Bra
2160        ^
2161        [ -~\x80-\xff] (neg)
2162        Ket
2163        End
2164------------------------------------------------------------------
2165Capturing subpattern count = 0
2166Options: anchored
2167No first char
2168No need char
2169
2170/^[12[:^digit:]]/DZ
2171------------------------------------------------------------------
2172        Bra
2173        ^
2174        [\x00-/12:-\xff] (neg)
2175        Ket
2176        End
2177------------------------------------------------------------------
2178Capturing subpattern count = 0
2179Options: anchored
2180No first char
2181No need char
2182
2183/^[[:^blank:]]/DZ
2184------------------------------------------------------------------
2185        Bra
2186        ^
2187        [\x00-\x08\x0a-\x1f!-\xff] (neg)
2188        Ket
2189        End
2190------------------------------------------------------------------
2191Capturing subpattern count = 0
2192Options: anchored
2193No first char
2194No need char
2195
2196/[01[:alpha:]%]/DZ
2197------------------------------------------------------------------
2198        Bra
2199        [%01A-Za-z]
2200        Ket
2201        End
2202------------------------------------------------------------------
2203Capturing subpattern count = 0
2204No options
2205No first char
2206No need char
2207
2208/[[.ch.]]/I
2209Failed: POSIX collating elements are not supported at offset 1
2210
2211/[[=ch=]]/I
2212Failed: POSIX collating elements are not supported at offset 1
2213
2214/[[:rhubarb:]]/I
2215Failed: unknown POSIX class name at offset 3
2216
2217/[[:upper:]]/Ii
2218Capturing subpattern count = 0
2219Options: caseless
2220No first char
2221No need char
2222    A
2223 0: A
2224    a
2225 0: a
2226
2227/[[:lower:]]/Ii
2228Capturing subpattern count = 0
2229Options: caseless
2230No first char
2231No need char
2232    A
2233 0: A
2234    a
2235 0: a
2236
2237/((?-i)[[:lower:]])[[:lower:]]/Ii
2238Capturing subpattern count = 1
2239Options: caseless
2240No first char
2241No need char
2242    ab
2243 0: ab
2244 1: a
2245    aB
2246 0: aB
2247 1: a
2248    *** Failers
2249 0: ai
2250 1: a
2251    Ab
2252No match
2253    AB
2254No match
2255
2256/[\200-\110]/I
2257Failed: range out of order in character class at offset 9
2258
2259/^(?(0)f|b)oo/I
2260Failed: invalid condition (?(0) at offset 6
2261
2262/This one's here because of the large output vector needed/I
2263Capturing subpattern count = 0
2264No options
2265First char = 'T'
2266Need char = 'd'
2267
2268/(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I
2269Capturing subpattern count = 271
2270Max back reference = 270
2271No options
2272No first char
2273No need char
2274    \O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC
2275 0: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC
2276 1: 1
2277 2: 2
2278 3: 3
2279 4: 4
2280 5: 5
2281 6: 6
2282 7: 7
2283 8: 8
2284 9: 9
228510: 10
228611: 11
228712: 12
228813: 13
228914: 14
229015: 15
229116: 16
229217: 17
229318: 18
229419: 19
229520: 20
229621: 21
229722: 22
229823: 23
229924: 24
230025: 25
230126: 26
230227: 27
230328: 28
230429: 29
230530: 30
230631: 31
230732: 32
230833: 33
230934: 34
231035: 35
231136: 36
231237: 37
231338: 38
231439: 39
231540: 40
231641: 41
231742: 42
231843: 43
231944: 44
232045: 45
232146: 46
232247: 47
232348: 48
232449: 49
232550: 50
232651: 51
232752: 52
232853: 53
232954: 54
233055: 55
233156: 56
233257: 57
233358: 58
233459: 59
233560: 60
233661: 61
233762: 62
233863: 63
233964: 64
234065: 65
234166: 66
234267: 67
234368: 68
234469: 69
234570: 70
234671: 71
234772: 72
234873: 73
234974: 74
235075: 75
235176: 76
235277: 77
235378: 78
235479: 79
235580: 80
235681: 81
235782: 82
235883: 83
235984: 84
236085: 85
236186: 86
236287: 87
236388: 88
236489: 89
236590: 90
236691: 91
236792: 92
236893: 93
236994: 94
237095: 95
237196: 96
237297: 97
237398: 98
237499: 99
2375100: 100
2376101: 101
2377102: 102
2378103: 103
2379104: 104
2380105: 105
2381106: 106
2382107: 107
2383108: 108
2384109: 109
2385110: 110
2386111: 111
2387112: 112
2388113: 113
2389114: 114
2390115: 115
2391116: 116
2392117: 117
2393118: 118
2394119: 119
2395120: 120
2396121: 121
2397122: 122
2398123: 123
2399124: 124
2400125: 125
2401126: 126
2402127: 127
2403128: 128
2404129: 129
2405130: 130
2406131: 131
2407132: 132
2408133: 133
2409134: 134
2410135: 135
2411136: 136
2412137: 137
2413138: 138
2414139: 139
2415140: 140
2416141: 141
2417142: 142
2418143: 143
2419144: 144
2420145: 145
2421146: 146
2422147: 147
2423148: 148
2424149: 149
2425150: 150
2426151: 151
2427152: 152
2428153: 153
2429154: 154
2430155: 155
2431156: 156
2432157: 157
2433158: 158
2434159: 159
2435160: 160
2436161: 161
2437162: 162
2438163: 163
2439164: 164
2440165: 165
2441166: 166
2442167: 167
2443168: 168
2444169: 169
2445170: 170
2446171: 171
2447172: 172
2448173: 173
2449174: 174
2450175: 175
2451176: 176
2452177: 177
2453178: 178
2454179: 179
2455180: 180
2456181: 181
2457182: 182
2458183: 183
2459184: 184
2460185: 185
2461186: 186
2462187: 187
2463188: 188
2464189: 189
2465190: 190
2466191: 191
2467192: 192
2468193: 193
2469194: 194
2470195: 195
2471196: 196
2472197: 197
2473198: 198
2474199: 199
2475200: 200
2476201: 201
2477202: 202
2478203: 203
2479204: 204
2480205: 205
2481206: 206
2482207: 207
2483208: 208
2484209: 209
2485210: 210
2486211: 211
2487212: 212
2488213: 213
2489214: 214
2490215: 215
2491216: 216
2492217: 217
2493218: 218
2494219: 219
2495220: 220
2496221: 221
2497222: 222
2498223: 223
2499224: 224
2500225: 225
2501226: 226
2502227: 227
2503228: 228
2504229: 229
2505230: 230
2506231: 231
2507232: 232
2508233: 233
2509234: 234
2510235: 235
2511236: 236
2512237: 237
2513238: 238
2514239: 239
2515240: 240
2516241: 241
2517242: 242
2518243: 243
2519244: 244
2520245: 245
2521246: 246
2522247: 247
2523248: 248
2524249: 249
2525250: 250
2526251: 251
2527252: 252
2528253: 253
2529254: 254
2530255: 255
2531256: 256
2532257: 257
2533258: 258
2534259: 259
2535260: 260
2536261: 261
2537262: 262
2538263: 263
2539264: 264
2540265: 265
2541266: 266
2542267: 267
2543268: 268
2544269: 269
2545270: ABC
2546271: ABC
2547
2548/This one's here because Perl does this differently and PCRE can't at present/I
2549Capturing subpattern count = 0
2550No options
2551First char = 'T'
2552Need char = 't'
2553
2554/(main(O)?)+/I
2555Capturing subpattern count = 2
2556No options
2557First char = 'm'
2558Need char = 'n'
2559    mainmain
2560 0: mainmain
2561 1: main
2562    mainOmain
2563 0: mainOmain
2564 1: main
2565 2: O
2566
2567/These are all cases where Perl does it differently (nested captures)/I
2568Capturing subpattern count = 1
2569No options
2570First char = 'T'
2571Need char = 's'
2572
2573/^(a(b)?)+$/I
2574Capturing subpattern count = 2
2575Options: anchored
2576No first char
2577No need char
2578    aba
2579 0: aba
2580 1: a
2581 2: b
2582
2583/^(aa(bb)?)+$/I
2584Capturing subpattern count = 2
2585Options: anchored
2586No first char
2587No need char
2588    aabbaa
2589 0: aabbaa
2590 1: aa
2591 2: bb
2592
2593/^(aa|aa(bb))+$/I
2594Capturing subpattern count = 2
2595Options: anchored
2596No first char
2597No need char
2598    aabbaa
2599 0: aabbaa
2600 1: aa
2601 2: bb
2602
2603/^(aa(bb)??)+$/I
2604Capturing subpattern count = 2
2605Options: anchored
2606No first char
2607No need char
2608    aabbaa
2609 0: aabbaa
2610 1: aa
2611 2: bb
2612
2613/^(?:aa(bb)?)+$/I
2614Capturing subpattern count = 1
2615Options: anchored
2616No first char
2617No need char
2618    aabbaa
2619 0: aabbaa
2620 1: bb
2621
2622/^(aa(b(b))?)+$/I
2623Capturing subpattern count = 3
2624Options: anchored
2625No first char
2626No need char
2627    aabbaa
2628 0: aabbaa
2629 1: aa
2630 2: bb
2631 3: b
2632
2633/^(?:aa(b(b))?)+$/I
2634Capturing subpattern count = 2
2635Options: anchored
2636No first char
2637No need char
2638    aabbaa
2639 0: aabbaa
2640 1: bb
2641 2: b
2642
2643/^(?:aa(b(?:b))?)+$/I
2644Capturing subpattern count = 1
2645Options: anchored
2646No first char
2647No need char
2648    aabbaa
2649 0: aabbaa
2650 1: bb
2651
2652/^(?:aa(bb(?:b))?)+$/I
2653Capturing subpattern count = 1
2654Options: anchored
2655No first char
2656No need char
2657    aabbbaa
2658 0: aabbbaa
2659 1: bbb
2660
2661/^(?:aa(b(?:bb))?)+$/I
2662Capturing subpattern count = 1
2663Options: anchored
2664No first char
2665No need char
2666    aabbbaa
2667 0: aabbbaa
2668 1: bbb
2669
2670/^(?:aa(?:b(b))?)+$/I
2671Capturing subpattern count = 1
2672Options: anchored
2673No first char
2674No need char
2675    aabbaa
2676 0: aabbaa
2677 1: b
2678
2679/^(?:aa(?:b(bb))?)+$/I
2680Capturing subpattern count = 1
2681Options: anchored
2682No first char
2683No need char
2684    aabbbaa
2685 0: aabbbaa
2686 1: bb
2687
2688/^(aa(b(bb))?)+$/I
2689Capturing subpattern count = 3
2690Options: anchored
2691No first char
2692No need char
2693    aabbbaa
2694 0: aabbbaa
2695 1: aa
2696 2: bbb
2697 3: bb
2698
2699/^(aa(bb(bb))?)+$/I
2700Capturing subpattern count = 3
2701Options: anchored
2702No first char
2703No need char
2704    aabbbbaa
2705 0: aabbbbaa
2706 1: aa
2707 2: bbbb
2708 3: bb
2709
2710/--------------------------------------------------------------------/I
2711Capturing subpattern count = 0
2712No options
2713First char = '-'
2714Need char = '-'
2715
2716/#/IxDZ
2717------------------------------------------------------------------
2718        Bra
2719        Ket
2720        End
2721------------------------------------------------------------------
2722Capturing subpattern count = 0
2723Options: extended
2724No first char
2725No need char
2726
2727/a#/IxDZ
2728------------------------------------------------------------------
2729        Bra
2730        a
2731        Ket
2732        End
2733------------------------------------------------------------------
2734Capturing subpattern count = 0
2735Options: extended
2736First char = 'a'
2737No need char
2738
2739/[\s]/DZ
2740------------------------------------------------------------------
2741        Bra
2742        [\x09\x0a\x0c\x0d ]
2743        Ket
2744        End
2745------------------------------------------------------------------
2746Capturing subpattern count = 0
2747No options
2748No first char
2749No need char
2750
2751/[\S]/DZ
2752------------------------------------------------------------------
2753        Bra
2754        [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg)
2755        Ket
2756        End
2757------------------------------------------------------------------
2758Capturing subpattern count = 0
2759No options
2760No first char
2761No need char
2762
2763/a(?i)b/DZ
2764------------------------------------------------------------------
2765        Bra
2766        a
2767     01 Opt
2768     NC b
2769        Ket
2770        End
2771------------------------------------------------------------------
2772Capturing subpattern count = 0
2773No options
2774First char = 'a'
2775Need char = 'b' (caseless)
2776    ab
2777 0: ab
2778    aB
2779 0: aB
2780    *** Failers
2781No match
2782    AB
2783No match
2784
2785/(a(?i)b)/DZ
2786------------------------------------------------------------------
2787        Bra
2788        CBra 1
2789        a
2790     01 Opt
2791     NC b
2792        Ket
2793     00 Opt
2794        Ket
2795        End
2796------------------------------------------------------------------
2797Capturing subpattern count = 1
2798No options
2799First char = 'a'
2800Need char = 'b' (caseless)
2801    ab
2802 0: ab
2803 1: ab
2804    aB
2805 0: aB
2806 1: aB
2807    *** Failers
2808No match
2809    AB
2810No match
2811
2812/   (?i)abc/IxDZ
2813------------------------------------------------------------------
2814        Bra
2815     NC abc
2816        Ket
2817        End
2818------------------------------------------------------------------
2819Capturing subpattern count = 0
2820Options: caseless extended
2821First char = 'a' (caseless)
2822Need char = 'c' (caseless)
2823
2824/#this is a comment
2825  (?i)abc/IxDZ
2826------------------------------------------------------------------
2827        Bra
2828     NC abc
2829        Ket
2830        End
2831------------------------------------------------------------------
2832Capturing subpattern count = 0
2833Options: caseless extended
2834First char = 'a' (caseless)
2835Need char = 'c' (caseless)
2836
2837/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
2838------------------------------------------------------------------
2839        Bra
2840        123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
2841        Ket
2842        End
2843------------------------------------------------------------------
2844Capturing subpattern count = 0
2845No options
2846First char = '1'
2847Need char = '0'
2848
2849/\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
2850------------------------------------------------------------------
2851        Bra
2852        123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
2853        Ket
2854        End
2855------------------------------------------------------------------
2856Capturing subpattern count = 0
2857No options
2858First char = '1'
2859Need char = '0'
2860
2861/\Q\E/DZ
2862------------------------------------------------------------------
2863        Bra
2864        Ket
2865        End
2866------------------------------------------------------------------
2867Capturing subpattern count = 0
2868No options
2869No first char
2870No need char
2871    \
2872 0:
2873
2874/\Q\Ex/DZ
2875------------------------------------------------------------------
2876        Bra
2877        x
2878        Ket
2879        End
2880------------------------------------------------------------------
2881Capturing subpattern count = 0
2882No options
2883First char = 'x'
2884No need char
2885
2886/ \Q\E/DZ
2887------------------------------------------------------------------
2888        Bra
2889
2890        Ket
2891        End
2892------------------------------------------------------------------
2893Capturing subpattern count = 0
2894No options
2895First char = ' '
2896No need char
2897
2898/a\Q\E/DZ
2899------------------------------------------------------------------
2900        Bra
2901        a
2902        Ket
2903        End
2904------------------------------------------------------------------
2905Capturing subpattern count = 0
2906No options
2907First char = 'a'
2908No need char
2909  abc
2910 0: a
2911  bca
2912 0: a
2913  bac
2914 0: a
2915
2916/a\Q\Eb/DZ
2917------------------------------------------------------------------
2918        Bra
2919        ab
2920        Ket
2921        End
2922------------------------------------------------------------------
2923Capturing subpattern count = 0
2924No options
2925First char = 'a'
2926Need char = 'b'
2927  abc
2928 0: ab
2929
2930/\Q\Eabc/DZ
2931------------------------------------------------------------------
2932        Bra
2933        abc
2934        Ket
2935        End
2936------------------------------------------------------------------
2937Capturing subpattern count = 0
2938No options
2939First char = 'a'
2940Need char = 'c'
2941
2942/x*+\w/DZ
2943------------------------------------------------------------------
2944        Bra
2945        x*+
2946        \w
2947        Ket
2948        End
2949------------------------------------------------------------------
2950Capturing subpattern count = 0
2951No options
2952No first char
2953No need char
2954    *** Failers
2955 0: F
2956    xxxxx
2957No match
2958
2959/x?+/DZ
2960------------------------------------------------------------------
2961        Bra
2962        x?+
2963        Ket
2964        End
2965------------------------------------------------------------------
2966Capturing subpattern count = 0
2967No options
2968No first char
2969No need char
2970
2971/x++/DZ
2972------------------------------------------------------------------
2973        Bra
2974        x++
2975        Ket
2976        End
2977------------------------------------------------------------------
2978Capturing subpattern count = 0
2979No options
2980First char = 'x'
2981No need char
2982
2983/x{1,3}+/DZ
2984------------------------------------------------------------------
2985        Bra
2986        Once
2987        x
2988        x{0,2}
2989        Ket
2990        Ket
2991        End
2992------------------------------------------------------------------
2993Capturing subpattern count = 0
2994No options
2995First char = 'x'
2996No need char
2997
2998/(x)*+/DZ
2999------------------------------------------------------------------
3000        Bra
3001        Once
3002        Brazero
3003        CBra 1
3004        x
3005        KetRmax
3006        Ket
3007        Ket
3008        End
3009------------------------------------------------------------------
3010Capturing subpattern count = 1
3011No options
3012No first char
3013No need char
3014
3015/^(\w++|\s++)*$/I
3016Capturing subpattern count = 1
3017Options: anchored
3018No first char
3019No need char
3020    now is the time for all good men to come to the aid of the party
3021 0: now is the time for all good men to come to the aid of the party
3022 1: party
3023    *** Failers
3024No match
3025    this is not a line with only words and spaces!
3026No match
3027
3028/(\d++)(\w)/I
3029Capturing subpattern count = 2
3030No options
3031No first char
3032No need char
3033    12345a
3034 0: 12345a
3035 1: 12345
3036 2: a
3037    *** Failers
3038No match
3039    12345+
3040No match
3041
3042/a++b/I
3043Capturing subpattern count = 0
3044No options
3045First char = 'a'
3046Need char = 'b'
3047    aaab
3048 0: aaab
3049
3050/(a++b)/I
3051Capturing subpattern count = 1
3052No options
3053First char = 'a'
3054Need char = 'b'
3055    aaab
3056 0: aaab
3057 1: aaab
3058
3059/(a++)b/I
3060Capturing subpattern count = 1
3061No options
3062First char = 'a'
3063Need char = 'b'
3064    aaab
3065 0: aaab
3066 1: aaa
3067
3068/([^()]++|\([^()]*\))+/I
3069Capturing subpattern count = 1
3070No options
3071No first char
3072No need char
3073    ((abc(ade)ufh()()x
3074 0: abc(ade)ufh()()x
3075 1: x
3076
3077/\(([^()]++|\([^()]+\))+\)/I
3078Capturing subpattern count = 1
3079No options
3080First char = '('
3081Need char = ')'
3082    (abc)
3083 0: (abc)
3084 1: abc
3085    (abc(def)xyz)
3086 0: (abc(def)xyz)
3087 1: xyz
3088    *** Failers
3089No match
3090    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3091No match
3092
3093/(abc){1,3}+/DZ
3094------------------------------------------------------------------
3095        Bra
3096        Once
3097        CBra 1
3098        abc
3099        Ket
3100        Brazero
3101        Bra
3102        CBra 1
3103        abc
3104        Ket
3105        Brazero
3106        CBra 1
3107        abc
3108        Ket
3109        Ket
3110        Ket
3111        Ket
3112        End
3113------------------------------------------------------------------
3114Capturing subpattern count = 1
3115No options
3116First char = 'a'
3117Need char = 'c'
3118
3119/a+?+/I
3120Failed: nothing to repeat at offset 3
3121
3122/a{2,3}?+b/I
3123Failed: nothing to repeat at offset 7
3124
3125/(?U)a+?+/I
3126Failed: nothing to repeat at offset 7
3127
3128/a{2,3}?+b/IU
3129Failed: nothing to repeat at offset 7
3130
3131/x(?U)a++b/DZ
3132------------------------------------------------------------------
3133        Bra
3134        x
3135        a++
3136        b
3137        Ket
3138        End
3139------------------------------------------------------------------
3140Capturing subpattern count = 0
3141No options
3142First char = 'x'
3143Need char = 'b'
3144    xaaaab
3145 0: xaaaab
3146
3147/(?U)xa++b/DZ
3148------------------------------------------------------------------
3149        Bra
3150        x
3151        a++
3152        b
3153        Ket
3154        End
3155------------------------------------------------------------------
3156Capturing subpattern count = 0
3157Options: ungreedy
3158First char = 'x'
3159Need char = 'b'
3160    xaaaab
3161 0: xaaaab
3162
3163/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ
3164------------------------------------------------------------------
3165        Bra
3166        ^
3167        CBra 1
3168        CBra 2
3169        a+
3170        Ket
3171        CBra 3
3172        [ab]+?
3173        Ket
3174        CBra 4
3175        [bc]+
3176        Ket
3177        CBra 5
3178        \w*
3179        Ket
3180        Ket
3181        Ket
3182        End
3183------------------------------------------------------------------
3184Capturing subpattern count = 5
3185Options: anchored
3186No first char
3187No need char
3188
3189/^x(?U)a+b/DZ
3190------------------------------------------------------------------
3191        Bra
3192        ^
3193        x
3194        a++
3195        b
3196        Ket
3197        End
3198------------------------------------------------------------------
3199Capturing subpattern count = 0
3200Options: anchored
3201No first char
3202Need char = 'b'
3203
3204/^x(?U)(a+)b/DZ
3205------------------------------------------------------------------
3206        Bra
3207        ^
3208        x
3209        CBra 1
3210        a+?
3211        Ket
3212        b
3213        Ket
3214        End
3215------------------------------------------------------------------
3216Capturing subpattern count = 1
3217Options: anchored
3218No first char
3219Need char = 'b'
3220
3221/[.x.]/I
3222Failed: POSIX collating elements are not supported at offset 0
3223
3224/[=x=]/I
3225Failed: POSIX collating elements are not supported at offset 0
3226
3227/[:x:]/I
3228Failed: POSIX named classes are supported only within a class at offset 0
3229
3230/\l/I
3231Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3232
3233/\L/I
3234Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3235
3236/\N{name}/I
3237Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3238
3239/\u/I
3240Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3241
3242/\U/I
3243Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3244
3245/[/I
3246Failed: missing terminating ] for character class at offset 1
3247
3248/[a-/I
3249Failed: missing terminating ] for character class at offset 3
3250
3251/[[:space:]/I
3252Failed: missing terminating ] for character class at offset 10
3253
3254/[\s]/IDZ
3255------------------------------------------------------------------
3256        Bra
3257        [\x09\x0a\x0c\x0d ]
3258        Ket
3259        End
3260------------------------------------------------------------------
3261Capturing subpattern count = 0
3262No options
3263No first char
3264No need char
3265
3266/[[:space:]]/IDZ
3267------------------------------------------------------------------
3268        Bra
3269        [\x09-\x0d ]
3270        Ket
3271        End
3272------------------------------------------------------------------
3273Capturing subpattern count = 0
3274No options
3275No first char
3276No need char
3277
3278/[[:space:]abcde]/IDZ
3279------------------------------------------------------------------
3280        Bra
3281        [\x09-\x0d a-e]
3282        Ket
3283        End
3284------------------------------------------------------------------
3285Capturing subpattern count = 0
3286No options
3287No first char
3288No need char
3289
3290/< (?: (?(R) \d++  | [^<>]*+) | (?R)) * >/Ix
3291Capturing subpattern count = 0
3292Options: extended
3293First char = '<'
3294Need char = '>'
3295    <>
3296 0: <>
3297    <abcd>
3298 0: <abcd>
3299    <abc <123> hij>
3300 0: <abc <123> hij>
3301    <abc <def> hij>
3302 0: <def>
3303    <abc<>def>
3304 0: <abc<>def>
3305    <abc<>
3306 0: <>
3307    *** Failers
3308No match
3309    <abc
3310No match
3311
3312|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
3313------------------------------------------------------------------
3314        Bra
3315        8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
3316        \b
3317        Ket
3318        End
3319------------------------------------------------------------------
3320Capturing subpattern count = 0
3321No options
3322First char = '8'
3323Need char = 'X'
3324
3325|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
3326------------------------------------------------------------------
3327        Bra
3328        $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
3329        \b
3330        Ket
3331        End
3332------------------------------------------------------------------
3333Capturing subpattern count = 0
3334No options
3335First char = '$'
3336Need char = 'X'
3337
3338/(.*)\d+\1/I
3339Capturing subpattern count = 1
3340Max back reference = 1
3341No options
3342No first char
3343No need char
3344
3345/(.*)\d+/I
3346Capturing subpattern count = 1
3347No options
3348First char at start or follows newline
3349No need char
3350
3351/(.*)\d+\1/Is
3352Capturing subpattern count = 1
3353Max back reference = 1
3354Options: dotall
3355No first char
3356No need char
3357
3358/(.*)\d+/Is
3359Capturing subpattern count = 1
3360Options: anchored dotall
3361No first char
3362No need char
3363
3364/(.*(xyz))\d+\2/I
3365Capturing subpattern count = 2
3366Max back reference = 2
3367No options
3368First char at start or follows newline
3369Need char = 'z'
3370
3371/((.*))\d+\1/I
3372Capturing subpattern count = 2
3373Max back reference = 1
3374No options
3375No first char
3376No need char
3377    abc123bc
3378 0: bc123bc
3379 1: bc
3380 2: bc
3381
3382/a[b]/I
3383Capturing subpattern count = 0
3384No options
3385First char = 'a'
3386Need char = 'b'
3387
3388/(?=a).*/I
3389Capturing subpattern count = 0
3390No options
3391First char = 'a'
3392No need char
3393
3394/(?=abc).xyz/IiI
3395Capturing subpattern count = 0
3396Options: caseless
3397First char = 'a' (caseless)
3398Need char = 'z' (caseless)
3399
3400/(?=abc)(?i).xyz/I
3401Capturing subpattern count = 0
3402No options
3403First char = 'a'
3404Need char = 'z' (caseless)
3405
3406/(?=a)(?=b)/I
3407Capturing subpattern count = 0
3408No options
3409First char = 'a'
3410No need char
3411
3412/(?=.)a/I
3413Capturing subpattern count = 0
3414No options
3415First char = 'a'
3416No need char
3417
3418/((?=abcda)a)/I
3419Capturing subpattern count = 1
3420No options
3421First char = 'a'
3422Need char = 'a'
3423
3424/((?=abcda)ab)/I
3425Capturing subpattern count = 1
3426No options
3427First char = 'a'
3428Need char = 'b'
3429
3430/()a/I
3431Capturing subpattern count = 1
3432No options
3433No first char
3434Need char = 'a'
3435
3436/(?(1)ab|ac)(.)/I
3437Capturing subpattern count = 1
3438No options
3439First char = 'a'
3440No need char
3441
3442/(?(1)abz|acz)(.)/I
3443Capturing subpattern count = 1
3444No options
3445First char = 'a'
3446Need char = 'z'
3447
3448/(?(1)abz)(.)/I
3449Capturing subpattern count = 1
3450No options
3451No first char
3452No need char
3453
3454/(?(1)abz)(1)23/I
3455Capturing subpattern count = 1
3456No options
3457No first char
3458Need char = '3'
3459
3460/(a)+/I
3461Capturing subpattern count = 1
3462No options
3463First char = 'a'
3464No need char
3465
3466/(a){2,3}/I
3467Capturing subpattern count = 1
3468No options
3469First char = 'a'
3470Need char = 'a'
3471
3472/(a)*/I
3473Capturing subpattern count = 1
3474No options
3475No first char
3476No need char
3477
3478/[a]/I
3479Capturing subpattern count = 0
3480No options
3481First char = 'a'
3482No need char
3483
3484/[ab]/I
3485Capturing subpattern count = 0
3486No options
3487No first char
3488No need char
3489
3490/[ab]/IS
3491Capturing subpattern count = 0
3492No options
3493No first char
3494No need char
3495Subject length lower bound = 1
3496Starting byte set: a b
3497
3498/[^a]/I
3499Capturing subpattern count = 0
3500No options
3501No first char
3502No need char
3503
3504/\d456/I
3505Capturing subpattern count = 0
3506No options
3507No first char
3508Need char = '6'
3509
3510/\d456/IS
3511Capturing subpattern count = 0
3512No options
3513No first char
3514Need char = '6'
3515Subject length lower bound = 4
3516Starting byte set: 0 1 2 3 4 5 6 7 8 9
3517
3518/a^b/I
3519Capturing subpattern count = 0
3520No options
3521First char = 'a'
3522Need char = 'b'
3523
3524/^a/Im
3525Capturing subpattern count = 0
3526Options: multiline
3527First char at start or follows newline
3528Need char = 'a'
3529  abcde
3530 0: a
3531  xy\nabc
3532 0: a
3533  *** Failers
3534No match
3535  xyabc
3536No match
3537
3538/c|abc/I
3539Capturing subpattern count = 0
3540No options
3541No first char
3542Need char = 'c'
3543
3544/(?i)[ab]/IS
3545Capturing subpattern count = 0
3546Options: caseless
3547No first char
3548No need char
3549Subject length lower bound = 1
3550Starting byte set: A B a b
3551
3552/[ab](?i)cd/IS
3553Capturing subpattern count = 0
3554No options
3555No first char
3556Need char = 'd' (caseless)
3557Subject length lower bound = 3
3558Starting byte set: a b
3559
3560/abc(?C)def/I
3561Capturing subpattern count = 0
3562No options
3563First char = 'a'
3564Need char = 'f'
3565    abcdef
3566--->abcdef
3567  0 ^  ^       d
3568 0: abcdef
3569    1234abcdef
3570--->1234abcdef
3571  0     ^  ^       d
3572 0: abcdef
3573    *** Failers
3574No match
3575    abcxyz
3576No match
3577    abcxyzf
3578--->abcxyzf
3579  0 ^  ^        d
3580No match
3581
3582/abc(?C)de(?C1)f/I
3583Capturing subpattern count = 0
3584No options
3585First char = 'a'
3586Need char = 'f'
3587    123abcdef
3588--->123abcdef
3589  0    ^  ^       d
3590  1    ^    ^     f
3591 0: abcdef
3592
3593/(?C1)\dabc(?C2)def/I
3594Capturing subpattern count = 0
3595No options
3596No first char
3597Need char = 'f'
3598    1234abcdef
3599--->1234abcdef
3600  1 ^              \d
3601  1  ^             \d
3602  1   ^            \d
3603  1    ^           \d
3604  2    ^   ^       d
3605 0: 4abcdef
3606    *** Failers
3607No match
3608    abcdef
3609--->abcdef
3610  1 ^          \d
3611  1  ^         \d
3612  1   ^        \d
3613  1    ^       \d
3614  1     ^      \d
3615  1      ^     \d
3616No match
3617
3618/(?C255)ab/I
3619Capturing subpattern count = 0
3620No options
3621First char = 'a'
3622Need char = 'b'
3623
3624/(?C256)ab/I
3625Failed: number after (?C is > 255 at offset 6
3626
3627/(?Cab)xx/I
3628Failed: closing ) for (?C expected at offset 3
3629
3630/(?C12vr)x/I
3631Failed: closing ) for (?C expected at offset 5
3632
3633/abc(?C)def/I
3634Capturing subpattern count = 0
3635No options
3636First char = 'a'
3637Need char = 'f'
3638    *** Failers
3639No match
3640    \x83\x0\x61bcdef
3641--->\x83\x00abcdef
3642  0         ^  ^       d
3643 0: abcdef
3644
3645/(abc)(?C)de(?C1)f/I
3646Capturing subpattern count = 1
3647No options
3648First char = 'a'
3649Need char = 'f'
3650    123abcdef
3651--->123abcdef
3652  0    ^  ^       d
3653  1    ^    ^     f
3654 0: abcdef
3655 1: abc
3656    123abcdef\C+
3657Callout 0: last capture = 1
3658 0: <unset>
3659 1: abc
3660--->123abcdef
3661       ^  ^       d
3662Callout 1: last capture = 1
3663 0: <unset>
3664 1: abc
3665--->123abcdef
3666       ^    ^     f
3667 0: abcdef
3668 1: abc
3669    123abcdef\C-
3670 0: abcdef
3671 1: abc
3672    *** Failers
3673No match
3674    123abcdef\C!1
3675--->123abcdef
3676  0    ^  ^       d
3677  1    ^    ^     f
3678No match
3679
3680/(?C0)(abc(?C1))*/I
3681Capturing subpattern count = 1
3682No options
3683No first char
3684No need char
3685    abcabcabc
3686--->abcabcabc
3687  0 ^             (abc(?C1))*
3688  1 ^  ^          )
3689  1 ^     ^       )
3690  1 ^        ^    )
3691 0: abcabcabc
3692 1: abc
3693    abcabc\C!1!3
3694--->abcabc
3695  0 ^          (abc(?C1))*
3696  1 ^  ^       )
3697  1 ^     ^    )
3698 0: abcabc
3699 1: abc
3700    *** Failers
3701--->*** Failers
3702  0 ^               (abc(?C1))*
3703 0:
3704    abcabcabc\C!1!3
3705--->abcabcabc
3706  0 ^             (abc(?C1))*
3707  1 ^  ^          )
3708  1 ^     ^       )
3709  1 ^        ^    )
3710 0: abcabc
3711 1: abc
3712
3713/(\d{3}(?C))*/I
3714Capturing subpattern count = 1
3715No options
3716No first char
3717No need char
3718    123\C+
3719Callout 0: last capture = -1
3720 0: <unset>
3721--->123
3722    ^  ^    )
3723 0: 123
3724 1: 123
3725    123456\C+
3726Callout 0: last capture = -1
3727 0: <unset>
3728--->123456
3729    ^  ^       )
3730Callout 0: last capture = 1
3731 0: <unset>
3732 1: 123
3733--->123456
3734    ^     ^    )
3735 0: 123456
3736 1: 456
3737    123456789\C+
3738Callout 0: last capture = -1
3739 0: <unset>
3740--->123456789
3741    ^  ^          )
3742Callout 0: last capture = 1
3743 0: <unset>
3744 1: 123
3745--->123456789
3746    ^     ^       )
3747Callout 0: last capture = 1
3748 0: <unset>
3749 1: 456
3750--->123456789
3751    ^        ^    )
3752 0: 123456789
3753 1: 789
3754
3755/((xyz)(?C)p|(?C1)xyzabc)/I
3756Capturing subpattern count = 2
3757No options
3758First char = 'x'
3759No need char
3760    xyzabc\C+
3761Callout 0: last capture = 2
3762 0: <unset>
3763 1: <unset>
3764 2: xyz
3765--->xyzabc
3766    ^  ^       p
3767Callout 1: last capture = -1
3768 0: <unset>
3769--->xyzabc
3770    ^          x
3771 0: xyzabc
3772 1: xyzabc
3773
3774/(X)((xyz)(?C)p|(?C1)xyzabc)/I
3775Capturing subpattern count = 3
3776No options
3777First char = 'X'
3778Need char = 'x'
3779    Xxyzabc\C+
3780Callout 0: last capture = 3
3781 0: <unset>
3782 1: X
3783 2: <unset>
3784 3: xyz
3785--->Xxyzabc
3786    ^   ^       p
3787Callout 1: last capture = 1
3788 0: <unset>
3789 1: X
3790--->Xxyzabc
3791    ^^          x
3792 0: Xxyzabc
3793 1: X
3794 2: xyzabc
3795
3796/(?=(abc))(?C)abcdef/I
3797Capturing subpattern count = 1
3798No options
3799First char = 'a'
3800Need char = 'f'
3801    abcdef\C+
3802Callout 0: last capture = 1
3803 0: <unset>
3804 1: abc
3805--->abcdef
3806    ^          a
3807 0: abcdef
3808 1: abc
3809
3810/(?!(abc)(?C1)d)(?C2)abcxyz/I
3811Capturing subpattern count = 1
3812No options
3813First char = 'a'
3814Need char = 'z'
3815    abcxyz\C+
3816Callout 1: last capture = 1
3817 0: <unset>
3818 1: abc
3819--->abcxyz
3820    ^  ^       d
3821Callout 2: last capture = -1
3822 0: <unset>
3823--->abcxyz
3824    ^          a
3825 0: abcxyz
3826
3827/(?<=(abc)(?C))xyz/I
3828Capturing subpattern count = 1
3829No options
3830First char = 'x'
3831Need char = 'z'
3832   abcxyz\C+
3833Callout 0: last capture = 1
3834 0: <unset>
3835 1: abc
3836--->abcxyz
3837       ^       )
3838 0: xyz
3839 1: abc
3840
3841/a(b+)(c*)(?C1)/I
3842Capturing subpattern count = 2
3843No options
3844First char = 'a'
3845Need char = 'b'
3846    abbbbbccc\C*1
3847--->abbbbbccc
3848  1 ^        ^
3849Callout data = 1
3850  1 ^       ^
3851Callout data = 1
3852  1 ^      ^
3853Callout data = 1
3854  1 ^     ^
3855Callout data = 1
3856  1 ^    ^
3857Callout data = 1
3858  1 ^   ^
3859Callout data = 1
3860  1 ^  ^
3861Callout data = 1
3862  1 ^ ^
3863Callout data = 1
3864No match
3865
3866/a(b+?)(c*?)(?C1)/I
3867Capturing subpattern count = 2
3868No options
3869First char = 'a'
3870Need char = 'b'
3871    abbbbbccc\C*1
3872--->abbbbbccc
3873  1 ^ ^
3874Callout data = 1
3875  1 ^  ^
3876Callout data = 1
3877  1 ^   ^
3878Callout data = 1
3879  1 ^    ^
3880Callout data = 1
3881  1 ^     ^
3882Callout data = 1
3883  1 ^      ^
3884Callout data = 1
3885  1 ^       ^
3886Callout data = 1
3887  1 ^        ^
3888Callout data = 1
3889No match
3890
3891/(?C)abc/I
3892Capturing subpattern count = 0
3893No options
3894First char = 'a'
3895Need char = 'c'
3896
3897/(?C)^abc/I
3898Capturing subpattern count = 0
3899Options: anchored
3900No first char
3901No need char
3902
3903/(?C)a|b/IS
3904Capturing subpattern count = 0
3905No options
3906No first char
3907No need char
3908Subject length lower bound = 1
3909Starting byte set: a b
3910
3911/(?R)/I
3912Failed: recursive call could loop indefinitely at offset 3
3913
3914/(a|(?R))/I
3915Failed: recursive call could loop indefinitely at offset 6
3916
3917/(ab|(bc|(de|(?R))))/I
3918Failed: recursive call could loop indefinitely at offset 15
3919
3920/x(ab|(bc|(de|(?R))))/I
3921Capturing subpattern count = 3
3922No options
3923First char = 'x'
3924No need char
3925    xab
3926 0: xab
3927 1: ab
3928    xbc
3929 0: xbc
3930 1: bc
3931 2: bc
3932    xde
3933 0: xde
3934 1: de
3935 2: de
3936 3: de
3937    xxab
3938 0: xxab
3939 1: xab
3940 2: xab
3941 3: xab
3942    xxxab
3943 0: xxxab
3944 1: xxab
3945 2: xxab
3946 3: xxab
3947    *** Failers
3948No match
3949    xyab
3950No match
3951
3952/(ab|(bc|(de|(?1))))/I
3953Failed: recursive call could loop indefinitely at offset 15
3954
3955/x(ab|(bc|(de|(?1)x)x)x)/I
3956Failed: recursive call could loop indefinitely at offset 16
3957
3958/^([^()]|\((?1)*\))*$/I
3959Capturing subpattern count = 1
3960Options: anchored
3961No first char
3962No need char
3963    abc
3964 0: abc
3965 1: c
3966    a(b)c
3967 0: a(b)c
3968 1: c
3969    a(b(c))d
3970 0: a(b(c))d
3971 1: d
3972    *** Failers)
3973No match
3974    a(b(c)d
3975No match
3976
3977/^>abc>([^()]|\((?1)*\))*<xyz<$/I
3978Capturing subpattern count = 1
3979Options: anchored
3980No first char
3981Need char = '<'
3982   >abc>123<xyz<
3983 0: >abc>123<xyz<
3984 1: 3
3985   >abc>1(2)3<xyz<
3986 0: >abc>1(2)3<xyz<
3987 1: 3
3988   >abc>(1(2)3)<xyz<
3989 0: >abc>(1(2)3)<xyz<
3990 1: (1(2)3)
3991
3992/(a(?1)b)/DZ
3993------------------------------------------------------------------
3994        Bra
3995        CBra 1
3996        a
3997        Once
3998        Recurse
3999        Ket
4000        b
4001        Ket
4002        Ket
4003        End
4004------------------------------------------------------------------
4005Capturing subpattern count = 1
4006No options
4007First char = 'a'
4008Need char = 'b'
4009
4010/(a(?1)+b)/DZ
4011------------------------------------------------------------------
4012        Bra
4013        CBra 1
4014        a
4015        Once
4016        Recurse
4017        KetRmax
4018        b
4019        Ket
4020        Ket
4021        End
4022------------------------------------------------------------------
4023Capturing subpattern count = 1
4024No options
4025First char = 'a'
4026Need char = 'b'
4027
4028/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
4029Capturing subpattern count = 2
4030Options: anchored
4031No first char
4032No need char
4033    12
4034 0: 12
4035 1: 12
4036    (((2+2)*-3)-7)
4037 0: (((2+2)*-3)-7)
4038 1: (((2+2)*-3)-7)
4039 2: -
4040    -12
4041 0: -12
4042 1: -12
4043    *** Failers
4044No match
4045    ((2+2)*-3)-7)
4046No match
4047
4048/^(x(y|(?1){2})z)/I
4049Capturing subpattern count = 2
4050Options: anchored
4051No first char
4052No need char
4053    xyz
4054 0: xyz
4055 1: xyz
4056 2: y
4057    xxyzxyzz
4058 0: xxyzxyzz
4059 1: xxyzxyzz
4060 2: xyzxyz
4061    *** Failers
4062No match
4063    xxyzz
4064No match
4065    xxyzxyzxyzz
4066No match
4067
4068/((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/Ix
4069Capturing subpattern count = 2
4070Options: extended
4071First char = '<'
4072Need char = '>'
4073    <>
4074 0: <>
4075 1: <>
4076 2: <>
4077    <abcd>
4078 0: <abcd>
4079 1: <abcd>
4080 2: <abcd>
4081    <abc <123> hij>
4082 0: <abc <123> hij>
4083 1: <abc <123> hij>
4084 2: <abc <123> hij>
4085    <abc <def> hij>
4086 0: <def>
4087 1: <def>
4088 2: <def>
4089    <abc<>def>
4090 0: <abc<>def>
4091 1: <abc<>def>
4092 2: <abc<>def>
4093    <abc<>
4094 0: <>
4095 1: <>
4096 2: <>
4097    *** Failers
4098No match
4099    <abc
4100No match
4101
4102/(?1)/I
4103Failed: reference to non-existent subpattern at offset 3
4104
4105/((?2)(abc)/I
4106Failed: missing ) at offset 10
4107
4108/^(abc)def(?1)/I
4109Capturing subpattern count = 1
4110Options: anchored
4111No first char
4112No need char
4113    abcdefabc
4114 0: abcdefabc
4115 1: abc
4116
4117/^(a|b|c)=(?1)+/I
4118Capturing subpattern count = 1
4119Options: anchored
4120No first char
4121No need char
4122    a=a
4123 0: a=a
4124 1: a
4125    a=b
4126 0: a=b
4127 1: a
4128    a=bc
4129 0: a=bc
4130 1: a
4131
4132/^(a|b|c)=((?1))+/I
4133Capturing subpattern count = 2
4134Options: anchored
4135No first char
4136No need char
4137    a=a
4138 0: a=a
4139 1: a
4140 2: a
4141    a=b
4142 0: a=b
4143 1: a
4144 2: b
4145    a=bc
4146 0: a=bc
4147 1: a
4148 2: c
4149
4150/a(?P<name1>b|c)d(?P<longername2>e)/DZ
4151------------------------------------------------------------------
4152        Bra
4153        a
4154        CBra 1
4155        b
4156        Alt
4157        c
4158        Ket
4159        d
4160        CBra 2
4161        e
4162        Ket
4163        Ket
4164        End
4165------------------------------------------------------------------
4166Capturing subpattern count = 2
4167Named capturing subpatterns:
4168  longername2   2
4169  name1         1
4170No options
4171First char = 'a'
4172Need char = 'e'
4173    abde
4174 0: abde
4175 1: b
4176 2: e
4177    acde
4178 0: acde
4179 1: c
4180 2: e
4181
4182/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ
4183------------------------------------------------------------------
4184        Bra
4185        Bra
4186        a
4187        CBra 1
4188        c
4189        CBra 2
4190        d
4191        Ket
4192        Ket
4193        Ket
4194        CBra 3
4195        a
4196        Ket
4197        Ket
4198        End
4199------------------------------------------------------------------
4200Capturing subpattern count = 3
4201Named capturing subpatterns:
4202  a   3
4203  c   1
4204  d   2
4205No options
4206First char = 'a'
4207Need char = 'a'
4208
4209/(?P<a>a)...(?P=a)bbb(?P>a)d/DZ
4210------------------------------------------------------------------
4211        Bra
4212        CBra 1
4213        a
4214        Ket
4215        Any
4216        Any
4217        Any
4218        \1
4219        bbb
4220        Once
4221        Recurse
4222        Ket
4223        d
4224        Ket
4225        End
4226------------------------------------------------------------------
4227Capturing subpattern count = 1
4228Max back reference = 1
4229Named capturing subpatterns:
4230  a   1
4231No options
4232First char = 'a'
4233Need char = 'd'
4234
4235/^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii
4236Capturing subpattern count = 4
4237Max back reference = 4
4238Named capturing subpatterns:
4239  four    4
4240  one     1
4241  three   3
4242  two     2
4243Options: anchored caseless
4244No first char
4245No need char
4246    1221
4247 0: 1221
4248 1: 1221
4249 2: 1
4250    Satan, oscillate my metallic sonatas!
4251 0: Satan, oscillate my metallic sonatas!
4252 1: <unset>
4253 2: <unset>
4254 3: Satan, oscillate my metallic sonatas
4255 4: S
4256    A man, a plan, a canal: Panama!
4257 0: A man, a plan, a canal: Panama!
4258 1: <unset>
4259 2: <unset>
4260 3: A man, a plan, a canal: Panama
4261 4: A
4262    Able was I ere I saw Elba.
4263 0: Able was I ere I saw Elba.
4264 1: <unset>
4265 2: <unset>
4266 3: Able was I ere I saw Elba
4267 4: A
4268    *** Failers
4269No match
4270    The quick brown fox
4271No match
4272
4273/((?(R)a|b))\1(?1)?/I
4274Capturing subpattern count = 1
4275Max back reference = 1
4276No options
4277No first char
4278No need char
4279  bb
4280 0: bb
4281 1: b
4282  bbaa
4283 0: bba
4284 1: b
4285
4286/(.*)a/Is
4287Capturing subpattern count = 1
4288Options: anchored dotall
4289No first char
4290Need char = 'a'
4291
4292/(.*)a\1/Is
4293Capturing subpattern count = 1
4294Max back reference = 1
4295Options: dotall
4296No first char
4297Need char = 'a'
4298
4299/(.*)a(b)\2/Is
4300Capturing subpattern count = 2
4301Max back reference = 2
4302Options: anchored dotall
4303No first char
4304Need char = 'b'
4305
4306/((.*)a|(.*)b)z/Is
4307Capturing subpattern count = 3
4308Options: anchored dotall
4309No first char
4310Need char = 'z'
4311
4312/((.*)a|(.*)b)z\1/Is
4313Capturing subpattern count = 3
4314Max back reference = 1
4315Options: dotall
4316No first char
4317Need char = 'z'
4318
4319/((.*)a|(.*)b)z\2/Is
4320Capturing subpattern count = 3
4321Max back reference = 2
4322Options: dotall
4323No first char
4324Need char = 'z'
4325
4326/((.*)a|(.*)b)z\3/Is
4327Capturing subpattern count = 3
4328Max back reference = 3
4329Options: dotall
4330No first char
4331Need char = 'z'
4332
4333/((.*)a|^(.*)b)z\3/Is
4334Capturing subpattern count = 3
4335Max back reference = 3
4336Options: anchored dotall
4337No first char
4338Need char = 'z'
4339
4340/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
4341Capturing subpattern count = 31
4342Options: anchored dotall
4343No first char
4344No need char
4345
4346/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
4347Capturing subpattern count = 31
4348Max back reference = 31
4349Options: dotall
4350No first char
4351No need char
4352
4353/(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
4354Capturing subpattern count = 32
4355Max back reference = 32
4356Options: dotall
4357No first char
4358No need char
4359
4360/(a)(bc)/INDZ
4361------------------------------------------------------------------
4362        Bra
4363        Bra
4364        a
4365        Ket
4366        Bra
4367        bc
4368        Ket
4369        Ket
4370        End
4371------------------------------------------------------------------
4372Capturing subpattern count = 0
4373Options: no_auto_capture
4374First char = 'a'
4375Need char = 'c'
4376  abc
4377 0: abc
4378
4379/(?P<one>a)(bc)/INDZ
4380------------------------------------------------------------------
4381        Bra
4382        CBra 1
4383        a
4384        Ket
4385        Bra
4386        bc
4387        Ket
4388        Ket
4389        End
4390------------------------------------------------------------------
4391Capturing subpattern count = 1
4392Named capturing subpatterns:
4393  one   1
4394Options: no_auto_capture
4395First char = 'a'
4396Need char = 'c'
4397  abc
4398 0: abc
4399 1: a
4400
4401/(a)(?P<named>bc)/INDZ
4402------------------------------------------------------------------
4403        Bra
4404        Bra
4405        a
4406        Ket
4407        CBra 1
4408        bc
4409        Ket
4410        Ket
4411        End
4412------------------------------------------------------------------
4413Capturing subpattern count = 1
4414Named capturing subpatterns:
4415  named   1
4416Options: no_auto_capture
4417First char = 'a'
4418Need char = 'c'
4419
4420/(a+)*zz/I
4421Capturing subpattern count = 1
4422No options
4423No first char
4424Need char = 'z'
4425  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
4426Minimum match() limit = 8
4427Minimum match() recursion limit = 6
4428 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
4429 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4430  aaaaaaaaaaaaaz\M
4431Minimum match() limit = 32768
4432Minimum match() recursion limit = 42
4433No match
4434
4435/(aaa(?C1)bbb|ab)/I
4436Capturing subpattern count = 1
4437No options
4438First char = 'a'
4439Need char = 'b'
4440   aaabbb
4441--->aaabbb
4442  1 ^  ^       b
4443 0: aaabbb
4444 1: aaabbb
4445   aaabbb\C*0
4446--->aaabbb
4447  1 ^  ^       b
4448 0: aaabbb
4449 1: aaabbb
4450   aaabbb\C*1
4451--->aaabbb
4452  1 ^  ^       b
4453Callout data = 1
4454 0: ab
4455 1: ab
4456   aaabbb\C*-1
4457--->aaabbb
4458  1 ^  ^       b
4459Callout data = -1
4460No match
4461
4462/ab(?P<one>cd)ef(?P<two>gh)/I
4463Capturing subpattern count = 2
4464Named capturing subpatterns:
4465  one   1
4466  two   2
4467No options
4468First char = 'a'
4469Need char = 'h'
4470    abcdefgh
4471 0: abcdefgh
4472 1: cd
4473 2: gh
4474    abcdefgh\C1\Gtwo
4475 0: abcdefgh
4476 1: cd
4477 2: gh
4478 1C cd (2)
4479  G gh (2) two
4480    abcdefgh\Cone\Ctwo
4481 0: abcdefgh
4482 1: cd
4483 2: gh
4484  C cd (2) one
4485  C gh (2) two
4486    abcdefgh\Cthree
4487no parentheses with name "three"
4488 0: abcdefgh
4489 1: cd
4490 2: gh
4491copy substring three failed -7
4492
4493/(?P<Tes>)(?P<Test>)/DZ
4494------------------------------------------------------------------
4495        Bra
4496        CBra 1
4497        Ket
4498        CBra 2
4499        Ket
4500        Ket
4501        End
4502------------------------------------------------------------------
4503Capturing subpattern count = 2
4504Named capturing subpatterns:
4505  Tes    1
4506  Test   2
4507No options
4508No first char
4509No need char
4510
4511/(?P<Test>)(?P<Tes>)/DZ
4512------------------------------------------------------------------
4513        Bra
4514        CBra 1
4515        Ket
4516        CBra 2
4517        Ket
4518        Ket
4519        End
4520------------------------------------------------------------------
4521Capturing subpattern count = 2
4522Named capturing subpatterns:
4523  Tes    2
4524  Test   1
4525No options
4526No first char
4527No need char
4528
4529/(?P<Z>zz)(?P<A>aa)/I
4530Capturing subpattern count = 2
4531Named capturing subpatterns:
4532  A   2
4533  Z   1
4534No options
4535First char = 'z'
4536Need char = 'a'
4537    zzaa\CZ
4538 0: zzaa
4539 1: zz
4540 2: aa
4541  C zz (2) Z
4542    zzaa\CA
4543 0: zzaa
4544 1: zz
4545 2: aa
4546  C aa (2) A
4547
4548/(?P<x>eks)(?P<x>eccs)/I
4549Failed: two named subpatterns have the same name at offset 15
4550
4551/(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
4552Failed: two named subpatterns have the same name at offset 30
4553
4554"\[((?P<elem>\d+)(,(?P>elem))*)\]"I
4555Capturing subpattern count = 3
4556Named capturing subpatterns:
4557  elem   2
4558No options
4559First char = '['
4560Need char = ']'
4561    [10,20,30,5,5,4,4,2,43,23,4234]
4562 0: [10,20,30,5,5,4,4,2,43,23,4234]
4563 1: 10,20,30,5,5,4,4,2,43,23,4234
4564 2: 10
4565 3: ,4234
4566    *** Failers
4567No match
4568    []
4569No match
4570
4571"\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
4572Capturing subpattern count = 3
4573Named capturing subpatterns:
4574  elem   2
4575No options
4576First char = '['
4577Need char = ']'
4578    [10,20,30,5,5,4,4,2,43,23,4234]
4579 0: [10,20,30,5,5,4,4,2,43,23,4234]
4580 1: 10,20,30,5,5,4,4,2,43,23,4234
4581 2: 10
4582 3: ,4234
4583    []
4584 0: []
4585
4586/(a(b(?2)c))?/DZ
4587------------------------------------------------------------------
4588        Bra
4589        Brazero
4590        CBra 1
4591        a
4592        CBra 2
4593        b
4594        Once
4595        Recurse
4596        Ket
4597        c
4598        Ket
4599        Ket
4600        Ket
4601        End
4602------------------------------------------------------------------
4603Capturing subpattern count = 2
4604No options
4605No first char
4606No need char
4607
4608/(a(b(?2)c))*/DZ
4609------------------------------------------------------------------
4610        Bra
4611        Brazero
4612        CBra 1
4613        a
4614        CBra 2
4615        b
4616        Once
4617        Recurse
4618        Ket
4619        c
4620        Ket
4621        KetRmax
4622        Ket
4623        End
4624------------------------------------------------------------------
4625Capturing subpattern count = 2
4626No options
4627No first char
4628No need char
4629
4630/(a(b(?2)c)){0,2}/DZ
4631------------------------------------------------------------------
4632        Bra
4633        Brazero
4634        Bra
4635        CBra 1
4636        a
4637        CBra 2
4638        b
4639        Once
4640        Recurse
4641        Ket
4642        c
4643        Ket
4644        Ket
4645        Brazero
4646        CBra 1
4647        a
4648        CBra 2
4649        b
4650        Once
4651        Recurse
4652        Ket
4653        c
4654        Ket
4655        Ket
4656        Ket
4657        Ket
4658        End
4659------------------------------------------------------------------
4660Capturing subpattern count = 2
4661No options
4662No first char
4663No need char
4664
4665/[ab]{1}+/DZ
4666------------------------------------------------------------------
4667        Bra
4668        Once
4669        [ab]{1,1}
4670        Ket
4671        Ket
4672        End
4673------------------------------------------------------------------
4674Capturing subpattern count = 0
4675No options
4676No first char
4677No need char
4678
4679/((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
4680Capturing subpattern count = 3
4681Options: caseless
4682No first char
4683Need char = 'g' (caseless)
4684     Baby Bjorn Active Carrier - With free SHIPPING!!
4685 0: Baby Bjorn Active Carrier - With free SHIPPING!!
4686 1: Baby Bjorn Active Carrier - With free SHIPPING!!
4687
4688/((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS
4689Capturing subpattern count = 3
4690Options: caseless
4691No first char
4692Need char = 'g' (caseless)
4693Subject length lower bound = 8
4694No set of starting bytes
4695     Baby Bjorn Active Carrier - With free SHIPPING!!
4696 0: Baby Bjorn Active Carrier - With free SHIPPING!!
4697 1: Baby Bjorn Active Carrier - With free SHIPPING!!
4698
4699/a*.*b/ISDZ
4700------------------------------------------------------------------
4701        Bra
4702        a*
4703        Any*
4704        b
4705        Ket
4706        End
4707------------------------------------------------------------------
4708Capturing subpattern count = 0
4709No options
4710No first char
4711Need char = 'b'
4712Subject length lower bound = 1
4713No set of starting bytes
4714
4715/(a|b)*.?c/ISDZ
4716------------------------------------------------------------------
4717        Bra
4718        Brazero
4719        CBra 1
4720        a
4721        Alt
4722        b
4723        KetRmax
4724        Any?
4725        c
4726        Ket
4727        End
4728------------------------------------------------------------------
4729Capturing subpattern count = 1
4730No options
4731No first char
4732Need char = 'c'
4733Subject length lower bound = 1
4734No set of starting bytes
4735
4736/abc(?C255)de(?C)f/DZ
4737------------------------------------------------------------------
4738        Bra
4739        abc
4740        Callout 255 10 1
4741        de
4742        Callout 0 16 1
4743        f
4744        Ket
4745        End
4746------------------------------------------------------------------
4747Capturing subpattern count = 0
4748No options
4749First char = 'a'
4750Need char = 'f'
4751
4752/abcde/ICDZ
4753------------------------------------------------------------------
4754        Bra
4755        Callout 255 0 1
4756        a
4757        Callout 255 1 1
4758        b
4759        Callout 255 2 1
4760        c
4761        Callout 255 3 1
4762        d
4763        Callout 255 4 1
4764        e
4765        Callout 255 5 0
4766        Ket
4767        End
4768------------------------------------------------------------------
4769Capturing subpattern count = 0
4770Options:
4771First char = 'a'
4772Need char = 'e'
4773  abcde
4774--->abcde
4775 +0 ^         a
4776 +1 ^^        b
4777 +2 ^ ^       c
4778 +3 ^  ^      d
4779 +4 ^   ^     e
4780 +5 ^    ^
4781 0: abcde
4782  abcdfe
4783--->abcdfe
4784 +0 ^          a
4785 +1 ^^         b
4786 +2 ^ ^        c
4787 +3 ^  ^       d
4788 +4 ^   ^      e
4789No match
4790
4791/a*b/ICDZ
4792------------------------------------------------------------------
4793        Bra
4794        Callout 255 0 2
4795        a*+
4796        Callout 255 2 1
4797        b
4798        Callout 255 3 0
4799        Ket
4800        End
4801------------------------------------------------------------------
4802Capturing subpattern count = 0
4803Options:
4804No first char
4805Need char = 'b'
4806  ab
4807--->ab
4808 +0 ^      a*
4809 +2 ^^     b
4810 +3 ^ ^
4811 0: ab
4812  aaaab
4813--->aaaab
4814 +0 ^         a*
4815 +2 ^   ^     b
4816 +3 ^    ^
4817 0: aaaab
4818  aaaacb
4819--->aaaacb
4820 +0 ^          a*
4821 +2 ^   ^      b
4822 +0  ^         a*
4823 +2  ^  ^      b
4824 +0   ^        a*
4825 +2   ^ ^      b
4826 +0    ^       a*
4827 +2    ^^      b
4828 +0     ^      a*
4829 +2     ^      b
4830 +0      ^     a*
4831 +2      ^     b
4832 +3      ^^
4833 0: b
4834
4835/a+b/ICDZ
4836------------------------------------------------------------------
4837        Bra
4838        Callout 255 0 2
4839        a++
4840        Callout 255 2 1
4841        b
4842        Callout 255 3 0
4843        Ket
4844        End
4845------------------------------------------------------------------
4846Capturing subpattern count = 0
4847Options:
4848First char = 'a'
4849Need char = 'b'
4850  ab
4851--->ab
4852 +0 ^      a+
4853 +2 ^^     b
4854 +3 ^ ^
4855 0: ab
4856  aaaab
4857--->aaaab
4858 +0 ^         a+
4859 +2 ^   ^     b
4860 +3 ^    ^
4861 0: aaaab
4862  aaaacb
4863--->aaaacb
4864 +0 ^          a+
4865 +2 ^   ^      b
4866 +0  ^         a+
4867 +2  ^  ^      b
4868 +0   ^        a+
4869 +2   ^ ^      b
4870 +0    ^       a+
4871 +2    ^^      b
4872No match
4873
4874/(abc|def)x/ICDZ
4875------------------------------------------------------------------
4876        Bra
4877        Callout 255 0 9
4878        CBra 1
4879        Callout 255 1 1
4880        a
4881        Callout 255 2 1
4882        b
4883        Callout 255 3 1
4884        c
4885        Callout 255 4 0
4886        Alt
4887        Callout 255 5 1
4888        d
4889        Callout 255 6 1
4890        e
4891        Callout 255 7 1
4892        f
4893        Callout 255 8 0
4894        Ket
4895        Callout 255 9 1
4896        x
4897        Callout 255 10 0
4898        Ket
4899        End
4900------------------------------------------------------------------
4901Capturing subpattern count = 1
4902Options:
4903No first char
4904Need char = 'x'
4905  abcx
4906--->abcx
4907 +0 ^        (abc|def)
4908 +1 ^        a
4909 +2 ^^       b
4910 +3 ^ ^      c
4911 +4 ^  ^     |
4912 +9 ^  ^     x
4913+10 ^   ^
4914 0: abcx
4915 1: abc
4916  defx
4917--->defx
4918 +0 ^        (abc|def)
4919 +1 ^        a
4920 +5 ^        d
4921 +6 ^^       e
4922 +7 ^ ^      f
4923 +8 ^  ^     )
4924 +9 ^  ^     x
4925+10 ^   ^
4926 0: defx
4927 1: def
4928  abcdefzx
4929--->abcdefzx
4930 +0 ^            (abc|def)
4931 +1 ^            a
4932 +2 ^^           b
4933 +3 ^ ^          c
4934 +4 ^  ^         |
4935 +9 ^  ^         x
4936 +5 ^            d
4937 +0  ^           (abc|def)
4938 +1  ^           a
4939 +5  ^           d
4940 +0   ^          (abc|def)
4941 +1   ^          a
4942 +5   ^          d
4943 +0    ^         (abc|def)
4944 +1    ^         a
4945 +5    ^         d
4946 +6    ^^        e
4947 +7    ^ ^       f
4948 +8    ^  ^      )
4949 +9    ^  ^      x
4950 +0     ^        (abc|def)
4951 +1     ^        a
4952 +5     ^        d
4953 +0      ^       (abc|def)
4954 +1      ^       a
4955 +5      ^       d
4956 +0       ^      (abc|def)
4957 +1       ^      a
4958 +5       ^      d
4959 +0        ^     (abc|def)
4960 +1        ^     a
4961 +5        ^     d
4962No match
4963
4964/(ab|cd){3,4}/IC
4965Capturing subpattern count = 1
4966Options:
4967No first char
4968No need char
4969  ababab
4970--->ababab
4971 +0 ^          (ab|cd){3,4}
4972 +1 ^          a
4973 +2 ^^         b
4974 +3 ^ ^        |
4975 +1 ^ ^        a
4976 +2 ^  ^       b
4977 +3 ^   ^      |
4978 +1 ^   ^      a
4979 +2 ^    ^     b
4980 +3 ^     ^    |
4981 +1 ^     ^    a
4982 +4 ^     ^    c
4983+12 ^     ^
4984 0: ababab
4985 1: ab
4986  abcdabcd
4987--->abcdabcd
4988 +0 ^            (ab|cd){3,4}
4989 +1 ^            a
4990 +2 ^^           b
4991 +3 ^ ^          |
4992 +1 ^ ^          a
4993 +4 ^ ^          c
4994 +5 ^  ^         d
4995 +6 ^   ^        )
4996 +1 ^   ^        a
4997 +2 ^    ^       b
4998 +3 ^     ^      |
4999 +1 ^     ^      a
5000 +4 ^     ^      c
5001 +5 ^      ^     d
5002 +6 ^       ^    )
5003+12 ^       ^
5004 0: abcdabcd
5005 1: cd
5006  abcdcdcdcdcd
5007--->abcdcdcdcdcd
5008 +0 ^                (ab|cd){3,4}
5009 +1 ^                a
5010 +2 ^^               b
5011 +3 ^ ^              |
5012 +1 ^ ^              a
5013 +4 ^ ^              c
5014 +5 ^  ^             d
5015 +6 ^   ^            )
5016 +1 ^   ^            a
5017 +4 ^   ^            c
5018 +5 ^    ^           d
5019 +6 ^     ^          )
5020 +1 ^     ^          a
5021 +4 ^     ^          c
5022 +5 ^      ^         d
5023 +6 ^       ^        )
5024+12 ^       ^
5025 0: abcdcdcd
5026 1: cd
5027
5028/([ab]{,4}c|xy)/ICDZ
5029------------------------------------------------------------------
5030        Bra
5031        Callout 255 0 14
5032        CBra 1
5033        Callout 255 1 4
5034        [ab]
5035        Callout 255 5 1
5036        {
5037        Callout 255 6 1
5038        ,
5039        Callout 255 7 1
5040        4
5041        Callout 255 8 1
5042        }
5043        Callout 255 9 1
5044        c
5045        Callout 255 10 0
5046        Alt
5047        Callout 255 11 1
5048        x
5049        Callout 255 12 1
5050        y
5051        Callout 255 13 0
5052        Ket
5053        Callout 255 14 0
5054        Ket
5055        End
5056------------------------------------------------------------------
5057Capturing subpattern count = 1
5058Options:
5059No first char
5060No need char
5061    Note: that { does NOT introduce a quantifier
5062--->Note: that { does NOT introduce a quantifier
5063 +0 ^                                                ([ab]{,4}c|xy)
5064 +1 ^                                                [ab]
5065+11 ^                                                x
5066 +0  ^                                               ([ab]{,4}c|xy)
5067 +1  ^                                               [ab]
5068+11  ^                                               x
5069 +0   ^                                              ([ab]{,4}c|xy)
5070 +1   ^                                              [ab]
5071+11   ^                                              x
5072 +0    ^                                             ([ab]{,4}c|xy)
5073 +1    ^                                             [ab]
5074+11    ^                                             x
5075 +0     ^                                            ([ab]{,4}c|xy)
5076 +1     ^                                            [ab]
5077+11     ^                                            x
5078 +0      ^                                           ([ab]{,4}c|xy)
5079 +1      ^                                           [ab]
5080+11      ^                                           x
5081 +0       ^                                          ([ab]{,4}c|xy)
5082 +1       ^                                          [ab]
5083+11       ^                                          x
5084 +0        ^                                         ([ab]{,4}c|xy)
5085 +1        ^                                         [ab]
5086+11        ^                                         x
5087 +0         ^                                        ([ab]{,4}c|xy)
5088 +1         ^                                        [ab]
5089 +5         ^^                                       {
5090+11         ^                                        x
5091 +0          ^                                       ([ab]{,4}c|xy)
5092 +1          ^                                       [ab]
5093+11          ^                                       x
5094 +0           ^                                      ([ab]{,4}c|xy)
5095 +1           ^                                      [ab]
5096+11           ^                                      x
5097 +0            ^                                     ([ab]{,4}c|xy)
5098 +1            ^                                     [ab]
5099+11            ^                                     x
5100 +0             ^                                    ([ab]{,4}c|xy)
5101 +1             ^                                    [ab]
5102+11             ^                                    x
5103 +0              ^                                   ([ab]{,4}c|xy)
5104 +1              ^                                   [ab]
5105+11              ^                                   x
5106 +0               ^                                  ([ab]{,4}c|xy)
5107 +1               ^                                  [ab]
5108+11               ^                                  x
5109 +0                ^                                 ([ab]{,4}c|xy)
5110 +1                ^                                 [ab]
5111+11                ^                                 x
5112 +0                 ^                                ([ab]{,4}c|xy)
5113 +1                 ^                                [ab]
5114+11                 ^                                x
5115 +0                  ^                               ([ab]{,4}c|xy)
5116 +1                  ^                               [ab]
5117+11                  ^                               x
5118 +0                   ^                              ([ab]{,4}c|xy)
5119 +1                   ^                              [ab]
5120+11                   ^                              x
5121 +0                    ^                             ([ab]{,4}c|xy)
5122 +1                    ^                             [ab]
5123+11                    ^                             x
5124 +0                     ^                            ([ab]{,4}c|xy)
5125 +1                     ^                            [ab]
5126+11                     ^                            x
5127 +0                      ^                           ([ab]{,4}c|xy)
5128 +1                      ^                           [ab]
5129+11                      ^                           x
5130 +0                       ^                          ([ab]{,4}c|xy)
5131 +1                       ^                          [ab]
5132+11                       ^                          x
5133 +0                        ^                         ([ab]{,4}c|xy)
5134 +1                        ^                         [ab]
5135+11                        ^                         x
5136 +0                         ^                        ([ab]{,4}c|xy)
5137 +1                         ^                        [ab]
5138+11                         ^                        x
5139 +0                          ^                       ([ab]{,4}c|xy)
5140 +1                          ^                       [ab]
5141+11                          ^                       x
5142 +0                           ^                      ([ab]{,4}c|xy)
5143 +1                           ^                      [ab]
5144+11                           ^                      x
5145 +0                            ^                     ([ab]{,4}c|xy)
5146 +1                            ^                     [ab]
5147+11                            ^                     x
5148 +0                             ^                    ([ab]{,4}c|xy)
5149 +1                             ^                    [ab]
5150+11                             ^                    x
5151 +0                              ^                   ([ab]{,4}c|xy)
5152 +1                              ^                   [ab]
5153+11                              ^                   x
5154 +0                               ^                  ([ab]{,4}c|xy)
5155 +1                               ^                  [ab]
5156+11                               ^                  x
5157 +0                                ^                 ([ab]{,4}c|xy)
5158 +1                                ^                 [ab]
5159+11                                ^                 x
5160 +0                                 ^                ([ab]{,4}c|xy)
5161 +1                                 ^                [ab]
5162 +5                                 ^^               {
5163+11                                 ^                x
5164 +0                                  ^               ([ab]{,4}c|xy)
5165 +1                                  ^               [ab]
5166+11                                  ^               x
5167 +0                                   ^              ([ab]{,4}c|xy)
5168 +1                                   ^              [ab]
5169+11                                   ^              x
5170 +0                                    ^             ([ab]{,4}c|xy)
5171 +1                                    ^             [ab]
5172+11                                    ^             x
5173 +0                                     ^            ([ab]{,4}c|xy)
5174 +1                                     ^            [ab]
5175 +5                                     ^^           {
5176+11                                     ^            x
5177 +0                                      ^           ([ab]{,4}c|xy)
5178 +1                                      ^           [ab]
5179+11                                      ^           x
5180 +0                                       ^          ([ab]{,4}c|xy)
5181 +1                                       ^          [ab]
5182+11                                       ^          x
5183 +0                                        ^         ([ab]{,4}c|xy)
5184 +1                                        ^         [ab]
5185+11                                        ^         x
5186 +0                                         ^        ([ab]{,4}c|xy)
5187 +1                                         ^        [ab]
5188+11                                         ^        x
5189 +0                                          ^       ([ab]{,4}c|xy)
5190 +1                                          ^       [ab]
5191+11                                          ^       x
5192 +0                                           ^      ([ab]{,4}c|xy)
5193 +1                                           ^      [ab]
5194+11                                           ^      x
5195 +0                                            ^     ([ab]{,4}c|xy)
5196 +1                                            ^     [ab]
5197+11                                            ^     x
5198 +0                                             ^    ([ab]{,4}c|xy)
5199 +1                                             ^    [ab]
5200+11                                             ^    x
5201No match
5202
5203/([ab]{1,4}c|xy){4,5}?123/ICDZ
5204------------------------------------------------------------------
5205        Bra
5206        Callout 255 0 21
5207        CBra 1
5208        Callout 255 1 9
5209        [ab]{1,4}
5210        Callout 255 10 1
5211        c
5212        Callout 255 11 0
5213        Alt
5214        Callout 255 12 1
5215        x
5216        Callout 255 13 1
5217        y
5218        Callout 255 14 0
5219        Ket
5220        CBra 1
5221        Callout 255 1 9
5222        [ab]{1,4}
5223        Callout 255 10 1
5224        c
5225        Callout 255 11 0
5226        Alt
5227        Callout 255 12 1
5228        x
5229        Callout 255 13 1
5230        y
5231        Callout 255 14 0
5232        Ket
5233        CBra 1
5234        Callout 255 1 9
5235        [ab]{1,4}
5236        Callout 255 10 1
5237        c
5238        Callout 255 11 0
5239        Alt
5240        Callout 255 12 1
5241        x
5242        Callout 255 13 1
5243        y
5244        Callout 255 14 0
5245        Ket
5246        CBra 1
5247        Callout 255 1 9
5248        [ab]{1,4}
5249        Callout 255 10 1
5250        c
5251        Callout 255 11 0
5252        Alt
5253        Callout 255 12 1
5254        x
5255        Callout 255 13 1
5256        y
5257        Callout 255 14 0
5258        Ket
5259        Braminzero
5260        CBra 1
5261        Callout 255 1 9
5262        [ab]{1,4}
5263        Callout 255 10 1
5264        c
5265        Callout 255 11 0
5266        Alt
5267        Callout 255 12 1
5268        x
5269        Callout 255 13 1
5270        y
5271        Callout 255 14 0
5272        Ket
5273        Callout 255 21 1
5274        1
5275        Callout 255 22 1
5276        2
5277        Callout 255 23 1
5278        3
5279        Callout 255 24 0
5280        Ket
5281        End
5282------------------------------------------------------------------
5283Capturing subpattern count = 1
5284Options:
5285No first char
5286Need char = '3'
5287    aacaacaacaacaac123
5288--->aacaacaacaacaac123
5289 +0 ^                      ([ab]{1,4}c|xy){4,5}?
5290 +1 ^                      [ab]{1,4}
5291+10 ^ ^                    c
5292+11 ^  ^                   |
5293 +1 ^  ^                   [ab]{1,4}
5294+10 ^    ^                 c
5295+11 ^     ^                |
5296 +1 ^     ^                [ab]{1,4}
5297+10 ^       ^              c
5298+11 ^        ^             |
5299 +1 ^        ^             [ab]{1,4}
5300+10 ^          ^           c
5301+11 ^           ^          |
5302+21 ^           ^          1
5303 +1 ^           ^          [ab]{1,4}
5304+10 ^             ^        c
5305+11 ^              ^       |
5306+21 ^              ^       1
5307+22 ^               ^      2
5308+23 ^                ^     3
5309+24 ^                 ^
5310 0: aacaacaacaacaac123
5311 1: aac
5312
5313/\b.*/I
5314Capturing subpattern count = 0
5315No options
5316No first char
5317No need char
5318  ab cd\>1
5319 0:  cd
5320
5321/\b.*/Is
5322Capturing subpattern count = 0
5323Options: dotall
5324No first char
5325No need char
5326  ab cd\>1
5327 0:  cd
5328
5329/(?!.bcd).*/I
5330Capturing subpattern count = 0
5331No options
5332No first char
5333No need char
5334  Xbcd12345
5335 0: bcd12345
5336
5337/abcde/I
5338Capturing subpattern count = 0
5339No options
5340First char = 'a'
5341Need char = 'e'
5342    ab\P
5343Partial match: ab
5344    abc\P
5345Partial match: abc
5346    abcd\P
5347Partial match: abcd
5348    abcde\P
5349 0: abcde
5350    the quick brown abc\P
5351Partial match: abc
5352    ** Failers\P
5353No match
5354    the quick brown abxyz fox\P
5355No match
5356
5357"^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
5358Capturing subpattern count = 3
5359Options: anchored
5360No first char
5361Need char = '/'
5362    13/05/04\P
5363 0: 13/05/04
5364 1: 13
5365 2: 05
5366    13/5/2004\P
5367 0: 13/5/2004
5368 1: 13
5369 2: 5
5370 3: 20
5371    02/05/09\P
5372 0: 02/05/09
5373 1: 02
5374 2: 05
5375    1\P
5376Partial match: 1
5377    1/2\P
5378Partial match: 1/2
5379    1/2/0\P
5380Partial match: 1/2/0
5381    1/2/04\P
5382 0: 1/2/04
5383 1: 1
5384 2: 2
5385    0\P
5386Partial match: 0
5387    02/\P
5388Partial match: 02/
5389    02/0\P
5390Partial match: 02/0
5391    02/1\P
5392Partial match: 02/1
5393    ** Failers\P
5394No match
5395    \P
5396No match
5397    123\P
5398No match
5399    33/4/04\P
5400No match
5401    3/13/04\P
5402No match
5403    0/1/2003\P
5404No match
5405    0/\P
5406No match
5407    02/0/\P
5408No match
5409    02/13\P
5410No match
5411
5412/0{0,2}ABC/I
5413Capturing subpattern count = 0
5414No options
5415No first char
5416Need char = 'C'
5417
5418/\d{3,}ABC/I
5419Capturing subpattern count = 0
5420No options
5421No first char
5422Need char = 'C'
5423
5424/\d*ABC/I
5425Capturing subpattern count = 0
5426No options
5427No first char
5428Need char = 'C'
5429
5430/[abc]+DE/I
5431Capturing subpattern count = 0
5432No options
5433No first char
5434Need char = 'E'
5435
5436/[abc]?123/I
5437Capturing subpattern count = 0
5438No options
5439No first char
5440Need char = '3'
5441    123\P
5442 0: 123
5443    a\P
5444Partial match: a
5445    b\P
5446Partial match: b
5447    c\P
5448Partial match: c
5449    c12\P
5450Partial match: c12
5451    c123\P
5452 0: c123
5453
5454/^(?:\d){3,5}X/I
5455Capturing subpattern count = 0
5456Options: anchored
5457No first char
5458Need char = 'X'
5459    1\P
5460Partial match: 1
5461    123\P
5462Partial match: 123
5463    123X
5464 0: 123X
5465    1234\P
5466Partial match: 1234
5467    1234X
5468 0: 1234X
5469    12345\P
5470Partial match: 12345
5471    12345X
5472 0: 12345X
5473    *** Failers
5474No match
5475    1X
5476No match
5477    123456\P
5478No match
5479
5480/abc/I>testsavedregex
5481Capturing subpattern count = 0
5482No options
5483First char = 'a'
5484Need char = 'c'
5485Compiled regex written to testsavedregex
5486<testsavedregex
5487Compiled regex loaded from testsavedregex
5488No study data
5489    abc
5490 0: abc
5491    ** Failers
5492No match
5493    bca
5494No match
5495
5496/abc/IF>testsavedregex
5497Capturing subpattern count = 0
5498No options
5499First char = 'a'
5500Need char = 'c'
5501Compiled regex written to testsavedregex
5502<testsavedregex
5503Compiled regex (byte-inverted) loaded from testsavedregex
5504No study data
5505    abc
5506 0: abc
5507    ** Failers
5508No match
5509    bca
5510No match
5511
5512/(a|b)/IS>testsavedregex
5513Capturing subpattern count = 1
5514No options
5515No first char
5516No need char
5517Subject length lower bound = 1
5518Starting byte set: a b
5519Compiled regex written to testsavedregex
5520Study data written to testsavedregex
5521<testsavedregex
5522Compiled regex loaded from testsavedregex
5523Study data loaded from testsavedregex
5524    abc
5525 0: a
5526 1: a
5527    ** Failers
5528 0: a
5529 1: a
5530    def
5531No match
5532
5533/(a|b)/ISF>testsavedregex
5534Capturing subpattern count = 1
5535No options
5536No first char
5537No need char
5538Subject length lower bound = 1
5539Starting byte set: a b
5540Compiled regex written to testsavedregex
5541Study data written to testsavedregex
5542<testsavedregex
5543Compiled regex (byte-inverted) loaded from testsavedregex
5544Study data loaded from testsavedregex
5545    abc
5546 0: a
5547 1: a
5548    ** Failers
5549 0: a
5550 1: a
5551    def
5552No match
5553
5554~<(\w+)/?>(.)*</(\1)>~smgI
5555Capturing subpattern count = 3
5556Max back reference = 1
5557Options: multiline dotall
5558First char = '<'
5559Need char = '>'
5560    <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
5561 0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite>
5562 1: seite
5563 2: \x0a
5564 3: seite
5565
5566/^a/IF
5567Capturing subpattern count = 0
5568Options: anchored
5569No first char
5570No need char
5571
5572/line\nbreak/I
5573Capturing subpattern count = 0
5574Contains explicit CR or LF match
5575No options
5576First char = 'l'
5577Need char = 'k'
5578    this is a line\nbreak
5579 0: line\x0abreak
5580    line one\nthis is a line\nbreak in the second line
5581 0: line\x0abreak
5582
5583/line\nbreak/If
5584Capturing subpattern count = 0
5585Contains explicit CR or LF match
5586Options: firstline
5587First char = 'l'
5588Need char = 'k'
5589    this is a line\nbreak
5590 0: line\x0abreak
5591    ** Failers
5592No match
5593    line one\nthis is a line\nbreak in the second line
5594No match
5595
5596/line\nbreak/Imf
5597Capturing subpattern count = 0
5598Contains explicit CR or LF match
5599Options: multiline firstline
5600First char = 'l'
5601Need char = 'k'
5602    this is a line\nbreak
5603 0: line\x0abreak
5604    ** Failers
5605No match
5606    line one\nthis is a line\nbreak in the second line
5607No match
5608
5609/ab.cd/P
5610    ab-cd
5611 0: ab-cd
5612    ab=cd
5613 0: ab=cd
5614    ** Failers
5615No match: POSIX code 17: match failed
5616    ab\ncd
5617No match: POSIX code 17: match failed
5618
5619/ab.cd/Ps
5620    ab-cd
5621 0: ab-cd
5622    ab=cd
5623 0: ab=cd
5624    ab\ncd
5625 0: ab\x0acd
5626
5627/(?i)(?-i)AbCd/I
5628Capturing subpattern count = 0
5629No options
5630First char = 'A'
5631Need char = 'd'
5632    AbCd
5633 0: AbCd
5634    ** Failers
5635No match
5636    abcd
5637No match
5638
5639/a{11111111111111111111}/I
5640Failed: number too big in {} quantifier at offset 22
5641
5642/(){64294967295}/I
5643Failed: number too big in {} quantifier at offset 14
5644
5645/(){2,4294967295}/I
5646Failed: number too big in {} quantifier at offset 15
5647
5648"(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I
5649Capturing subpattern count = 1
5650Max back reference = 1
5651No options
5652First char = 'a' (caseless)
5653Need char = 'B'
5654    abcdefghijklAkB
5655 0: abcdefghijklAkB
5656 1: k
5657
5658"(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I
5659Capturing subpattern count = 12
5660Max back reference = 11
5661Named capturing subpatterns:
5662  n0    1
5663  n1    2
5664  n10  11
5665  n11  12
5666  n2    3
5667  n3    4
5668  n4    5
5669  n5    6
5670  n6    7
5671  n7    8
5672  n8    9
5673  n9   10
5674No options
5675First char = 'a'
5676Need char = 'B'
5677    abcdefghijklAkB
5678 0: abcdefghijklAkB
5679 1: a
5680 2: b
5681 3: c
5682 4: d
5683 5: e
5684 6: f
5685 7: g
5686 8: h
5687 9: i
568810: j
568911: k
569012: l
5691
5692"(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
5693Capturing subpattern count = 12
5694Max back reference = 11
5695No options
5696First char = 'a'
5697Need char = 'B'
5698    abcdefghijklAkB
5699 0: abcdefghijklAkB
5700 1: a
5701 2: b
5702 3: c
5703 4: d
5704 5: e
5705 6: f
5706 7: g
5707 8: h
5708 9: i
570910: j
571011: k
571112: l
5712
5713"(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I
5714Capturing subpattern count = 101
5715Named capturing subpatterns:
5716  name0     1
5717  name1     2
5718  name10   11
5719  name100 101
5720  name11   12
5721  name12   13
5722  name13   14
5723  name14   15
5724  name15   16
5725  name16   17
5726  name17   18
5727  name18   19
5728  name19   20
5729  name2     3
5730  name20   21
5731  name21   22
5732  name22   23
5733  name23   24
5734  name24   25
5735  name25   26
5736  name26   27
5737  name27   28
5738  name28   29
5739  name29   30
5740  name3     4
5741  name30   31
5742  name31   32
5743  name32   33
5744  name33   34
5745  name34   35
5746  name35   36
5747  name36   37
5748  name37   38
5749  name38   39
5750  name39   40
5751  name4     5
5752  name40   41
5753  name41   42
5754  name42   43
5755  name43   44
5756  name44   45
5757  name45   46
5758  name46   47
5759  name47   48
5760  name48   49
5761  name49   50
5762  name5     6
5763  name50   51
5764  name51   52
5765  name52   53
5766  name53   54
5767  name54   55
5768  name55   56
5769  name56   57
5770  name57   58
5771  name58   59
5772  name59   60
5773  name6     7
5774  name60   61
5775  name61   62
5776  name62   63
5777  name63   64
5778  name64   65
5779  name65   66
5780  name66   67
5781  name67   68
5782  name68   69
5783  name69   70
5784  name7     8
5785  name70   71
5786  name71   72
5787  name72   73
5788  name73   74
5789  name74   75
5790  name75   76
5791  name76   77
5792  name77   78
5793  name78   79
5794  name79   80
5795  name8     9
5796  name80   81
5797  name81   82
5798  name82   83
5799  name83   84
5800  name84   85
5801  name85   86
5802  name86   87
5803  name87   88
5804  name88   89
5805  name89   90
5806  name9    10
5807  name90   91
5808  name91   92
5809  name92   93
5810  name93   94
5811  name94   95
5812  name95   96
5813  name96   97
5814  name97   98
5815  name98   99
5816  name99  100
5817No options
5818First char = 'a'
5819Need char = 'a'
5820    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5821Matched, but too many substrings
5822 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5823 1: a
5824 2: a
5825 3: a
5826 4: a
5827 5: a
5828 6: a
5829 7: a
5830 8: a
5831 9: a
583210: a
583311: a
583412: a
583513: a
583614: a
5837
5838"(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I
5839Capturing subpattern count = 101
5840No options
5841First char = 'a'
5842Need char = 'a'
5843    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5844Matched, but too many substrings
5845 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5846 1: a
5847 2: a
5848 3: a
5849 4: a
5850 5: a
5851 6: a
5852 7: a
5853 8: a
5854 9: a
585510: a
585611: a
585712: a
585813: a
585914: a
5860
5861/[^()]*(?:\((?R)\)[^()]*)*/I
5862Capturing subpattern count = 0
5863No options
5864No first char
5865No need char
5866    (this(and)that
5867 0:
5868    (this(and)that)
5869 0: (this(and)that)
5870    (this(and)that)stuff
5871 0: (this(and)that)stuff
5872
5873/[^()]*(?:\((?>(?R))\)[^()]*)*/I
5874Capturing subpattern count = 0
5875No options
5876No first char
5877No need char
5878    (this(and)that
5879 0:
5880    (this(and)that)
5881 0: (this(and)that)
5882
5883/[^()]*(?:\((?R)\))*[^()]*/I
5884Capturing subpattern count = 0
5885No options
5886No first char
5887No need char
5888    (this(and)that
5889 0:
5890    (this(and)that)
5891 0: (this(and)that)
5892
5893/(?:\((?R)\))*[^()]*/I
5894Capturing subpattern count = 0
5895No options
5896No first char
5897No need char
5898    (this(and)that
5899 0:
5900    (this(and)that)
5901 0:
5902    ((this))
5903 0: ((this))
5904
5905/(?:\((?R)\))|[^()]*/I
5906Capturing subpattern count = 0
5907No options
5908No first char
5909No need char
5910    (this(and)that
5911 0:
5912    (this(and)that)
5913 0:
5914    (this)
5915 0: (this)
5916    ((this))
5917 0: ((this))
5918
5919/a(b)c/PN
5920    abc
5921Matched with REG_NOSUB
5922
5923/a(?P<name>b)c/PN
5924    abc
5925Matched with REG_NOSUB
5926
5927/\x{100}/I
5928Failed: character value in \x{...} sequence is too large at offset 6
5929
5930/\x{0000ff}/I
5931Capturing subpattern count = 0
5932No options
5933First char = 255
5934No need char
5935
5936/^((?P<A>a1)|(?P<A>a2)b)/I
5937Failed: two named subpatterns have the same name at offset 17
5938
5939/^((?P<A>a1)|(?P<A>a2)b)/IJ
5940Capturing subpattern count = 3
5941Named capturing subpatterns:
5942  A   2
5943  A   3
5944Options: anchored dupnames
5945No first char
5946No need char
5947    a1b\CA
5948 0: a1
5949 1: a1
5950 2: a1
5951  C a1 (2) A
5952    a2b\CA
5953 0: a2b
5954 1: a2b
5955 2: <unset>
5956 3: a2
5957  C a2 (2) A
5958    ** Failers
5959No match
5960    a1b\CZ\CA
5961no parentheses with name "Z"
5962 0: a1
5963 1: a1
5964 2: a1
5965copy substring Z failed -7
5966  C a1 (2) A
5967
5968/^(?P<A>a)(?P<A>b)/IJ
5969Capturing subpattern count = 2
5970Named capturing subpatterns:
5971  A   1
5972  A   2
5973Options: anchored dupnames
5974No first char
5975No need char
5976    ab\CA
5977 0: ab
5978 1: a
5979 2: b
5980  C a (1) A
5981
5982/^(?P<A>a)(?P<A>b)|cd/IJ
5983Capturing subpattern count = 2
5984Named capturing subpatterns:
5985  A   1
5986  A   2
5987Options: dupnames
5988No first char
5989No need char
5990    ab\CA
5991 0: ab
5992 1: a
5993 2: b
5994  C a (1) A
5995    cd\CA
5996 0: cd
5997copy substring A failed -7
5998
5999/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
6000Capturing subpattern count = 4
6001Named capturing subpatterns:
6002  A   1
6003  A   2
6004  A   3
6005  A   4
6006Options: dupnames
6007No first char
6008No need char
6009    cdefgh\CA
6010 0: cdefgh
6011 1: <unset>
6012 2: <unset>
6013 3: ef
6014 4: gh
6015  C ef (2) A
6016
6017/^((?P<A>a1)|(?P<A>a2)b)/IJ
6018Capturing subpattern count = 3
6019Named capturing subpatterns:
6020  A   2
6021  A   3
6022Options: anchored dupnames
6023No first char
6024No need char
6025    a1b\GA
6026 0: a1
6027 1: a1
6028 2: a1
6029  G a1 (2) A
6030    a2b\GA
6031 0: a2b
6032 1: a2b
6033 2: <unset>
6034 3: a2
6035  G a2 (2) A
6036    ** Failers
6037No match
6038    a1b\GZ\GA
6039no parentheses with name "Z"
6040 0: a1
6041 1: a1
6042 2: a1
6043copy substring Z failed -7
6044  G a1 (2) A
6045
6046/^(?P<A>a)(?P<A>b)/IJ
6047Capturing subpattern count = 2
6048Named capturing subpatterns:
6049  A   1
6050  A   2
6051Options: anchored dupnames
6052No first char
6053No need char
6054    ab\GA
6055 0: ab
6056 1: a
6057 2: b
6058  G a (1) A
6059
6060/^(?P<A>a)(?P<A>b)|cd/IJ
6061Capturing subpattern count = 2
6062Named capturing subpatterns:
6063  A   1
6064  A   2
6065Options: dupnames
6066No first char
6067No need char
6068    ab\GA
6069 0: ab
6070 1: a
6071 2: b
6072  G a (1) A
6073    cd\GA
6074 0: cd
6075copy substring A failed -7
6076
6077/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
6078Capturing subpattern count = 4
6079Named capturing subpatterns:
6080  A   1
6081  A   2
6082  A   3
6083  A   4
6084Options: dupnames
6085No first char
6086No need char
6087    cdefgh\GA
6088 0: cdefgh
6089 1: <unset>
6090 2: <unset>
6091 3: ef
6092 4: gh
6093  G ef (2) A
6094
6095/(?J)^((?P<A>a1)|(?P<A>a2)b)/I
6096Capturing subpattern count = 3
6097Named capturing subpatterns:
6098  A   2
6099  A   3
6100Options: anchored dupnames
6101Duplicate name status changes
6102No first char
6103No need char
6104    a1b\CA
6105 0: a1
6106 1: a1
6107 2: a1
6108  C a1 (2) A
6109    a2b\CA
6110 0: a2b
6111 1: a2b
6112 2: <unset>
6113 3: a2
6114  C a2 (2) A
6115
6116/^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I
6117Failed: two named subpatterns have the same name at offset 37
6118
6119/ In this next test, J is not set at the outer level; consequently it isn't
6120set in the pattern's options; consequently pcre_get_named_substring() produces
6121a random value. /Ix
6122Capturing subpattern count = 1
6123Options: extended
6124First char = 'I'
6125Need char = 'e'
6126
6127/^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I
6128Capturing subpattern count = 4
6129Named capturing subpatterns:
6130  A   1
6131  B   2
6132  B   3
6133  C   4
6134Options: anchored
6135Duplicate name status changes
6136No first char
6137No need char
6138    a bc d\CA\CB\CC
6139 0: a bc d
6140 1: a
6141 2: b
6142 3: c
6143 4: d
6144  C a (1) A
6145  C b (1) B
6146  C d (1) C
6147
6148/^(?P<A>a)?(?(A)a|b)/I
6149Capturing subpattern count = 1
6150Named capturing subpatterns:
6151  A   1
6152Options: anchored
6153No first char
6154No need char
6155    aabc
6156 0: aa
6157 1: a
6158    bc
6159 0: b
6160    ** Failers
6161No match
6162    abc
6163No match
6164
6165/(?:(?(ZZ)a|b)(?P<ZZ>X))+/I
6166Capturing subpattern count = 1
6167Named capturing subpatterns:
6168  ZZ   1
6169No options
6170No first char
6171Need char = 'X'
6172    bXaX
6173 0: bXaX
6174 1: X
6175
6176/(?:(?(2y)a|b)(X))+/I
6177Failed: reference to non-existent subpattern at offset 9
6178
6179/(?:(?(ZA)a|b)(?P<ZZ>X))+/I
6180Failed: reference to non-existent subpattern at offset 9
6181
6182/(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I
6183Capturing subpattern count = 1
6184Named capturing subpatterns:
6185  ZZ   1
6186No options
6187No first char
6188Need char = 'X'
6189    bbXaaX
6190 0: bbXaaX
6191 1: X
6192
6193/(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I
6194Capturing subpattern count = 1
6195Named capturing subpatterns:
6196  ZZ   1
6197No options
6198No first char
6199Need char = 'X'
6200    (b)\\Xa\\X
6201 0: (b)\Xa\X
6202 1: X
6203
6204/(?P<ABC/I
6205Failed: syntax error in subpattern name (missing terminator) at offset 7
6206
6207/(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
6208Capturing subpattern count = 1
6209Max back reference = 1
6210Named capturing subpatterns:
6211  A   1
6212No options
6213No first char
6214No need char
6215    bXXaYYaY
6216 0: bXXaYYaY
6217 1: Y
6218    bXYaXXaX
6219 0: bX
6220 1: X
6221
6222/()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
6223Capturing subpattern count = 10
6224Max back reference = 10
6225Named capturing subpatterns:
6226  A  10
6227No options
6228No first char
6229No need char
6230    bXXaYYaY
6231 0: bXXaYYaY
6232 1:
6233 2:
6234 3:
6235 4:
6236 5:
6237 6:
6238 7:
6239 8:
6240 9:
624110: Y
6242
6243/\777/I
6244Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3
6245
6246/\s*,\s*/IS
6247Capturing subpattern count = 0
6248No options
6249No first char
6250Need char = ','
6251Subject length lower bound = 1
6252Starting byte set: \x09 \x0a \x0c \x0d \x20 ,
6253    \x0b,\x0b
6254 0: ,
6255    \x0c,\x0d
6256 0: \x0c,\x0d
6257
6258/^abc/Im
6259Capturing subpattern count = 0
6260Options: multiline
6261First char at start or follows newline
6262Need char = 'c'
6263    xyz\nabc
6264 0: abc
6265    xyz\nabc\<lf>
6266 0: abc
6267    xyz\r\nabc\<lf>
6268 0: abc
6269    xyz\rabc\<cr>
6270 0: abc
6271    xyz\r\nabc\<crlf>
6272 0: abc
6273    ** Failers
6274No match
6275    xyz\nabc\<cr>
6276No match
6277    xyz\r\nabc\<cr>
6278No match
6279    xyz\nabc\<crlf>
6280No match
6281    xyz\rabc\<crlf>
6282No match
6283    xyz\rabc\<lf>
6284No match
6285
6286/abc$/Im<lf>
6287Capturing subpattern count = 0
6288Options: multiline
6289Forced newline sequence: LF
6290First char = 'a'
6291Need char = 'c'
6292    xyzabc
6293 0: abc
6294    xyzabc\n
6295 0: abc
6296    xyzabc\npqr
6297 0: abc
6298    xyzabc\r\<cr>
6299 0: abc
6300    xyzabc\rpqr\<cr>
6301 0: abc
6302    xyzabc\r\n\<crlf>
6303 0: abc
6304    xyzabc\r\npqr\<crlf>
6305 0: abc
6306    ** Failers
6307No match
6308    xyzabc\r
6309No match
6310    xyzabc\rpqr
6311No match
6312    xyzabc\r\n
6313No match
6314    xyzabc\r\npqr
6315No match
6316
6317/^abc/Im<cr>
6318Capturing subpattern count = 0
6319Options: multiline
6320Forced newline sequence: CR
6321First char at start or follows newline
6322Need char = 'c'
6323    xyz\rabcdef
6324 0: abc
6325    xyz\nabcdef\<lf>
6326 0: abc
6327    ** Failers
6328No match
6329    xyz\nabcdef
6330No match
6331
6332/^abc/Im<lf>
6333Capturing subpattern count = 0
6334Options: multiline
6335Forced newline sequence: LF
6336First char at start or follows newline
6337Need char = 'c'
6338    xyz\nabcdef
6339 0: abc
6340    xyz\rabcdef\<cr>
6341 0: abc
6342    ** Failers
6343No match
6344    xyz\rabcdef
6345No match
6346
6347/^abc/Im<crlf>
6348Capturing subpattern count = 0
6349Options: multiline
6350Forced newline sequence: CRLF
6351First char at start or follows newline
6352Need char = 'c'
6353    xyz\r\nabcdef
6354 0: abc
6355    xyz\rabcdef\<cr>
6356 0: abc
6357    ** Failers
6358No match
6359    xyz\rabcdef
6360No match
6361
6362/^abc/Im<bad>
6363Unknown newline type at: <bad>
6364
6365
6366/abc/I
6367Capturing subpattern count = 0
6368No options
6369First char = 'a'
6370Need char = 'c'
6371    xyz\rabc\<bad>
6372Unknown newline type at: <bad>
6373    abc
6374 0: abc
6375
6376/.*/I<lf>
6377Capturing subpattern count = 0
6378Options:
6379Forced newline sequence: LF
6380First char at start or follows newline
6381No need char
6382    abc\ndef
6383 0: abc
6384    abc\rdef
6385 0: abc\x0ddef
6386    abc\r\ndef
6387 0: abc\x0d
6388    \<cr>abc\ndef
6389 0: abc\x0adef
6390    \<cr>abc\rdef
6391 0: abc
6392    \<cr>abc\r\ndef
6393 0: abc
6394    \<crlf>abc\ndef
6395 0: abc\x0adef
6396    \<crlf>abc\rdef
6397 0: abc\x0ddef
6398    \<crlf>abc\r\ndef
6399 0: abc
6400
6401/\w+(.)(.)?def/Is
6402Capturing subpattern count = 2
6403Options: dotall
6404No first char
6405Need char = 'f'
6406    abc\ndef
6407 0: abc\x0adef
6408 1: \x0a
6409    abc\rdef
6410 0: abc\x0ddef
6411 1: \x0d
6412    abc\r\ndef
6413 0: abc\x0d\x0adef
6414 1: \x0d
6415 2: \x0a
6416
6417+((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
6418Capturing subpattern count = 1
6419No options
6420No first char
6421No need char
6422   /* this is a C style comment */\M
6423Minimum match() limit = 120
6424Minimum match() recursion limit = 6
6425 0: /* this is a C style comment */
6426 1: /* this is a C style comment */
6427
6428/(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
6429Capturing subpattern count = 1
6430Named capturing subpatterns:
6431  B   1
6432No options
6433No first char
6434Need char = '.'
6435
6436/()()()()()()()()()()()()()()()()()()()()
6437 ()()()()()()()()()()()()()()()()()()()()
6438 ()()()()()()()()()()()()()()()()()()()()
6439 ()()()()()()()()()()()()()()()()()()()()
6440 ()()()()()()()()()()()()()()()()()()()()
6441 (.(.))/Ix
6442Capturing subpattern count = 102
6443Options: extended
6444No first char
6445No need char
6446    XY\O400
6447 0: XY
6448 1:
6449 2:
6450 3:
6451 4:
6452 5:
6453 6:
6454 7:
6455 8:
6456 9:
645710:
645811:
645912:
646013:
646114:
646215:
646316:
646417:
646518:
646619:
646720:
646821:
646922:
647023:
647124:
647225:
647326:
647427:
647528:
647629:
647730:
647831:
647932:
648033:
648134:
648235:
648336:
648437:
648538:
648639:
648740:
648841:
648942:
649043:
649144:
649245:
649346:
649447:
649548:
649649:
649750:
649851:
649952:
650053:
650154:
650255:
650356:
650457:
650558:
650659:
650760:
650861:
650962:
651063:
651164:
651265:
651366:
651467:
651568:
651669:
651770:
651871:
651972:
652073:
652174:
652275:
652376:
652477:
652578:
652679:
652780:
652881:
652982:
653083:
653184:
653285:
653386:
653487:
653588:
653689:
653790:
653891:
653992:
654093:
654194:
654295:
654396:
654497:
654598:
654699:
6547100:
6548101: XY
6549102: Y
6550
6551/(a*b|(?i:c*(?-i)d))/IS
6552Capturing subpattern count = 1
6553No options
6554No first char
6555No need char
6556Subject length lower bound = 1
6557Starting byte set: C a b c d
6558
6559/()[ab]xyz/IS
6560Capturing subpattern count = 1
6561No options
6562No first char
6563Need char = 'z'
6564Subject length lower bound = 4
6565Starting byte set: a b
6566
6567/(|)[ab]xyz/IS
6568Capturing subpattern count = 1
6569No options
6570No first char
6571Need char = 'z'
6572Subject length lower bound = 4
6573Starting byte set: a b
6574
6575/(|c)[ab]xyz/IS
6576Capturing subpattern count = 1
6577No options
6578No first char
6579Need char = 'z'
6580Subject length lower bound = 4
6581Starting byte set: a b c
6582
6583/(|c?)[ab]xyz/IS
6584Capturing subpattern count = 1
6585No options
6586No first char
6587Need char = 'z'
6588Subject length lower bound = 4
6589Starting byte set: a b c
6590
6591/(d?|c?)[ab]xyz/IS
6592Capturing subpattern count = 1
6593No options
6594No first char
6595Need char = 'z'
6596Subject length lower bound = 4
6597Starting byte set: a b c d
6598
6599/(d?|c)[ab]xyz/IS
6600Capturing subpattern count = 1
6601No options
6602No first char
6603Need char = 'z'
6604Subject length lower bound = 4
6605Starting byte set: a b c d
6606
6607/^a*b\d/DZ
6608------------------------------------------------------------------
6609        Bra
6610        ^
6611        a*+
6612        b
6613        \d
6614        Ket
6615        End
6616------------------------------------------------------------------
6617Capturing subpattern count = 0
6618Options: anchored
6619No first char
6620Need char = 'b'
6621
6622/^a*+b\d/DZ
6623------------------------------------------------------------------
6624        Bra
6625        ^
6626        a*+
6627        b
6628        \d
6629        Ket
6630        End
6631------------------------------------------------------------------
6632Capturing subpattern count = 0
6633Options: anchored
6634No first char
6635Need char = 'b'
6636
6637/^a*?b\d/DZ
6638------------------------------------------------------------------
6639        Bra
6640        ^
6641        a*+
6642        b
6643        \d
6644        Ket
6645        End
6646------------------------------------------------------------------
6647Capturing subpattern count = 0
6648Options: anchored
6649No first char
6650Need char = 'b'
6651
6652/^a+A\d/DZ
6653------------------------------------------------------------------
6654        Bra
6655        ^
6656        a++
6657        A
6658        \d
6659        Ket
6660        End
6661------------------------------------------------------------------
6662Capturing subpattern count = 0
6663Options: anchored
6664No first char
6665Need char = 'A'
6666    aaaA5
6667 0: aaaA5
6668    ** Failers
6669No match
6670    aaaa5
6671No match
6672
6673/^a*A\d/IiDZ
6674------------------------------------------------------------------
6675        Bra
6676        ^
6677        a*
6678     NC A
6679        \d
6680        Ket
6681        End
6682------------------------------------------------------------------
6683Capturing subpattern count = 0
6684Options: anchored caseless
6685No first char
6686Need char = 'A' (caseless)
6687    aaaA5
6688 0: aaaA5
6689    aaaa5
6690 0: aaaa5
6691
6692/(a*|b*)[cd]/IS
6693Capturing subpattern count = 1
6694No options
6695No first char
6696No need char
6697Subject length lower bound = 1
6698Starting byte set: a b c d
6699
6700/(a+|b*)[cd]/IS
6701Capturing subpattern count = 1
6702No options
6703No first char
6704No need char
6705Subject length lower bound = 1
6706Starting byte set: a b c d
6707
6708/(a*|b+)[cd]/IS
6709Capturing subpattern count = 1
6710No options
6711No first char
6712No need char
6713Subject length lower bound = 1
6714Starting byte set: a b c d
6715
6716/(a+|b+)[cd]/IS
6717Capturing subpattern count = 1
6718No options
6719No first char
6720No need char
6721Subject length lower bound = 2
6722Starting byte set: a b
6723
6724/((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
6725 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
6726 (((
6727 a
6728 ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
6729 ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
6730 )))
6731/Ix
6732Capturing subpattern count = 203
6733Options: extended
6734First char = 'a'
6735No need char
6736  large nest
6737Matched, but too many substrings
6738 0: a
6739 1: a
6740 2: a
6741 3: a
6742 4: a
6743 5: a
6744 6: a
6745 7: a
6746 8: a
6747 9: a
674810: a
674911: a
675012: a
675113: a
675214: a
6753
6754/a*\d/BZ
6755------------------------------------------------------------------
6756        Bra
6757        a*+
6758        \d
6759        Ket
6760        End
6761------------------------------------------------------------------
6762
6763/a*\D/BZ
6764------------------------------------------------------------------
6765        Bra
6766        a*
6767        \D
6768        Ket
6769        End
6770------------------------------------------------------------------
6771
6772/0*\d/BZ
6773------------------------------------------------------------------
6774        Bra
6775        0*
6776        \d
6777        Ket
6778        End
6779------------------------------------------------------------------
6780
6781/0*\D/BZ
6782------------------------------------------------------------------
6783        Bra
6784        0*+
6785        \D
6786        Ket
6787        End
6788------------------------------------------------------------------
6789
6790/a*\s/BZ
6791------------------------------------------------------------------
6792        Bra
6793        a*+
6794        \s
6795        Ket
6796        End
6797------------------------------------------------------------------
6798
6799/a*\S/BZ
6800------------------------------------------------------------------
6801        Bra
6802        a*
6803        \S
6804        Ket
6805        End
6806------------------------------------------------------------------
6807
6808/ *\s/BZ
6809------------------------------------------------------------------
6810        Bra
6811         *
6812        \s
6813        Ket
6814        End
6815------------------------------------------------------------------
6816
6817/ *\S/BZ
6818------------------------------------------------------------------
6819        Bra
6820         *+
6821        \S
6822        Ket
6823        End
6824------------------------------------------------------------------
6825
6826/a*\w/BZ
6827------------------------------------------------------------------
6828        Bra
6829        a*
6830        \w
6831        Ket
6832        End
6833------------------------------------------------------------------
6834
6835/a*\W/BZ
6836------------------------------------------------------------------
6837        Bra
6838        a*+
6839        \W
6840        Ket
6841        End
6842------------------------------------------------------------------
6843
6844/=*\w/BZ
6845------------------------------------------------------------------
6846        Bra
6847        =*+
6848        \w
6849        Ket
6850        End
6851------------------------------------------------------------------
6852
6853/=*\W/BZ
6854------------------------------------------------------------------
6855        Bra
6856        =*
6857        \W
6858        Ket
6859        End
6860------------------------------------------------------------------
6861
6862/\d*a/BZ
6863------------------------------------------------------------------
6864        Bra
6865        \d*+
6866        a
6867        Ket
6868        End
6869------------------------------------------------------------------
6870
6871/\d*2/BZ
6872------------------------------------------------------------------
6873        Bra
6874        \d*
6875        2
6876        Ket
6877        End
6878------------------------------------------------------------------
6879
6880/\d*\d/BZ
6881------------------------------------------------------------------
6882        Bra
6883        \d*
6884        \d
6885        Ket
6886        End
6887------------------------------------------------------------------
6888
6889/\d*\D/BZ
6890------------------------------------------------------------------
6891        Bra
6892        \d*+
6893        \D
6894        Ket
6895        End
6896------------------------------------------------------------------
6897
6898/\d*\s/BZ
6899------------------------------------------------------------------
6900        Bra
6901        \d*+
6902        \s
6903        Ket
6904        End
6905------------------------------------------------------------------
6906
6907/\d*\S/BZ
6908------------------------------------------------------------------
6909        Bra
6910        \d*
6911        \S
6912        Ket
6913        End
6914------------------------------------------------------------------
6915
6916/\d*\w/BZ
6917------------------------------------------------------------------
6918        Bra
6919        \d*
6920        \w
6921        Ket
6922        End
6923------------------------------------------------------------------
6924
6925/\d*\W/BZ
6926------------------------------------------------------------------
6927        Bra
6928        \d*+
6929        \W
6930        Ket
6931        End
6932------------------------------------------------------------------
6933
6934/\D*a/BZ
6935------------------------------------------------------------------
6936        Bra
6937        \D*
6938        a
6939        Ket
6940        End
6941------------------------------------------------------------------
6942
6943/\D*2/BZ
6944------------------------------------------------------------------
6945        Bra
6946        \D*+
6947        2
6948        Ket
6949        End
6950------------------------------------------------------------------
6951
6952/\D*\d/BZ
6953------------------------------------------------------------------
6954        Bra
6955        \D*+
6956        \d
6957        Ket
6958        End
6959------------------------------------------------------------------
6960
6961/\D*\D/BZ
6962------------------------------------------------------------------
6963        Bra
6964        \D*
6965        \D
6966        Ket
6967        End
6968------------------------------------------------------------------
6969
6970/\D*\s/BZ
6971------------------------------------------------------------------
6972        Bra
6973        \D*
6974        \s
6975        Ket
6976        End
6977------------------------------------------------------------------
6978
6979/\D*\S/BZ
6980------------------------------------------------------------------
6981        Bra
6982        \D*
6983        \S
6984        Ket
6985        End
6986------------------------------------------------------------------
6987
6988/\D*\w/BZ
6989------------------------------------------------------------------
6990        Bra
6991        \D*
6992        \w
6993        Ket
6994        End
6995------------------------------------------------------------------
6996
6997/\D*\W/BZ
6998------------------------------------------------------------------
6999        Bra
7000        \D*
7001        \W
7002        Ket
7003        End
7004------------------------------------------------------------------
7005
7006/\s*a/BZ
7007------------------------------------------------------------------
7008        Bra
7009        \s*+
7010        a
7011        Ket
7012        End
7013------------------------------------------------------------------
7014
7015/\s*2/BZ
7016------------------------------------------------------------------
7017        Bra
7018        \s*+
7019        2
7020        Ket
7021        End
7022------------------------------------------------------------------
7023
7024/\s*\d/BZ
7025------------------------------------------------------------------
7026        Bra
7027        \s*+
7028        \d
7029        Ket
7030        End
7031------------------------------------------------------------------
7032
7033/\s*\D/BZ
7034------------------------------------------------------------------
7035        Bra
7036        \s*
7037        \D
7038        Ket
7039        End
7040------------------------------------------------------------------
7041
7042/\s*\s/BZ
7043------------------------------------------------------------------
7044        Bra
7045        \s*
7046        \s
7047        Ket
7048        End
7049------------------------------------------------------------------
7050
7051/\s*\S/BZ
7052------------------------------------------------------------------
7053        Bra
7054        \s*+
7055        \S
7056        Ket
7057        End
7058------------------------------------------------------------------
7059
7060/\s*\w/BZ
7061------------------------------------------------------------------
7062        Bra
7063        \s*+
7064        \w
7065        Ket
7066        End
7067------------------------------------------------------------------
7068
7069/\s*\W/BZ
7070------------------------------------------------------------------
7071        Bra
7072        \s*
7073        \W
7074        Ket
7075        End
7076------------------------------------------------------------------
7077
7078/\S*a/BZ
7079------------------------------------------------------------------
7080        Bra
7081        \S*
7082        a
7083        Ket
7084        End
7085------------------------------------------------------------------
7086
7087/\S*2/BZ
7088------------------------------------------------------------------
7089        Bra
7090        \S*
7091        2
7092        Ket
7093        End
7094------------------------------------------------------------------
7095
7096/\S*\d/BZ
7097------------------------------------------------------------------
7098        Bra
7099        \S*
7100        \d
7101        Ket
7102        End
7103------------------------------------------------------------------
7104
7105/\S*\D/BZ
7106------------------------------------------------------------------
7107        Bra
7108        \S*
7109        \D
7110        Ket
7111        End
7112------------------------------------------------------------------
7113
7114/\S*\s/BZ
7115------------------------------------------------------------------
7116        Bra
7117        \S*+
7118        \s
7119        Ket
7120        End
7121------------------------------------------------------------------
7122
7123/\S*\S/BZ
7124------------------------------------------------------------------
7125        Bra
7126        \S*
7127        \S
7128        Ket
7129        End
7130------------------------------------------------------------------
7131
7132/\S*\w/BZ
7133------------------------------------------------------------------
7134        Bra
7135        \S*
7136        \w
7137        Ket
7138        End
7139------------------------------------------------------------------
7140
7141/\S*\W/BZ
7142------------------------------------------------------------------
7143        Bra
7144        \S*
7145        \W
7146        Ket
7147        End
7148------------------------------------------------------------------
7149
7150/\w*a/BZ
7151------------------------------------------------------------------
7152        Bra
7153        \w*
7154        a
7155        Ket
7156        End
7157------------------------------------------------------------------
7158
7159/\w*2/BZ
7160------------------------------------------------------------------
7161        Bra
7162        \w*
7163        2
7164        Ket
7165        End
7166------------------------------------------------------------------
7167
7168/\w*\d/BZ
7169------------------------------------------------------------------
7170        Bra
7171        \w*
7172        \d
7173        Ket
7174        End
7175------------------------------------------------------------------
7176
7177/\w*\D/BZ
7178------------------------------------------------------------------
7179        Bra
7180        \w*
7181        \D
7182        Ket
7183        End
7184------------------------------------------------------------------
7185
7186/\w*\s/BZ
7187------------------------------------------------------------------
7188        Bra
7189        \w*+
7190        \s
7191        Ket
7192        End
7193------------------------------------------------------------------
7194
7195/\w*\S/BZ
7196------------------------------------------------------------------
7197        Bra
7198        \w*
7199        \S
7200        Ket
7201        End
7202------------------------------------------------------------------
7203
7204/\w*\w/BZ
7205------------------------------------------------------------------
7206        Bra
7207        \w*
7208        \w
7209        Ket
7210        End
7211------------------------------------------------------------------
7212
7213/\w*\W/BZ
7214------------------------------------------------------------------
7215        Bra
7216        \w*+
7217        \W
7218        Ket
7219        End
7220------------------------------------------------------------------
7221
7222/\W*a/BZ
7223------------------------------------------------------------------
7224        Bra
7225        \W*+
7226        a
7227        Ket
7228        End
7229------------------------------------------------------------------
7230
7231/\W*2/BZ
7232------------------------------------------------------------------
7233        Bra
7234        \W*+
7235        2
7236        Ket
7237        End
7238------------------------------------------------------------------
7239
7240/\W*\d/BZ
7241------------------------------------------------------------------
7242        Bra
7243        \W*+
7244        \d
7245        Ket
7246        End
7247------------------------------------------------------------------
7248
7249/\W*\D/BZ
7250------------------------------------------------------------------
7251        Bra
7252        \W*
7253        \D
7254        Ket
7255        End
7256------------------------------------------------------------------
7257
7258/\W*\s/BZ
7259------------------------------------------------------------------
7260        Bra
7261        \W*
7262        \s
7263        Ket
7264        End
7265------------------------------------------------------------------
7266
7267/\W*\S/BZ
7268------------------------------------------------------------------
7269        Bra
7270        \W*
7271        \S
7272        Ket
7273        End
7274------------------------------------------------------------------
7275
7276/\W*\w/BZ
7277------------------------------------------------------------------
7278        Bra
7279        \W*+
7280        \w
7281        Ket
7282        End
7283------------------------------------------------------------------
7284
7285/\W*\W/BZ
7286------------------------------------------------------------------
7287        Bra
7288        \W*
7289        \W
7290        Ket
7291        End
7292------------------------------------------------------------------
7293
7294/[^a]+a/BZ
7295------------------------------------------------------------------
7296        Bra
7297        [^a]++
7298        a
7299        Ket
7300        End
7301------------------------------------------------------------------
7302
7303/[^a]+a/BZi
7304------------------------------------------------------------------
7305        Bra
7306        [^A]++
7307     NC a
7308        Ket
7309        End
7310------------------------------------------------------------------
7311
7312/[^a]+A/BZi
7313------------------------------------------------------------------
7314        Bra
7315        [^A]++
7316     NC A
7317        Ket
7318        End
7319------------------------------------------------------------------
7320
7321/[^a]+b/BZ
7322------------------------------------------------------------------
7323        Bra
7324        [^a]+
7325        b
7326        Ket
7327        End
7328------------------------------------------------------------------
7329
7330/[^a]+\d/BZ
7331------------------------------------------------------------------
7332        Bra
7333        [^a]+
7334        \d
7335        Ket
7336        End
7337------------------------------------------------------------------
7338
7339/a*[^a]/BZ
7340------------------------------------------------------------------
7341        Bra
7342        a*
7343        [^a]
7344        Ket
7345        End
7346------------------------------------------------------------------
7347
7348/(?P<abc>x)(?P<xyz>y)/I
7349Capturing subpattern count = 2
7350Named capturing subpatterns:
7351  abc   1
7352  xyz   2
7353No options
7354First char = 'x'
7355Need char = 'y'
7356    xy\Cabc\Cxyz
7357 0: xy
7358 1: x
7359 2: y
7360  C x (1) abc
7361  C y (1) xyz
7362
7363/(?<abc>x)(?'xyz'y)/I
7364Capturing subpattern count = 2
7365Named capturing subpatterns:
7366  abc   1
7367  xyz   2
7368No options
7369First char = 'x'
7370Need char = 'y'
7371    xy\Cabc\Cxyz
7372 0: xy
7373 1: x
7374 2: y
7375  C x (1) abc
7376  C y (1) xyz
7377
7378/(?<abc'x)(?'xyz'y)/I
7379Failed: syntax error in subpattern name (missing terminator) at offset 6
7380
7381/(?<abc>x)(?'xyz>y)/I
7382Failed: syntax error in subpattern name (missing terminator) at offset 15
7383
7384/(?P'abc'x)(?P<xyz>y)/I
7385Failed: unrecognized character after (?P at offset 3
7386
7387/^(?:(?(ZZ)a|b)(?<ZZ>X))+/
7388    bXaX
7389 0: bXaX
7390 1: X
7391    bXbX
7392 0: bX
7393 1: X
7394    ** Failers
7395No match
7396    aXaX
7397No match
7398    aXbX
7399No match
7400
7401/^(?P>abc)(?<abcd>xxx)/
7402Failed: reference to non-existent subpattern at offset 8
7403
7404/^(?P>abc)(?<abc>x|y)/
7405    xx
7406 0: xx
7407 1: x
7408    xy
7409 0: xy
7410 1: y
7411    yy
7412 0: yy
7413 1: y
7414    yx
7415 0: yx
7416 1: x
7417
7418/^(?P>abc)(?P<abc>x|y)/
7419    xx
7420 0: xx
7421 1: x
7422    xy
7423 0: xy
7424 1: y
7425    yy
7426 0: yy
7427 1: y
7428    yx
7429 0: yx
7430 1: x
7431
7432/^((?(abc)a|b)(?<abc>x|y))+/
7433    bxay
7434 0: bxay
7435 1: ay
7436 2: y
7437    bxby
7438 0: bx
7439 1: bx
7440 2: x
7441    ** Failers
7442No match
7443    axby
7444No match
7445
7446/^(((?P=abc)|X)(?<abc>x|y))+/
7447    XxXxxx
7448 0: XxXxxx
7449 1: xx
7450 2: x
7451 3: x
7452    XxXyyx
7453 0: XxXyyx
7454 1: yx
7455 2: y
7456 3: x
7457    XxXyxx
7458 0: XxXy
7459 1: Xy
7460 2: X
7461 3: y
7462    ** Failers
7463No match
7464    x
7465No match
7466
7467/^(?1)(abc)/
7468    abcabc
7469 0: abcabc
7470 1: abc
7471
7472/^(?:(?:\1|X)(a|b))+/
7473    Xaaa
7474 0: Xaaa
7475 1: a
7476    Xaba
7477 0: Xa
7478 1: a
7479
7480/^[\E\Qa\E-\Qz\E]+/BZ
7481------------------------------------------------------------------
7482        Bra
7483        ^
7484        [a-z]+
7485        Ket
7486        End
7487------------------------------------------------------------------
7488
7489/^[a\Q]bc\E]/BZ
7490------------------------------------------------------------------
7491        Bra
7492        ^
7493        [\]a-c]
7494        Ket
7495        End
7496------------------------------------------------------------------
7497
7498/^[a-\Q\E]/BZ
7499------------------------------------------------------------------
7500        Bra
7501        ^
7502        [\-a]
7503        Ket
7504        End
7505------------------------------------------------------------------
7506
7507/^(?P>abc)[()](?<abc>)/BZ
7508------------------------------------------------------------------
7509        Bra
7510        ^
7511        Once
7512        Recurse
7513        Ket
7514        [()]
7515        CBra 1
7516        Ket
7517        Ket
7518        End
7519------------------------------------------------------------------
7520
7521/^((?(abc)y)[()](?P<abc>x))+/BZ
7522------------------------------------------------------------------
7523        Bra
7524        ^
7525        CBra 1
7526        Cond
7527      2 Cond nref
7528        y
7529        Ket
7530        [()]
7531        CBra 2
7532        x
7533        Ket
7534        KetRmax
7535        Ket
7536        End
7537------------------------------------------------------------------
7538    (xy)x
7539 0: (xy)x
7540 1: y)x
7541 2: x
7542
7543/^(?P>abc)\Q()\E(?<abc>)/BZ
7544------------------------------------------------------------------
7545        Bra
7546        ^
7547        Once
7548        Recurse
7549        Ket
7550        ()
7551        CBra 1
7552        Ket
7553        Ket
7554        End
7555------------------------------------------------------------------
7556
7557/^(?P>abc)[a\Q(]\E(](?<abc>)/BZ
7558------------------------------------------------------------------
7559        Bra
7560        ^
7561        Once
7562        Recurse
7563        Ket
7564        [(\]a]
7565        CBra 1
7566        Ket
7567        Ket
7568        End
7569------------------------------------------------------------------
7570
7571/^(?P>abc) # this is (a comment)
7572  (?<abc>)/BZx
7573------------------------------------------------------------------
7574        Bra
7575        ^
7576        Once
7577        Recurse
7578        Ket
7579        CBra 1
7580        Ket
7581        Ket
7582        End
7583------------------------------------------------------------------
7584
7585/^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii
7586Capturing subpattern count = 4
7587Max back reference = 4
7588Named capturing subpatterns:
7589  four    4
7590  one     1
7591  three   3
7592  two     2
7593Options: anchored caseless
7594No first char
7595No need char
7596    1221
7597 0: 1221
7598 1: 1221
7599 2: 1
7600    Satan, oscillate my metallic sonatas!
7601 0: Satan, oscillate my metallic sonatas!
7602 1: <unset>
7603 2: <unset>
7604 3: Satan, oscillate my metallic sonatas
7605 4: S
7606    A man, a plan, a canal: Panama!
7607 0: A man, a plan, a canal: Panama!
7608 1: <unset>
7609 2: <unset>
7610 3: A man, a plan, a canal: Panama
7611 4: A
7612    Able was I ere I saw Elba.
7613 0: Able was I ere I saw Elba.
7614 1: <unset>
7615 2: <unset>
7616 3: Able was I ere I saw Elba
7617 4: A
7618    *** Failers
7619No match
7620    The quick brown fox
7621No match
7622
7623/(?=(\w+))\1:/I
7624Capturing subpattern count = 1
7625Max back reference = 1
7626No options
7627No first char
7628Need char = ':'
7629    abcd:
7630 0: abcd:
7631 1: abcd
7632
7633/(?=(?'abc'\w+))\k<abc>:/I
7634Capturing subpattern count = 1
7635Max back reference = 1
7636Named capturing subpatterns:
7637  abc   1
7638No options
7639No first char
7640Need char = ':'
7641    abcd:
7642 0: abcd:
7643 1: abcd
7644
7645/(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
7646    adaa
7647 0: adaa
7648 1: a
7649 2: d
7650    ** Failers
7651No match
7652    addd
7653No match
7654    adbb
7655No match
7656
7657/(?'abc'a|b)(?<abc>d|e)(?&abc){2}/J
7658    bdaa
7659 0: bdaa
7660 1: b
7661 2: d
7662    bdab
7663 0: bdab
7664 1: b
7665 2: d
7666    ** Failers
7667No match
7668    bddd
7669No match
7670
7671/(?(<bc))/
7672Failed: malformed number or name after (?( at offset 6
7673
7674/(?(''))/
7675Failed: assertion expected after (?( at offset 4
7676
7677/(?('R')stuff)/
7678Failed: reference to non-existent subpattern at offset 7
7679
7680/((abc (?(R) (?(R1)1) (?(R2)2) X  |  (?1)  (?2)   (?R) ))) /x
7681    abcabc1Xabc2XabcXabcabc
7682 0: abcabc1Xabc2XabcX
7683 1: abcabc1Xabc2XabcX
7684 2: abcabc1Xabc2XabcX
7685
7686/(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
7687    abcabc1Xabc2XabcXabcabc
7688 0: abcabc1Xabc2XabcX
7689 1: abcabc1Xabc2XabcX
7690 2: abcabc1Xabc2XabcX
7691
7692/(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
7693Failed: reference to non-existent subpattern at offset 29
7694
7695/(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
7696    abcabc1Xabc2XabcXabcabc
7697 0: abcabc1Xabc2XabcX
7698 1: abcabc1Xabc2XabcX
7699 2: abcabc1Xabc2XabcX
7700
7701/^(?(DEFINE) abc | xyz ) /x
7702Failed: DEFINE group contains more than one branch at offset 22
7703
7704/(?(DEFINE) abc) xyz/xI
7705Capturing subpattern count = 0
7706Options: extended
7707First char = 'x'
7708Need char = 'z'
7709
7710/(?(DEFINE) abc){3} xyz/x
7711Failed: repeating a DEFINE group is not allowed at offset 17
7712
7713/(a|)*\d/
7714  \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7715No match
7716  \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
7717Matched, but too many substrings
7718
7719/^a.b/<lf>
7720    a\rb
7721 0: a\x0db
7722    a\nb\<cr>
7723 0: a\x0ab
7724    a\x85b\<anycrlf>
7725 0: a\x85b
7726    ** Failers
7727No match
7728    a\nb
7729No match
7730    a\nb\<any>
7731No match
7732    a\rb\<cr>
7733No match
7734    a\rb\<any>
7735No match
7736    a\x85b\<any>
7737No match
7738    a\rb\<anycrlf>
7739No match
7740
7741/^abc./mgx<any>
7742    abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
7743 0: abc1
7744 0: abc2
7745 0: abc3
7746 0: abc4
7747 0: abc5
7748 0: abc6
7749 0: abc7
7750
7751/abc.$/mgx<any>
7752    abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
7753 0: abc1
7754 0: abc2
7755 0: abc3
7756 0: abc4
7757 0: abc5
7758 0: abc6
7759 0: abc9
7760
7761/a/<cr><any>
7762
7763/a/<any><crlf>
7764Failed: inconsistent NEWLINE options at offset 0
7765
7766/^a\Rb/<bsr_unicode>
7767    a\nb
7768 0: a\x0ab
7769    a\rb
7770 0: a\x0db
7771    a\r\nb
7772 0: a\x0d\x0ab
7773    a\x0bb
7774 0: a\x0bb
7775    a\x0cb
7776 0: a\x0cb
7777    a\x85b
7778 0: a\x85b
7779    ** Failers
7780No match
7781    a\n\rb
7782No match
7783
7784/^a\R*b/<bsr_unicode>
7785    ab
7786 0: ab
7787    a\nb
7788 0: a\x0ab
7789    a\rb
7790 0: a\x0db
7791    a\r\nb
7792 0: a\x0d\x0ab
7793    a\x0bb
7794 0: a\x0bb
7795    a\x0cb
7796 0: a\x0cb
7797    a\x85b
7798 0: a\x85b
7799    a\n\rb
7800 0: a\x0a\x0db
7801    a\n\r\x85\x0cb
7802 0: a\x0a\x0d\x85\x0cb
7803
7804/^a\R+b/<bsr_unicode>
7805    a\nb
7806 0: a\x0ab
7807    a\rb
7808 0: a\x0db
7809    a\r\nb
7810 0: a\x0d\x0ab
7811    a\x0bb
7812 0: a\x0bb
7813    a\x0cb
7814 0: a\x0cb
7815    a\x85b
7816 0: a\x85b
7817    a\n\rb
7818 0: a\x0a\x0db
7819    a\n\r\x85\x0cb
7820 0: a\x0a\x0d\x85\x0cb
7821    ** Failers
7822No match
7823    ab
7824No match
7825
7826/^a\R{1,3}b/<bsr_unicode>
7827    a\nb
7828 0: a\x0ab
7829    a\n\rb
7830 0: a\x0a\x0db
7831    a\n\r\x85b
7832 0: a\x0a\x0d\x85b
7833    a\r\n\r\nb
7834 0: a\x0d\x0a\x0d\x0ab
7835    a\r\n\r\n\r\nb
7836 0: a\x0d\x0a\x0d\x0a\x0d\x0ab
7837    a\n\r\n\rb
7838 0: a\x0a\x0d\x0a\x0db
7839    a\n\n\r\nb
7840 0: a\x0a\x0a\x0d\x0ab
7841    ** Failers
7842No match
7843    a\n\n\n\rb
7844No match
7845    a\r
7846No match
7847
7848/^a[\R]b/<bsr_unicode>
7849    aRb
7850 0: aRb
7851    ** Failers
7852No match
7853    a\nb
7854No match
7855
7856/(?&abc)X(?<abc>P)/I
7857Capturing subpattern count = 1
7858Named capturing subpatterns:
7859  abc   1
7860No options
7861No first char
7862Need char = 'P'
7863    abcPXP123
7864 0: PXP
7865 1: P
7866
7867/(?1)X(?<abc>P)/I
7868Capturing subpattern count = 1
7869Named capturing subpatterns:
7870  abc   1
7871No options
7872No first char
7873Need char = 'P'
7874    abcPXP123
7875 0: PXP
7876 1: P
7877
7878/(?:a(?&abc)b)*(?<abc>x)/
7879    123axbaxbaxbx456
7880 0: axbaxbaxbx
7881 1: x
7882    123axbaxbaxb456
7883 0: x
7884 1: x
7885
7886/(?:a(?&abc)b){1,5}(?<abc>x)/
7887    123axbaxbaxbx456
7888 0: axbaxbaxbx
7889 1: x
7890
7891/(?:a(?&abc)b){2,5}(?<abc>x)/
7892    123axbaxbaxbx456
7893 0: axbaxbaxbx
7894 1: x
7895
7896/(?:a(?&abc)b){2,}(?<abc>x)/
7897    123axbaxbaxbx456
7898 0: axbaxbaxbx
7899 1: x
7900
7901/(abc)(?i:(?1))/
7902   defabcabcxyz
7903 0: abcabc
7904 1: abc
7905   DEFabcABCXYZ
7906No match
7907
7908/(abc)(?:(?i)(?1))/
7909   defabcabcxyz
7910 0: abcabc
7911 1: abc
7912   DEFabcABCXYZ
7913No match
7914
7915/^(a)\g-2/
7916Failed: reference to non-existent subpattern at offset 7
7917
7918/^(a)\g/
7919Failed: a numbered reference must not be zero at offset 5
7920
7921/^(a)\g{0}/
7922Failed: a numbered reference must not be zero at offset 8
7923
7924/^(a)\g{3/
7925Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 8
7926
7927/^(a)\g{4a}/
7928Failed: reference to non-existent subpattern at offset 9
7929
7930/^a.b/<lf>
7931    a\rb
7932 0: a\x0db
7933    *** Failers
7934No match
7935    a\nb
7936No match
7937
7938/.+foo/
7939    afoo
7940 0: afoo
7941    ** Failers
7942No match
7943    \r\nfoo
7944No match
7945    \nfoo
7946No match
7947
7948/.+foo/<crlf>
7949    afoo
7950 0: afoo
7951    \nfoo
7952 0: \x0afoo
7953    ** Failers
7954No match
7955    \r\nfoo
7956No match
7957
7958/.+foo/<any>
7959    afoo
7960 0: afoo
7961    ** Failers
7962No match
7963    \nfoo
7964No match
7965    \r\nfoo
7966No match
7967
7968/.+foo/s
7969    afoo
7970 0: afoo
7971    \r\nfoo
7972 0: \x0d\x0afoo
7973    \nfoo
7974 0: \x0afoo
7975
7976/^$/mg<any>
7977    abc\r\rxyz
7978 0:
7979    abc\n\rxyz
7980 0:
7981    ** Failers
7982No match
7983    abc\r\nxyz
7984No match
7985
7986/(?m)^$/<any>g+
7987    abc\r\n\r\n
7988 0:
7989 0+ \x0d\x0a
7990
7991/(?m)^$|^\r\n/<any>g+
7992    abc\r\n\r\n
7993 0:
7994 0+ \x0d\x0a
7995 0: \x0d\x0a
7996 0+
7997
7998/(?m)$/<any>g+
7999    abc\r\n\r\n
8000 0:
8001 0+ \x0d\x0a\x0d\x0a
8002 0:
8003 0+ \x0d\x0a
8004 0:
8005 0+
8006
8007/abc.$/mgx<anycrlf>
8008    abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
8009 0: abc1
8010 0: abc4
8011 0: abc5
8012 0: abc9
8013
8014/^X/m
8015    XABC
8016 0: X
8017    ** Failers
8018No match
8019    XABC\B
8020No match
8021
8022/(ab|c)(?-1)/BZ
8023------------------------------------------------------------------
8024        Bra
8025        CBra 1
8026        ab
8027        Alt
8028        c
8029        Ket
8030        Once
8031        Recurse
8032        Ket
8033        Ket
8034        End
8035------------------------------------------------------------------
8036    abc
8037 0: abc
8038 1: ab
8039
8040/xy(?+1)(abc)/BZ
8041------------------------------------------------------------------
8042        Bra
8043        xy
8044        Once
8045        Recurse
8046        Ket
8047        CBra 1
8048        abc
8049        Ket
8050        Ket
8051        End
8052------------------------------------------------------------------
8053    xyabcabc
8054 0: xyabcabc
8055 1: abc
8056    ** Failers
8057No match
8058    xyabc
8059No match
8060
8061/x(?-0)y/
8062Failed: a numbered reference must not be zero at offset 5
8063
8064/x(?-1)y/
8065Failed: reference to non-existent subpattern at offset 5
8066
8067/x(?+0)y/
8068Failed: a numbered reference must not be zero at offset 5
8069
8070/x(?+1)y/
8071Failed: reference to non-existent subpattern at offset 5
8072
8073/^(abc)?(?(-1)X|Y)/BZ
8074------------------------------------------------------------------
8075        Bra
8076        ^
8077        Brazero
8078        CBra 1
8079        abc
8080        Ket
8081        Cond
8082      1 Cond ref
8083        X
8084        Alt
8085        Y
8086        Ket
8087        Ket
8088        End
8089------------------------------------------------------------------
8090    abcX
8091 0: abcX
8092 1: abc
8093    Y
8094 0: Y
8095    ** Failers
8096No match
8097    abcY
8098No match
8099
8100/^((?(+1)X|Y)(abc))+/BZ
8101------------------------------------------------------------------
8102        Bra
8103        ^
8104        CBra 1
8105        Cond
8106      2 Cond ref
8107        X
8108        Alt
8109        Y
8110        Ket
8111        CBra 2
8112        abc
8113        Ket
8114        KetRmax
8115        Ket
8116        End
8117------------------------------------------------------------------
8118    YabcXabc
8119 0: YabcXabc
8120 1: Xabc
8121 2: abc
8122    YabcXabcXabc
8123 0: YabcXabcXabc
8124 1: Xabc
8125 2: abc
8126    ** Failers
8127No match
8128    XabcXabc
8129No match
8130
8131/(?(-1)a)/BZ
8132Failed: reference to non-existent subpattern at offset 6
8133
8134/((?(-1)a))/BZ
8135------------------------------------------------------------------
8136        Bra
8137        CBra 1
8138        Cond
8139      1 Cond ref
8140        a
8141        Ket
8142        Ket
8143        Ket
8144        End
8145------------------------------------------------------------------
8146
8147/((?(-2)a))/BZ
8148Failed: reference to non-existent subpattern at offset 7
8149
8150/^(?(+1)X|Y)(.)/BZ
8151------------------------------------------------------------------
8152        Bra
8153        ^
8154        Cond
8155      1 Cond ref
8156        X
8157        Alt
8158        Y
8159        Ket
8160        CBra 1
8161        Any
8162        Ket
8163        Ket
8164        End
8165------------------------------------------------------------------
8166    Y!
8167 0: Y!
8168 1: !
8169
8170/(?<A>tom|bon)-\k{A}/
8171    tom-tom
8172 0: tom-tom
8173 1: tom
8174    bon-bon
8175 0: bon-bon
8176 1: bon
8177    ** Failers
8178No match
8179    tom-bon
8180No match
8181
8182/\g{A/
8183Failed: syntax error in subpattern name (missing terminator) at offset 4
8184
8185/(?|(abc)|(xyz))/BZ
8186------------------------------------------------------------------
8187        Bra
8188        Bra
8189        CBra 1
8190        abc
8191        Ket
8192        Alt
8193        CBra 1
8194        xyz
8195        Ket
8196        Ket
8197        Ket
8198        End
8199------------------------------------------------------------------
8200   >abc<
8201 0: abc
8202 1: abc
8203   >xyz<
8204 0: xyz
8205 1: xyz
8206
8207/(x)(?|(abc)|(xyz))(x)/BZ
8208------------------------------------------------------------------
8209        Bra
8210        CBra 1
8211        x
8212        Ket
8213        Bra
8214        CBra 2
8215        abc
8216        Ket
8217        Alt
8218        CBra 2
8219        xyz
8220        Ket
8221        Ket
8222        CBra 3
8223        x
8224        Ket
8225        Ket
8226        End
8227------------------------------------------------------------------
8228    xabcx
8229 0: xabcx
8230 1: x
8231 2: abc
8232 3: x
8233    xxyzx
8234 0: xxyzx
8235 1: x
8236 2: xyz
8237 3: x
8238
8239/(x)(?|(abc)(pqr)|(xyz))(x)/BZ
8240------------------------------------------------------------------
8241        Bra
8242        CBra 1
8243        x
8244        Ket
8245        Bra
8246        CBra 2
8247        abc
8248        Ket
8249        CBra 3
8250        pqr
8251        Ket
8252        Alt
8253        CBra 2
8254        xyz
8255        Ket
8256        Ket
8257        CBra 4
8258        x
8259        Ket
8260        Ket
8261        End
8262------------------------------------------------------------------
8263    xabcpqrx
8264 0: xabcpqrx
8265 1: x
8266 2: abc
8267 3: pqr
8268 4: x
8269    xxyzx
8270 0: xxyzx
8271 1: x
8272 2: xyz
8273 3: <unset>
8274 4: x
8275
8276/[\h]/BZ
8277------------------------------------------------------------------
8278        Bra
8279        [\x09 \xa0]
8280        Ket
8281        End
8282------------------------------------------------------------------
8283    >\x09<
8284 0: \x09
8285
8286/[\h]+/BZ
8287------------------------------------------------------------------
8288        Bra
8289        [\x09 \xa0]+
8290        Ket
8291        End
8292------------------------------------------------------------------
8293    >\x09\x20\xa0<
8294 0: \x09 \xa0
8295
8296/[\v]/BZ
8297------------------------------------------------------------------
8298        Bra
8299        [\x0a-\x0d\x85]
8300        Ket
8301        End
8302------------------------------------------------------------------
8303
8304/[\H]/BZ
8305------------------------------------------------------------------
8306        Bra
8307        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff]
8308        Ket
8309        End
8310------------------------------------------------------------------
8311
8312/[^\h]/BZ
8313------------------------------------------------------------------
8314        Bra
8315        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg)
8316        Ket
8317        End
8318------------------------------------------------------------------
8319
8320/[\V]/BZ
8321------------------------------------------------------------------
8322        Bra
8323        [\x00-\x09\x0e-\x84\x86-\xff]
8324        Ket
8325        End
8326------------------------------------------------------------------
8327
8328/[\x0a\V]/BZ
8329------------------------------------------------------------------
8330        Bra
8331        [\x00-\x0a\x0e-\x84\x86-\xff]
8332        Ket
8333        End
8334------------------------------------------------------------------
8335
8336/\H++X/BZ
8337------------------------------------------------------------------
8338        Bra
8339        \H++
8340        X
8341        Ket
8342        End
8343------------------------------------------------------------------
8344    ** Failers
8345No match
8346    XXXX
8347No match
8348
8349/\H+\hY/BZ
8350------------------------------------------------------------------
8351        Bra
8352        \H++
8353        \h
8354        Y
8355        Ket
8356        End
8357------------------------------------------------------------------
8358    XXXX Y
8359 0: XXXX Y
8360
8361/\H+ Y/BZ
8362------------------------------------------------------------------
8363        Bra
8364        \H++
8365         Y
8366        Ket
8367        End
8368------------------------------------------------------------------
8369
8370/\h+A/BZ
8371------------------------------------------------------------------
8372        Bra
8373        \h++
8374        A
8375        Ket
8376        End
8377------------------------------------------------------------------
8378
8379/\v*B/BZ
8380------------------------------------------------------------------
8381        Bra
8382        \v*+
8383        B
8384        Ket
8385        End
8386------------------------------------------------------------------
8387
8388/\V+\x0a/BZ
8389------------------------------------------------------------------
8390        Bra
8391        \V++
8392        \x0a
8393        Ket
8394        End
8395------------------------------------------------------------------
8396
8397/A+\h/BZ
8398------------------------------------------------------------------
8399        Bra
8400        A++
8401        \h
8402        Ket
8403        End
8404------------------------------------------------------------------
8405
8406/ *\H/BZ
8407------------------------------------------------------------------
8408        Bra
8409         *+
8410        \H
8411        Ket
8412        End
8413------------------------------------------------------------------
8414
8415/A*\v/BZ
8416------------------------------------------------------------------
8417        Bra
8418        A*+
8419        \v
8420        Ket
8421        End
8422------------------------------------------------------------------
8423
8424/\x0b*\V/BZ
8425------------------------------------------------------------------
8426        Bra
8427        \x0b*+
8428        \V
8429        Ket
8430        End
8431------------------------------------------------------------------
8432
8433/\d+\h/BZ
8434------------------------------------------------------------------
8435        Bra
8436        \d++
8437        \h
8438        Ket
8439        End
8440------------------------------------------------------------------
8441
8442/\d*\v/BZ
8443------------------------------------------------------------------
8444        Bra
8445        \d*+
8446        \v
8447        Ket
8448        End
8449------------------------------------------------------------------
8450
8451/S+\h\S+\v/BZ
8452------------------------------------------------------------------
8453        Bra
8454        S++
8455        \h
8456        \S++
8457        \v
8458        Ket
8459        End
8460------------------------------------------------------------------
8461
8462/\w{3,}\h\w+\v/BZ
8463------------------------------------------------------------------
8464        Bra
8465        \w{3}
8466        \w*+
8467        \h
8468        \w++
8469        \v
8470        Ket
8471        End
8472------------------------------------------------------------------
8473
8474/\h+\d\h+\w\h+\S\h+\H/BZ
8475------------------------------------------------------------------
8476        Bra
8477        \h++
8478        \d
8479        \h++
8480        \w
8481        \h++
8482        \S
8483        \h++
8484        \H
8485        Ket
8486        End
8487------------------------------------------------------------------
8488
8489/\v+\d\v+\w\v+\S\v+\V/BZ
8490------------------------------------------------------------------
8491        Bra
8492        \v++
8493        \d
8494        \v++
8495        \w
8496        \v+
8497        \S
8498        \v++
8499        \V
8500        Ket
8501        End
8502------------------------------------------------------------------
8503
8504/\H+\h\H+\d/BZ
8505------------------------------------------------------------------
8506        Bra
8507        \H++
8508        \h
8509        \H+
8510        \d
8511        Ket
8512        End
8513------------------------------------------------------------------
8514
8515/\V+\v\V+\w/BZ
8516------------------------------------------------------------------
8517        Bra
8518        \V++
8519        \v
8520        \V+
8521        \w
8522        Ket
8523        End
8524------------------------------------------------------------------
8525
8526/\( (?: [^()]* | (?R) )* \)/x
8527(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
8528 0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
8529
8530/[\E]AAA/
8531Failed: missing terminating ] for character class at offset 7
8532
8533/[\Q\E]AAA/
8534Failed: missing terminating ] for character class at offset 9
8535
8536/[^\E]AAA/
8537Failed: missing terminating ] for character class at offset 8
8538
8539/[^\Q\E]AAA/
8540Failed: missing terminating ] for character class at offset 10
8541
8542/[\E^]AAA/
8543Failed: missing terminating ] for character class at offset 8
8544
8545/[\Q\E^]AAA/
8546Failed: missing terminating ] for character class at offset 10
8547
8548/A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
8549------------------------------------------------------------------
8550        Bra
8551        A
8552        *PRUNE
8553        B
8554        *SKIP
8555        C
8556        *THEN
8557        D
8558        *COMMIT
8559        E
8560        *FAIL
8561        F
8562        *FAIL
8563        G
8564        *FAIL
8565        H
8566        *ACCEPT
8567        I
8568        Ket
8569        End
8570------------------------------------------------------------------
8571
8572/^a+(*FAIL)/C
8573    aaaaaa
8574--->aaaaaa
8575 +0 ^          ^
8576 +1 ^          a+
8577 +3 ^     ^    (*FAIL)
8578 +3 ^    ^     (*FAIL)
8579 +3 ^   ^      (*FAIL)
8580 +3 ^  ^       (*FAIL)
8581 +3 ^ ^        (*FAIL)
8582 +3 ^^         (*FAIL)
8583No match
8584
8585/a+b?c+(*FAIL)/C
8586    aaabccc
8587--->aaabccc
8588 +0 ^           a+
8589 +2 ^  ^        b?
8590 +4 ^   ^       c+
8591 +6 ^      ^    (*FAIL)
8592 +6 ^     ^     (*FAIL)
8593 +6 ^    ^      (*FAIL)
8594 +4 ^  ^        c+
8595 +2 ^ ^         b?
8596 +4 ^ ^         c+
8597 +2 ^^          b?
8598 +4 ^^          c+
8599 +0  ^          a+
8600 +2  ^ ^        b?
8601 +4  ^  ^       c+
8602 +6  ^     ^    (*FAIL)
8603 +6  ^    ^     (*FAIL)
8604 +6  ^   ^      (*FAIL)
8605 +4  ^ ^        c+
8606 +2  ^^         b?
8607 +4  ^^         c+
8608 +0   ^         a+
8609 +2   ^^        b?
8610 +4   ^ ^       c+
8611 +6   ^    ^    (*FAIL)
8612 +6   ^   ^     (*FAIL)
8613 +6   ^  ^      (*FAIL)
8614 +4   ^^        c+
8615No match
8616
8617/a+b?(*PRUNE)c+(*FAIL)/C
8618    aaabccc
8619--->aaabccc
8620 +0 ^           a+
8621 +2 ^  ^        b?
8622 +4 ^   ^       (*PRUNE)
8623+12 ^   ^       c+
8624+14 ^      ^    (*FAIL)
8625+14 ^     ^     (*FAIL)
8626+14 ^    ^      (*FAIL)
8627 +0  ^          a+
8628 +2  ^ ^        b?
8629 +4  ^  ^       (*PRUNE)
8630+12  ^  ^       c+
8631+14  ^     ^    (*FAIL)
8632+14  ^    ^     (*FAIL)
8633+14  ^   ^      (*FAIL)
8634 +0   ^         a+
8635 +2   ^^        b?
8636 +4   ^ ^       (*PRUNE)
8637+12   ^ ^       c+
8638+14   ^    ^    (*FAIL)
8639+14   ^   ^     (*FAIL)
8640+14   ^  ^      (*FAIL)
8641No match
8642
8643/a+b?(*COMMIT)c+(*FAIL)/C
8644    aaabccc
8645--->aaabccc
8646 +0 ^           a+
8647 +2 ^  ^        b?
8648 +4 ^   ^       (*COMMIT)
8649+13 ^   ^       c+
8650+15 ^      ^    (*FAIL)
8651+15 ^     ^     (*FAIL)
8652+15 ^    ^      (*FAIL)
8653No match
8654
8655/a+b?(*SKIP)c+(*FAIL)/C
8656    aaabcccaaabccc
8657--->aaabcccaaabccc
8658 +0 ^                  a+
8659 +2 ^  ^               b?
8660 +4 ^   ^              (*SKIP)
8661+11 ^   ^              c+
8662+13 ^      ^           (*FAIL)
8663+13 ^     ^            (*FAIL)
8664+13 ^    ^             (*FAIL)
8665 +0        ^           a+
8666 +2        ^  ^        b?
8667 +4        ^   ^       (*SKIP)
8668+11        ^   ^       c+
8669+13        ^      ^    (*FAIL)
8670+13        ^     ^     (*FAIL)
8671+13        ^    ^      (*FAIL)
8672No match
8673
8674/a+b?(*THEN)c+(*FAIL)/C
8675    aaabccc
8676--->aaabccc
8677 +0 ^           a+
8678 +2 ^  ^        b?
8679 +4 ^   ^       (*THEN)
8680+11 ^   ^       c+
8681+13 ^      ^    (*FAIL)
8682+13 ^     ^     (*FAIL)
8683+13 ^    ^      (*FAIL)
8684 +0  ^          a+
8685 +2  ^ ^        b?
8686 +4  ^  ^       (*THEN)
8687+11  ^  ^       c+
8688+13  ^     ^    (*FAIL)
8689+13  ^    ^     (*FAIL)
8690+13  ^   ^      (*FAIL)
8691 +0   ^         a+
8692 +2   ^^        b?
8693 +4   ^ ^       (*THEN)
8694+11   ^ ^       c+
8695+13   ^    ^    (*FAIL)
8696+13   ^   ^     (*FAIL)
8697+13   ^  ^      (*FAIL)
8698No match
8699
8700/a(*MARK)b/
8701Failed: (*MARK) must have an argument at offset 7
8702
8703/(?i:A{1,}\6666666666)/
8704Failed: number is too big at offset 19
8705
8706/\g6666666666/
8707Failed: number is too big at offset 11
8708
8709/[\g6666666666]/
8710Failed: number is too big at offset 12
8711
8712/(?1)\c[/
8713Failed: reference to non-existent subpattern at offset 3
8714
8715/.+A/<crlf>
8716    \r\nA
8717No match
8718
8719/\nA/<crlf>
8720    \r\nA
8721 0: \x0aA
8722
8723/[\r\n]A/<crlf>
8724    \r\nA
8725 0: \x0aA
8726
8727/(\r|\n)A/<crlf>
8728    \r\nA
8729 0: \x0aA
8730 1: \x0a
8731
8732/a(*CR)b/
8733Failed: (*VERB) not recognized at offset 5
8734
8735/(*CR)a.b/
8736    a\nb
8737 0: a\x0ab
8738    ** Failers
8739No match
8740    a\rb
8741No match
8742
8743/(*CR)a.b/<lf>
8744    a\nb
8745 0: a\x0ab
8746    ** Failers
8747No match
8748    a\rb
8749No match
8750
8751/(*LF)a.b/<CRLF>
8752    a\rb
8753 0: a\x0db
8754    ** Failers
8755No match
8756    a\nb
8757No match
8758
8759/(*CRLF)a.b/
8760    a\rb
8761 0: a\x0db
8762    a\nb
8763 0: a\x0ab
8764    ** Failers
8765No match
8766    a\r\nb
8767No match
8768
8769/(*ANYCRLF)a.b/<CR>
8770    ** Failers
8771No match
8772    a\rb
8773No match
8774    a\nb
8775No match
8776    a\r\nb
8777No match
8778
8779/(*ANY)a.b/<cr>
8780    ** Failers
8781No match
8782    a\rb
8783No match
8784    a\nb
8785No match
8786    a\r\nb
8787No match
8788    a\x85b
8789No match
8790
8791/(*ANY).*/g
8792    abc\r\ndef
8793 0: abc
8794 0:
8795 0: def
8796 0:
8797
8798/(*ANYCRLF).*/g
8799    abc\r\ndef
8800 0: abc
8801 0:
8802 0: def
8803 0:
8804
8805/(*CRLF).*/g
8806    abc\r\ndef
8807 0: abc
8808 0:
8809 0: def
8810 0:
8811
8812/a\Rb/I<bsr_anycrlf>
8813Capturing subpattern count = 0
8814Options: bsr_anycrlf
8815First char = 'a'
8816Need char = 'b'
8817    a\rb
8818 0: a\x0db
8819    a\nb
8820 0: a\x0ab
8821    a\r\nb
8822 0: a\x0d\x0ab
8823    ** Failers
8824No match
8825    a\x85b
8826No match
8827    a\x0bb
8828No match
8829
8830/a\Rb/I<bsr_unicode>
8831Capturing subpattern count = 0
8832Options: bsr_unicode
8833First char = 'a'
8834Need char = 'b'
8835    a\rb
8836 0: a\x0db
8837    a\nb
8838 0: a\x0ab
8839    a\r\nb
8840 0: a\x0d\x0ab
8841    a\x85b
8842 0: a\x85b
8843    a\x0bb
8844 0: a\x0bb
8845    ** Failers
8846No match
8847    a\x85b\<bsr_anycrlf>
8848No match
8849    a\x0bb\<bsr_anycrlf>
8850No match
8851
8852/a\R?b/I<bsr_anycrlf>
8853Capturing subpattern count = 0
8854Options: bsr_anycrlf
8855First char = 'a'
8856Need char = 'b'
8857    a\rb
8858 0: a\x0db
8859    a\nb
8860 0: a\x0ab
8861    a\r\nb
8862 0: a\x0d\x0ab
8863    ** Failers
8864No match
8865    a\x85b
8866No match
8867    a\x0bb
8868No match
8869
8870/a\R?b/I<bsr_unicode>
8871Capturing subpattern count = 0
8872Options: bsr_unicode
8873First char = 'a'
8874Need char = 'b'
8875    a\rb
8876 0: a\x0db
8877    a\nb
8878 0: a\x0ab
8879    a\r\nb
8880 0: a\x0d\x0ab
8881    a\x85b
8882 0: a\x85b
8883    a\x0bb
8884 0: a\x0bb
8885    ** Failers
8886No match
8887    a\x85b\<bsr_anycrlf>
8888No match
8889    a\x0bb\<bsr_anycrlf>
8890No match
8891
8892/a\R{2,4}b/I<bsr_anycrlf>
8893Capturing subpattern count = 0
8894Options: bsr_anycrlf
8895First char = 'a'
8896Need char = 'b'
8897    a\r\n\nb
8898 0: a\x0d\x0a\x0ab
8899    a\n\r\rb
8900 0: a\x0a\x0d\x0db
8901    a\r\n\r\n\r\n\r\nb
8902 0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab
8903    ** Failers
8904No match
8905    a\x85\85b
8906No match
8907    a\x0b\0bb
8908No match
8909
8910/a\R{2,4}b/I<bsr_unicode>
8911Capturing subpattern count = 0
8912Options: bsr_unicode
8913First char = 'a'
8914Need char = 'b'
8915    a\r\rb
8916 0: a\x0d\x0db
8917    a\n\n\nb
8918 0: a\x0a\x0a\x0ab
8919    a\r\n\n\r\rb
8920 0: a\x0d\x0a\x0a\x0d\x0db
8921    a\x85\85b
8922No match
8923    a\x0b\0bb
8924No match
8925    ** Failers
8926No match
8927    a\r\r\r\r\rb
8928No match
8929    a\x85\85b\<bsr_anycrlf>
8930No match
8931    a\x0b\0bb\<bsr_anycrlf>
8932No match
8933
8934/(*BSR_ANYCRLF)a\Rb/I
8935Capturing subpattern count = 0
8936Options: bsr_anycrlf
8937First char = 'a'
8938Need char = 'b'
8939    a\nb
8940 0: a\x0ab
8941    a\rb
8942 0: a\x0db
8943
8944/(*BSR_UNICODE)a\Rb/I
8945Capturing subpattern count = 0
8946Options: bsr_unicode
8947First char = 'a'
8948Need char = 'b'
8949    a\x85b
8950 0: a\x85b
8951
8952/(*BSR_ANYCRLF)(*CRLF)a\Rb/I
8953Capturing subpattern count = 0
8954Options: bsr_anycrlf
8955Forced newline sequence: CRLF
8956First char = 'a'
8957Need char = 'b'
8958    a\nb
8959 0: a\x0ab
8960    a\rb
8961 0: a\x0db
8962
8963/(*CRLF)(*BSR_UNICODE)a\Rb/I
8964Capturing subpattern count = 0
8965Options: bsr_unicode
8966Forced newline sequence: CRLF
8967First char = 'a'
8968Need char = 'b'
8969    a\x85b
8970 0: a\x85b
8971
8972/(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
8973Capturing subpattern count = 0
8974Options: bsr_anycrlf
8975Forced newline sequence: CR
8976First char = 'a'
8977Need char = 'b'
8978
8979/(?<a>)(?&)/
8980Failed: subpattern name expected at offset 9
8981
8982/(?<abc>)(?&a)/
8983Failed: reference to non-existent subpattern at offset 12
8984
8985/(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
8986Failed: reference to non-existent subpattern at offset 32
8987
8988/(?+-a)/
8989Failed: digit expected after (?+ at offset 3
8990
8991/(?-+a)/
8992Failed: unrecognized character after (? or (?- at offset 3
8993
8994/(?(-1))/
8995Failed: reference to non-existent subpattern at offset 6
8996
8997/(?(+10))/
8998Failed: reference to non-existent subpattern at offset 7
8999
9000/(?(10))/
9001Failed: reference to non-existent subpattern at offset 6
9002
9003/(?(+2))()()/
9004
9005/(?(2))()()/
9006
9007/\k''/
9008Failed: subpattern name expected at offset 3
9009
9010/\k<>/
9011Failed: subpattern name expected at offset 3
9012
9013/\k{}/
9014Failed: subpattern name expected at offset 3
9015
9016/(?P=)/
9017Failed: subpattern name expected at offset 4
9018
9019/(?P>)/
9020Failed: subpattern name expected at offset 4
9021
9022/(?!\w)(?R)/
9023Failed: recursive call could loop indefinitely at offset 9
9024
9025/(?=\w)(?R)/
9026Failed: recursive call could loop indefinitely at offset 9
9027
9028/(?<!\w)(?R)/
9029Failed: recursive call could loop indefinitely at offset 10
9030
9031/(?<=\w)(?R)/
9032Failed: recursive call could loop indefinitely at offset 10
9033
9034/[[:foo:]]/
9035Failed: unknown POSIX class name at offset 3
9036
9037/[[:1234:]]/
9038Failed: unknown POSIX class name at offset 3
9039
9040/[[:f\oo:]]/
9041Failed: unknown POSIX class name at offset 3
9042
9043/[[: :]]/
9044Failed: unknown POSIX class name at offset 3
9045
9046/[[:...:]]/
9047Failed: unknown POSIX class name at offset 3
9048
9049/[[:l\ower:]]/
9050Failed: unknown POSIX class name at offset 3
9051
9052/[[:abc\:]]/
9053Failed: unknown POSIX class name at offset 3
9054
9055/[abc[:x\]pqr:]]/
9056Failed: unknown POSIX class name at offset 6
9057
9058/[[:a\dz:]]/
9059Failed: unknown POSIX class name at offset 3
9060
9061/(^(a|b\g<-1'c))/
9062Failed: \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number at offset 15
9063
9064/^(?+1)(?<a>x|y){0}z/
9065    xzxx
9066 0: xz
9067    yzyy
9068 0: yz
9069    ** Failers
9070No match
9071    xxz
9072No match
9073
9074/(\3)(\1)(a)/
9075    cat
9076No match
9077
9078/(\3)(\1)(a)/<JS>
9079    cat
9080 0: a
9081 1:
9082 2:
9083 3: a
9084
9085/TA]/
9086    The ACTA] comes
9087 0: TA]
9088
9089/TA]/<JS>
9090Failed: ] is an invalid data character in JavaScript compatibility mode at offset 2
9091
9092/(?2)[]a()b](abc)/
9093Failed: reference to non-existent subpattern at offset 3
9094
9095/(?2)[^]a()b](abc)/
9096Failed: reference to non-existent subpattern at offset 3
9097
9098/(?1)[]a()b](abc)/
9099    abcbabc
9100 0: abcbabc
9101 1: abc
9102    ** Failers
9103No match
9104    abcXabc
9105No match
9106
9107/(?1)[^]a()b](abc)/
9108    abcXabc
9109 0: abcXabc
9110 1: abc
9111    ** Failers
9112No match
9113    abcbabc
9114No match
9115
9116/(?2)[]a()b](abc)(xyz)/
9117    xyzbabcxyz
9118 0: xyzbabcxyz
9119 1: abc
9120 2: xyz
9121
9122/(?&N)[]a(?<N>)](?<M>abc)/
9123Failed: reference to non-existent subpattern at offset 4
9124
9125/(?&N)[]a(?<N>)](abc)/
9126Failed: reference to non-existent subpattern at offset 4
9127
9128/a[]b/
9129Failed: missing terminating ] for character class at offset 4
9130
9131/a[^]b/
9132Failed: missing terminating ] for character class at offset 5
9133
9134/a[]b/<JS>
9135    ** Failers
9136No match
9137    ab
9138No match
9139
9140/a[]+b/<JS>
9141    ** Failers
9142No match
9143    ab
9144No match
9145
9146/a[]*+b/<JS>
9147    ** Failers
9148No match
9149    ab
9150No match
9151
9152/a[^]b/<JS>
9153    aXb
9154 0: aXb
9155    a\nb
9156 0: a\x0ab
9157    ** Failers
9158No match
9159    ab
9160No match
9161
9162/a[^]+b/<JS>
9163    aXb
9164 0: aXb
9165    a\nX\nXb
9166 0: a\x0aX\x0aXb
9167    ** Failers
9168No match
9169    ab
9170No match
9171
9172/a(?!)+b/
9173Failed: nothing to repeat at offset 5
9174
9175/a(*FAIL)+b/
9176Failed: nothing to repeat at offset 8
9177
9178/(abc|pqr|123){0}[xyz]/SI
9179Capturing subpattern count = 1
9180No options
9181No first char
9182No need char
9183Subject length lower bound = 1
9184Starting byte set: x y z
9185
9186/(?(?=.*b)b|^)/CI
9187Capturing subpattern count = 0
9188Options:
9189No first char
9190No need char
9191   adc
9192--->adc
9193 +0 ^       (?(?=.*b)b|^)
9194 +2 ^       (?=.*b)
9195 +5 ^       .*
9196 +7 ^  ^    b
9197 +7 ^ ^     b
9198 +7 ^^      b
9199 +7 ^       b
9200+12 ^       )
9201+13 ^
9202 0:
9203   abc
9204--->abc
9205 +0 ^       (?(?=.*b)b|^)
9206 +2 ^       (?=.*b)
9207 +5 ^       .*
9208 +7 ^  ^    b
9209 +7 ^ ^     b
9210 +7 ^^      b
9211 +8 ^ ^     )
9212 +9 ^       b
9213 +0  ^      (?(?=.*b)b|^)
9214 +2  ^      (?=.*b)
9215 +5  ^      .*
9216 +7  ^ ^    b
9217 +7  ^^     b
9218 +7  ^      b
9219 +8  ^^     )
9220 +9  ^      b
9221+10  ^^     |
9222+13  ^^
9223 0: b
9224
9225/(?(?=b).*b|^d)/I
9226Capturing subpattern count = 0
9227No options
9228No first char
9229No need char
9230
9231/(?(?=.*b).*b|^d)/I
9232Capturing subpattern count = 0
9233No options
9234First char at start or follows newline
9235No need char
9236
9237/a?|b?/P
9238    abc
9239 0: a
9240    ** Failers
9241 0:
9242    ddd\N
9243No match: POSIX code 17: match failed
9244
9245/xyz/C
9246  xyz
9247--->xyz
9248 +0 ^       x
9249 +1 ^^      y
9250 +2 ^ ^     z
9251 +3 ^  ^
9252 0: xyz
9253  abcxyz
9254--->abcxyz
9255 +0    ^       x
9256 +1    ^^      y
9257 +2    ^ ^     z
9258 +3    ^  ^
9259 0: xyz
9260  abcxyz\Y
9261--->abcxyz
9262 +0 ^          x
9263 +0  ^         x
9264 +0   ^        x
9265 +0    ^       x
9266 +1    ^^      y
9267 +2    ^ ^     z
9268 +3    ^  ^
9269 0: xyz
9270  ** Failers
9271No match
9272  abc
9273No match
9274  abc\Y
9275--->abc
9276 +0 ^       x
9277 +0  ^      x
9278 +0   ^     x
9279 +0    ^    x
9280No match
9281  abcxypqr
9282No match
9283  abcxypqr\Y
9284--->abcxypqr
9285 +0 ^            x
9286 +0  ^           x
9287 +0   ^          x
9288 +0    ^         x
9289 +1    ^^        y
9290 +2    ^ ^       z
9291 +0     ^        x
9292 +0      ^       x
9293 +0       ^      x
9294 +0        ^     x
9295 +0         ^    x
9296No match
9297
9298/(*NO_START_OPT)xyz/C
9299  abcxyz
9300--->abcxyz
9301+15 ^          x
9302+15  ^         x
9303+15   ^        x
9304+15    ^       x
9305+16    ^^      y
9306+17    ^ ^     z
9307+18    ^  ^
9308 0: xyz
9309
9310/xyz/CY
9311  abcxyz
9312--->abcxyz
9313 +0 ^          x
9314 +0  ^         x
9315 +0   ^        x
9316 +0    ^       x
9317 +1    ^^      y
9318 +2    ^ ^     z
9319 +3    ^  ^
9320 0: xyz
9321
9322/^"((?(?=[a])[^"])|b)*"$/C
9323    "ab"
9324--->"ab"
9325 +0 ^        ^
9326 +1 ^        "
9327 +2 ^^       ((?(?=[a])[^"])|b)*
9328 +3 ^^       (?(?=[a])[^"])
9329 +5 ^^       (?=[a])
9330 +8 ^^       [a]
9331+11 ^ ^      )
9332+12 ^^       [^"]
9333+16 ^ ^      )
9334+17 ^ ^      |
9335 +3 ^ ^      (?(?=[a])[^"])
9336 +5 ^ ^      (?=[a])
9337 +8 ^ ^      [a]
9338+21 ^ ^      "
9339+18 ^ ^      b
9340+19 ^  ^     )
9341 +3 ^  ^     (?(?=[a])[^"])
9342 +5 ^  ^     (?=[a])
9343 +8 ^  ^     [a]
9344+21 ^  ^     "
9345+22 ^   ^    $
9346+23 ^   ^
9347 0: "ab"
9348 1:
9349
9350/^"((?(?=[a])[^"])|b)*"$/
9351    "ab"
9352 0: "ab"
9353 1:
9354
9355/^X(?5)(a)(?|(b)|(q))(c)(d)Y/
9356Failed: reference to non-existent subpattern at offset 5
9357
9358/^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
9359    XYabcdY
9360 0: XYabcdY
9361 1: a
9362 2: b
9363 3: c
9364 4: d
9365 5: Y
9366
9367/Xa{2,4}b/
9368    X\P
9369Partial match: X
9370    Xa\P
9371Partial match: Xa
9372    Xaa\P
9373Partial match: Xaa
9374    Xaaa\P
9375Partial match: Xaaa
9376    Xaaaa\P
9377Partial match: Xaaaa
9378
9379/Xa{2,4}?b/
9380    X\P
9381Partial match: X
9382    Xa\P
9383Partial match: Xa
9384    Xaa\P
9385Partial match: Xaa
9386    Xaaa\P
9387Partial match: Xaaa
9388    Xaaaa\P
9389Partial match: Xaaaa
9390
9391/Xa{2,4}+b/
9392    X\P
9393Partial match: X
9394    Xa\P
9395Partial match: Xa
9396    Xaa\P
9397Partial match: Xaa
9398    Xaaa\P
9399Partial match: Xaaa
9400    Xaaaa\P
9401Partial match: Xaaaa
9402
9403/X\d{2,4}b/
9404    X\P
9405Partial match: X
9406    X3\P
9407Partial match: X3
9408    X33\P
9409Partial match: X33
9410    X333\P
9411Partial match: X333
9412    X3333\P
9413Partial match: X3333
9414
9415/X\d{2,4}?b/
9416    X\P
9417Partial match: X
9418    X3\P
9419Partial match: X3
9420    X33\P
9421Partial match: X33
9422    X333\P
9423Partial match: X333
9424    X3333\P
9425Partial match: X3333
9426
9427/X\d{2,4}+b/
9428    X\P
9429Partial match: X
9430    X3\P
9431Partial match: X3
9432    X33\P
9433Partial match: X33
9434    X333\P
9435Partial match: X333
9436    X3333\P
9437Partial match: X3333
9438
9439/X\D{2,4}b/
9440    X\P
9441Partial match: X
9442    Xa\P
9443Partial match: Xa
9444    Xaa\P
9445Partial match: Xaa
9446    Xaaa\P
9447Partial match: Xaaa
9448    Xaaaa\P
9449Partial match: Xaaaa
9450
9451/X\D{2,4}?b/
9452    X\P
9453Partial match: X
9454    Xa\P
9455Partial match: Xa
9456    Xaa\P
9457Partial match: Xaa
9458    Xaaa\P
9459Partial match: Xaaa
9460    Xaaaa\P
9461Partial match: Xaaaa
9462
9463/X\D{2,4}+b/
9464    X\P
9465Partial match: X
9466    Xa\P
9467Partial match: Xa
9468    Xaa\P
9469Partial match: Xaa
9470    Xaaa\P
9471Partial match: Xaaa
9472    Xaaaa\P
9473Partial match: Xaaaa
9474
9475/X[abc]{2,4}b/
9476    X\P
9477Partial match: X
9478    Xa\P
9479Partial match: Xa
9480    Xaa\P
9481Partial match: Xaa
9482    Xaaa\P
9483Partial match: Xaaa
9484    Xaaaa\P
9485Partial match: Xaaaa
9486
9487/X[abc]{2,4}?b/
9488    X\P
9489Partial match: X
9490    Xa\P
9491Partial match: Xa
9492    Xaa\P
9493Partial match: Xaa
9494    Xaaa\P
9495Partial match: Xaaa
9496    Xaaaa\P
9497Partial match: Xaaaa
9498
9499/X[abc]{2,4}+b/
9500    X\P
9501Partial match: X
9502    Xa\P
9503Partial match: Xa
9504    Xaa\P
9505Partial match: Xaa
9506    Xaaa\P
9507Partial match: Xaaa
9508    Xaaaa\P
9509Partial match: Xaaaa
9510
9511/X[^a]{2,4}b/
9512    X\P
9513Partial match: X
9514    Xz\P
9515Partial match: Xz
9516    Xzz\P
9517Partial match: Xzz
9518    Xzzz\P
9519Partial match: Xzzz
9520    Xzzzz\P
9521Partial match: Xzzzz
9522
9523/X[^a]{2,4}?b/
9524    X\P
9525Partial match: X
9526    Xz\P
9527Partial match: Xz
9528    Xzz\P
9529Partial match: Xzz
9530    Xzzz\P
9531Partial match: Xzzz
9532    Xzzzz\P
9533Partial match: Xzzzz
9534
9535/X[^a]{2,4}+b/
9536    X\P
9537Partial match: X
9538    Xz\P
9539Partial match: Xz
9540    Xzz\P
9541Partial match: Xzz
9542    Xzzz\P
9543Partial match: Xzzz
9544    Xzzzz\P
9545Partial match: Xzzzz
9546
9547/(Y)X\1{2,4}b/
9548    YX\P
9549Partial match: YX
9550    YXY\P
9551Partial match: YXY
9552    YXYY\P
9553Partial match: YXYY
9554    YXYYY\P
9555Partial match: YXYYY
9556    YXYYYY\P
9557Partial match: YXYYYY
9558
9559/(Y)X\1{2,4}?b/
9560    YX\P
9561Partial match: YX
9562    YXY\P
9563Partial match: YXY
9564    YXYY\P
9565Partial match: YXYY
9566    YXYYY\P
9567Partial match: YXYYY
9568    YXYYYY\P
9569Partial match: YXYYYY
9570
9571/(Y)X\1{2,4}+b/
9572    YX\P
9573Partial match: YX
9574    YXY\P
9575Partial match: YXY
9576    YXYY\P
9577Partial match: YXYY
9578    YXYYY\P
9579Partial match: YXYYY
9580    YXYYYY\P
9581Partial match: YXYYYY
9582
9583/\++\KZ|\d+X|9+Y/
9584    ++++123999\P
9585Partial match: 123999
9586    ++++123999Y\P
9587 0: 999Y
9588    ++++Z1234\P
9589 0: Z
9590
9591/Z(*F)/
9592    Z\P
9593No match
9594    ZA\P
9595No match
9596
9597/Z(?!)/
9598    Z\P
9599No match
9600    ZA\P
9601No match
9602
9603/dog(sbody)?/
9604    dogs\P
9605 0: dog
9606    dogs\P\P
9607Partial match: dogs
9608
9609/dog(sbody)??/
9610    dogs\P
9611 0: dog
9612    dogs\P\P
9613 0: dog
9614
9615/dog|dogsbody/
9616    dogs\P
9617 0: dog
9618    dogs\P\P
9619 0: dog
9620
9621/dogsbody|dog/
9622    dogs\P
9623 0: dog
9624    dogs\P\P
9625Partial match: dogs
9626
9627/\bthe cat\b/
9628    the cat\P
9629 0: the cat
9630    the cat\P\P
9631Partial match: the cat
9632
9633/abc/
9634   abc\P
9635 0: abc
9636   abc\P\P
9637 0: abc
9638
9639/\w+A/P
9640   CDAAAAB
9641 0: CDAAAA
9642
9643/\w+A/PU
9644   CDAAAAB
9645 0: CDA
9646
9647/abc\K123/
9648    xyzabc123pqr
9649 0: 123
9650    xyzabc12\P
9651Partial match: abc12
9652    xyzabc12\P\P
9653Partial match: abc12
9654
9655/(?<=abc)123/
9656    xyzabc123pqr
9657 0: 123
9658    xyzabc12\P
9659Partial match: abc12
9660    xyzabc12\P\P
9661Partial match: abc12
9662
9663/\babc\b/
9664    +++abc+++
9665 0: abc
9666    +++ab\P
9667Partial match: +ab
9668    +++ab\P\P
9669Partial match: +ab
9670
9671/(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
9672------------------------------------------------------------------
9673        Bra
9674        Once
9675        Recurse
9676        Ket
9677        Once
9678        Recurse
9679        Ket
9680        Cond
9681        Cond def
9682        CBra 1
9683        <
9684        [^m]
9685        [^>]
9686        >
9687        [^<]
9688        Ket
9689        CBra 2
9690        \w*+
9691        Ket
9692        Ket
9693        Ket
9694        End
9695------------------------------------------------------------------
9696
9697/(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
9698------------------------------------------------------------------
9699        Bra
9700        Once
9701        Recurse
9702        Ket
9703        Once
9704        Recurse
9705        Ket
9706        Cond
9707        Cond def
9708        CBra 1
9709        <
9710        [\x00-/:-\xff] (neg)
9711        [^>]
9712        >
9713        [^<]
9714        Ket
9715        CBra 2
9716        \w*+
9717        Ket
9718        Ket
9719        Ket
9720        End
9721------------------------------------------------------------------
9722
9723/(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
9724------------------------------------------------------------------
9725        Bra
9726        CBra 1
9727        ab
9728        Ket
9729        CBra 2
9730        x
9731        CBra 3
9732        y
9733        Ket
9734        z
9735        CBra 4
9736        cd
9737        Close 4
9738        Close 2
9739        *ACCEPT
9740        Ket
9741        Ket
9742        pq
9743        Ket
9744        End
9745------------------------------------------------------------------
9746
9747/abc\K/+
9748    abcdef
9749 0:
9750 0+ def
9751    abcdef\N\N
9752 0:
9753 0+ def
9754    xyzabcdef\N\N
9755 0:
9756 0+ def
9757    ** Failers
9758No match
9759    abcdef\N
9760No match
9761    xyzabcdef\N
9762No match
9763
9764/^(?:(?=abc)|abc\K)/+
9765    abcdef
9766 0:
9767 0+ abcdef
9768    abcdef\N\N
9769 0:
9770 0+ def
9771    ** Failers
9772No match
9773    abcdef\N
9774No match
9775
9776/a?b?/+
9777    xyz
9778 0:
9779 0+ xyz
9780    xyzabc
9781 0:
9782 0+ xyzabc
9783    xyzabc\N
9784 0: ab
9785 0+ c
9786    xyzabc\N\N
9787 0:
9788 0+ yzabc
9789    xyz\N\N
9790 0:
9791 0+ yz
9792    ** Failers
9793 0:
9794 0+ ** Failers
9795    xyz\N
9796No match
9797
9798/^a?b?/+
9799    xyz
9800 0:
9801 0+ xyz
9802    xyzabc
9803 0:
9804 0+ xyzabc
9805    ** Failers
9806 0:
9807 0+ ** Failers
9808    xyzabc\N
9809No match
9810    xyzabc\N\N
9811No match
9812    xyz\N\N
9813No match
9814    xyz\N
9815No match
9816
9817/^(?<name>a|b\g<name>c)/
9818    aaaa
9819 0: a
9820 1: a
9821    bacxxx
9822 0: bac
9823 1: bac
9824    bbaccxxx
9825 0: bbacc
9826 1: bbacc
9827    bbbacccxx
9828 0: bbbaccc
9829 1: bbbaccc
9830
9831/^(?<name>a|b\g'name'c)/
9832    aaaa
9833 0: a
9834 1: a
9835    bacxxx
9836 0: bac
9837 1: bac
9838    bbaccxxx
9839 0: bbacc
9840 1: bbacc
9841    bbbacccxx
9842 0: bbbaccc
9843 1: bbbaccc
9844
9845/^(a|b\g<1>c)/
9846    aaaa
9847 0: a
9848 1: a
9849    bacxxx
9850 0: bac
9851 1: bac
9852    bbaccxxx
9853 0: bbacc
9854 1: bbacc
9855    bbbacccxx
9856 0: bbbaccc
9857 1: bbbaccc
9858
9859/^(a|b\g'1'c)/
9860    aaaa
9861 0: a
9862 1: a
9863    bacxxx
9864 0: bac
9865 1: bac
9866    bbaccxxx
9867 0: bbacc
9868 1: bbacc
9869    bbbacccxx
9870 0: bbbaccc
9871 1: bbbaccc
9872
9873/^(a|b\g'-1'c)/
9874    aaaa
9875 0: a
9876 1: a
9877    bacxxx
9878 0: bac
9879 1: bac
9880    bbaccxxx
9881 0: bbacc
9882 1: bbacc
9883    bbbacccxx
9884 0: bbbaccc
9885 1: bbbaccc
9886
9887/(^(a|b\g<-1>c))/
9888    aaaa
9889 0: a
9890 1: a
9891 2: a
9892    bacxxx
9893 0: bac
9894 1: bac
9895 2: bac
9896    bbaccxxx
9897 0: bbacc
9898 1: bbacc
9899 2: bbacc
9900    bbbacccxx
9901 0: bbbaccc
9902 1: bbbaccc
9903 2: bbbaccc
9904
9905/(?-i:\g<name>)(?i:(?<name>a))/
9906    XaaX
9907 0: aa
9908 1: a
9909    XAAX
9910 0: AA
9911 1: A
9912
9913/(?i:\g<name>)(?-i:(?<name>a))/
9914    XaaX
9915 0: aa
9916 1: a
9917    ** Failers
9918No match
9919    XAAX
9920No match
9921
9922/(?-i:\g<+1>)(?i:(a))/
9923    XaaX
9924 0: aa
9925 1: a
9926    XAAX
9927 0: AA
9928 1: A
9929
9930/(?=(?<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>\})\}))\{/
9931
9932/(?<n>a|b|c)\g<n>*/
9933   abc
9934 0: abc
9935 1: a
9936   accccbbb
9937 0: accccbbb
9938 1: a
9939
9940/^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
9941    XYabcdY
9942 0: XYabcdY
9943 1: a
9944 2: b
9945 3: <unset>
9946 4: <unset>
9947 5: c
9948 6: d
9949 7: Y
9950
9951/(?<=b(?1)|zzz)(a)/
9952    xbaax
9953 0: a
9954 1: a
9955    xzzzax
9956 0: a
9957 1: a
9958
9959/(a)(?<=b\1)/
9960Failed: lookbehind assertion is not fixed length at offset 10
9961
9962/(a)(?<=b+(?1))/
9963Failed: lookbehind assertion is not fixed length at offset 13
9964
9965/(a+)(?<=b(?1))/
9966Failed: lookbehind assertion is not fixed length at offset 14
9967
9968/(a(?<=b(?1)))/
9969Failed: lookbehind assertion is not fixed length at offset 13
9970
9971/(?<=b(?1))xyz/
9972Failed: reference to non-existent subpattern at offset 8
9973
9974/(?<=b(?1))xyz(b+)pqrstuvew/
9975Failed: lookbehind assertion is not fixed length at offset 26
9976
9977/(a|bc)\1/SI
9978Capturing subpattern count = 1
9979Max back reference = 1
9980No options
9981No first char
9982No need char
9983Subject length lower bound = 2
9984Starting byte set: a b
9985
9986/(a|bc)\1{2,3}/SI
9987Capturing subpattern count = 1
9988Max back reference = 1
9989No options
9990No first char
9991No need char
9992Subject length lower bound = 3
9993Starting byte set: a b
9994
9995/(a|bc)(?1)/SI
9996Capturing subpattern count = 1
9997No options
9998No first char
9999No need char
10000Subject length lower bound = 2
10001Starting byte set: a b
10002
10003/(a|b\1)(a|b\1)/SI
10004Capturing subpattern count = 2
10005Max back reference = 1
10006No options
10007No first char
10008No need char
10009Subject length lower bound = 2
10010Starting byte set: a b
10011
10012/(a|b\1){2}/SI
10013Capturing subpattern count = 1
10014Max back reference = 1
10015No options
10016No first char
10017No need char
10018Subject length lower bound = 2
10019Starting byte set: a b
10020
10021/(a|bbbb\1)(a|bbbb\1)/SI
10022Capturing subpattern count = 2
10023Max back reference = 1
10024No options
10025No first char
10026No need char
10027Subject length lower bound = 2
10028Starting byte set: a b
10029
10030/(a|bbbb\1){2}/SI
10031Capturing subpattern count = 1
10032Max back reference = 1
10033No options
10034No first char
10035No need char
10036Subject length lower bound = 2
10037Starting byte set: a b
10038
10039/^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
10040Capturing subpattern count = 1
10041Options: anchored
10042No first char
10043Need char = ':'
10044Subject length lower bound = 22
10045No set of starting bytes
10046
10047/  (?: [\040\t] |  \(
10048(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10049\)  )*                          # optional leading comment
10050(?:    (?:
10051[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10052(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10053|
10054" (?:                      # opening quote...
10055[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10056|                     #    or
10057\\ [^\x80-\xff]           #   Escaped something (something != CR)
10058)* "  # closing quote
10059)                    # initial word
10060(?:  (?: [\040\t] |  \(
10061(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10062\)  )*  \.  (?: [\040\t] |  \(
10063(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10064\)  )*   (?:
10065[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10066(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10067|
10068" (?:                      # opening quote...
10069[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10070|                     #    or
10071\\ [^\x80-\xff]           #   Escaped something (something != CR)
10072)* "  # closing quote
10073)  )* # further okay, if led by a period
10074(?: [\040\t] |  \(
10075(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10076\)  )*  @  (?: [\040\t] |  \(
10077(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10078\)  )*    (?:
10079[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10080(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10081|   \[                         # [
10082(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10083\]                        #           ]
10084)                           # initial subdomain
10085(?:                                  #
10086(?: [\040\t] |  \(
10087(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10088\)  )*  \.                        # if led by a period...
10089(?: [\040\t] |  \(
10090(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10091\)  )*   (?:
10092[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10093(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10094|   \[                         # [
10095(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10096\]                        #           ]
10097)                     #   ...further okay
10098)*
10099# address
10100|                     #  or
10101(?:
10102[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10103(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10104|
10105" (?:                      # opening quote...
10106[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10107|                     #    or
10108\\ [^\x80-\xff]           #   Escaped something (something != CR)
10109)* "  # closing quote
10110)             # one word, optionally followed by....
10111(?:
10112[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
10113\(
10114(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10115\)       |  # comments, or...
10116
10117" (?:                      # opening quote...
10118[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10119|                     #    or
10120\\ [^\x80-\xff]           #   Escaped something (something != CR)
10121)* "  # closing quote
10122# quoted strings
10123)*
10124<  (?: [\040\t] |  \(
10125(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10126\)  )*                     # leading <
10127(?:  @  (?: [\040\t] |  \(
10128(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10129\)  )*    (?:
10130[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10131(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10132|   \[                         # [
10133(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10134\]                        #           ]
10135)                           # initial subdomain
10136(?:                                  #
10137(?: [\040\t] |  \(
10138(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10139\)  )*  \.                        # if led by a period...
10140(?: [\040\t] |  \(
10141(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10142\)  )*   (?:
10143[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10144(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10145|   \[                         # [
10146(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10147\]                        #           ]
10148)                     #   ...further okay
10149)*
10150
10151(?:  (?: [\040\t] |  \(
10152(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10153\)  )*  ,  (?: [\040\t] |  \(
10154(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10155\)  )*  @  (?: [\040\t] |  \(
10156(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10157\)  )*    (?:
10158[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10159(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10160|   \[                         # [
10161(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10162\]                        #           ]
10163)                           # initial subdomain
10164(?:                                  #
10165(?: [\040\t] |  \(
10166(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10167\)  )*  \.                        # if led by a period...
10168(?: [\040\t] |  \(
10169(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10170\)  )*   (?:
10171[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10172(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10173|   \[                         # [
10174(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10175\]                        #           ]
10176)                     #   ...further okay
10177)*
10178)* # further okay, if led by comma
10179:                                # closing colon
10180(?: [\040\t] |  \(
10181(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10182\)  )*  )? #       optional route
10183(?:
10184[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10185(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10186|
10187" (?:                      # opening quote...
10188[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10189|                     #    or
10190\\ [^\x80-\xff]           #   Escaped something (something != CR)
10191)* "  # closing quote
10192)                    # initial word
10193(?:  (?: [\040\t] |  \(
10194(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10195\)  )*  \.  (?: [\040\t] |  \(
10196(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10197\)  )*   (?:
10198[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10199(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10200|
10201" (?:                      # opening quote...
10202[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
10203|                     #    or
10204\\ [^\x80-\xff]           #   Escaped something (something != CR)
10205)* "  # closing quote
10206)  )* # further okay, if led by a period
10207(?: [\040\t] |  \(
10208(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10209\)  )*  @  (?: [\040\t] |  \(
10210(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10211\)  )*    (?:
10212[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10213(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10214|   \[                         # [
10215(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10216\]                        #           ]
10217)                           # initial subdomain
10218(?:                                  #
10219(?: [\040\t] |  \(
10220(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10221\)  )*  \.                        # if led by a period...
10222(?: [\040\t] |  \(
10223(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10224\)  )*   (?:
10225[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
10226(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
10227|   \[                         # [
10228(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
10229\]                        #           ]
10230)                     #   ...further okay
10231)*
10232#       address spec
10233(?: [\040\t] |  \(
10234(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10235\)  )*  > #                  trailing >
10236# name and address
10237)  (?: [\040\t] |  \(
10238(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
10239\)  )*                       # optional trailing comment
10240/xSI
10241Capturing subpattern count = 0
10242Contains explicit CR or LF match
10243Options: extended
10244No first char
10245No need char
10246Subject length lower bound = 3
10247Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8
10248  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
10249  f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
10250
10251/<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
10252Capturing subpattern count = 11
10253Options: caseless dotall
10254First char = '<'
10255Need char = '>'
10256Subject length lower bound = 47
10257No set of starting bytes
10258
10259"(?>.*/)foo"SI
10260Capturing subpattern count = 0
10261No options
10262First char at start or follows newline
10263Need char = 'o'
10264Subject length lower bound = 4
10265No set of starting bytes
10266
10267/(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
10268Capturing subpattern count = 0
10269Options: extended
10270No first char
10271Need char = '-'
10272Subject length lower bound = 8
10273No set of starting bytes
10274
10275/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
10276Capturing subpattern count = 1
10277Options: caseless
10278No first char
10279No need char
10280Subject length lower bound = 1
10281Starting byte set: A B C a b c
10282
10283/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
10284Capturing subpattern count = 0
10285No options
10286No first char
10287Need char = 'b'
10288Subject length lower bound = 41
10289Starting byte set: c d
10290
10291/<a[\s]+href[\s]*=[\s]*          # find <a href=
10292 ([\"\'])?                       # find single or double quote
10293 (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
10294                                 # quote, otherwise match up to next space
10295/isxSI
10296Capturing subpattern count = 3
10297Max back reference = 1
10298Options: caseless extended dotall
10299First char = '<'
10300Need char = '='
10301Subject length lower bound = 9
10302No set of starting bytes
10303
10304/^(?!:)                       # colon disallowed at start
10305  (?:                         # start of item
10306    (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
10307    (?(1)0 | () ) )           # if null previously matched, fail; else null
10308    :                         # followed by colon
10309  ){1,7}                      # end item; 1-7 of them required
10310  [0-9a-f]{1,4} $             # final hex number at end of string
10311  (?(1)|.)                    # check that there was an empty component
10312  /xiIS
10313Capturing subpattern count = 1
10314Options: anchored caseless extended
10315No first char
10316Need char = ':'
10317Subject length lower bound = 2
10318No set of starting bytes
10319
10320/(?|(?<a>A)|(?<a>B))/I
10321Capturing subpattern count = 1
10322Named capturing subpatterns:
10323  a   1
10324  a   1
10325No options
10326No first char
10327No need char
10328    AB\Ca
10329 0: A
10330 1: A
10331  C A (1) a
10332    BA\Ca
10333 0: B
10334 1: B
10335  C B (1) a
10336
10337/(?|(?<a>A)|(?<b>B))/
10338Failed: different names for subpatterns of the same number are not allowed at offset 15
10339
10340/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
10341    b(?<quote> (?<apostrophe>')|(?<realquote>")) )
10342    (?('quote')[a-z]+|[0-9]+)/JIx
10343Capturing subpattern count = 6
10344Named capturing subpatterns:
10345  apostrophe   2
10346  apostrophe   5
10347  quote        1
10348  quote        4
10349  realquote    3
10350  realquote    6
10351Options: extended dupnames
10352No first char
10353No need char
10354    a"aaaaa
10355 0: a"aaaaa
10356 1: "
10357 2: <unset>
10358 3: "
10359    b"aaaaa
10360 0: b"aaaaa
10361 1: <unset>
10362 2: <unset>
10363 3: <unset>
10364 4: "
10365 5: <unset>
10366 6: "
10367    ** Failers
10368No match
10369    b"11111
10370No match
10371    a"11111
10372No match
10373
10374/^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
10375------------------------------------------------------------------
10376        Bra
10377        ^
10378        Bra
10379        CBra 1
10380        a
10381        Ket
10382        CBra 2
10383        b
10384        Ket
10385        CBra 3
10386        c
10387        Ket
10388        CBra 4
10389        d
10390        Ket
10391        Alt
10392        CBra 1
10393        e
10394        Ket
10395        Ket
10396        Cond
10397      4 Cond nref
10398        X
10399        Alt
10400        Y
10401        Ket
10402        Ket
10403        End
10404------------------------------------------------------------------
10405Capturing subpattern count = 4
10406Named capturing subpatterns:
10407  D   4
10408  D   1
10409Options: anchored extended dupnames
10410No first char
10411No need char
10412    abcdX
10413 0: abcdX
10414 1: a
10415 2: b
10416 3: c
10417 4: d
10418    eX
10419 0: eX
10420 1: e
10421    ** Failers
10422No match
10423    abcdY
10424No match
10425    ey
10426No match
10427
10428/(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
10429------------------------------------------------------------------
10430        Bra
10431        CBra 1
10432        a
10433        Ket
10434        CBra 2
10435        b
10436        Ket
10437        CBra 3
10438        c
10439        Ket
10440        CBra 4
10441        d
10442        Cond
10443        Cond nrecurse 1
10444        $
10445        Alt
10446        Once
10447        Recurse
10448        Ket
10449        Ket
10450        Ket
10451        Ket
10452        End
10453------------------------------------------------------------------
10454Capturing subpattern count = 4
10455Named capturing subpatterns:
10456  A   1
10457  A   4
10458Options: extended dupnames
10459First char = 'a'
10460Need char = 'd'
10461    abcdd
10462 0: abcdd
10463 1: a
10464 2: b
10465 3: c
10466 4: dd
10467    ** Failers
10468No match
10469    abcdde
10470No match
10471
10472/abcd*/
10473    xxxxabcd\P
10474 0: abcd
10475    xxxxabcd\P\P
10476Partial match: abcd
10477
10478/abcd*/i
10479    xxxxabcd\P
10480 0: abcd
10481    xxxxabcd\P\P
10482Partial match: abcd
10483    XXXXABCD\P
10484 0: ABCD
10485    XXXXABCD\P\P
10486Partial match: ABCD
10487
10488/abc\d*/
10489    xxxxabc1\P
10490 0: abc1
10491    xxxxabc1\P\P
10492Partial match: abc1
10493
10494/(a)bc\1*/
10495    xxxxabca\P
10496 0: abca
10497 1: a
10498    xxxxabca\P\P
10499Partial match: abca
10500
10501/abc[de]*/
10502    xxxxabcde\P
10503 0: abcde
10504    xxxxabcde\P\P
10505Partial match: abcde
10506
10507/-- This is not in the Perl >= 5.10 test because Perl seems currently to be
10508    broken and not behaving as specified in that it *does* bumpalong after
10509    hitting (*COMMIT). --/
10510
10511/(?1)(A(*COMMIT)|B)D/
10512    ABD
10513 0: ABD
10514 1: B
10515    XABD
10516 0: ABD
10517 1: B
10518    BAD
10519 0: BAD
10520 1: A
10521    ABXABD
10522 0: ABD
10523 1: B
10524    ** Failers
10525No match
10526    ABX
10527No match
10528    BAXBAD
10529No match
10530
10531/(\3)(\1)(a)/<JS>
10532    cat
10533 0: a
10534 1:
10535 2:
10536 3: a
10537
10538/(\3)(\1)(a)/SI<JS>
10539Capturing subpattern count = 3
10540Max back reference = 3
10541Options:
10542No first char
10543Need char = 'a'
10544Subject length lower bound = 1
10545No set of starting bytes
10546    cat
10547 0: a
10548 1:
10549 2:
10550 3: a
10551
10552/(\3)(\1)(a)/SI
10553Capturing subpattern count = 3
10554Max back reference = 3
10555No options
10556No first char
10557Need char = 'a'
10558Subject length lower bound = 3
10559No set of starting bytes
10560    cat
10561No match
10562
10563/i(?(DEFINE)(?<s>a))/SI
10564Capturing subpattern count = 1
10565Named capturing subpatterns:
10566  s   1
10567No options
10568First char = 'i'
10569No need char
10570Subject length lower bound = 1
10571No set of starting bytes
10572    i
10573 0: i
10574
10575/()i(?(1)a)/SI
10576Capturing subpattern count = 1
10577No options
10578No first char
10579Need char = 'i'
10580Subject length lower bound = 1
10581Starting byte set: i
10582    ia
10583 0: ia
10584 1:
10585
10586/(?i)a(?-i)b|c/BZ
10587------------------------------------------------------------------
10588        Bra
10589     NC a
10590     00 Opt
10591        b
10592        Alt
10593     00 Opt
10594        c
10595        Ket
10596        End
10597------------------------------------------------------------------
10598    XabX
10599 0: ab
10600    XAbX
10601 0: Ab
10602    CcC
10603 0: c
10604    ** Failers
10605No match
10606    XABX
10607No match
10608
10609/(?i)a(?s)b|c/BZ
10610------------------------------------------------------------------
10611        Bra
10612     NC a
10613     05 Opt
10614     NC b
10615        Alt
10616     05 Opt
10617     NC c
10618        Ket
10619        End
10620------------------------------------------------------------------
10621
10622/(?i)a(?s-i)b|c/BZ
10623------------------------------------------------------------------
10624        Bra
10625     NC a
10626     04 Opt
10627        b
10628        Alt
10629     04 Opt
10630        c
10631        Ket
10632        End
10633------------------------------------------------------------------
10634
10635/^(ab(c\1)d|x){2}$/BZ
10636------------------------------------------------------------------
10637        Bra
10638        ^
10639        Once
10640        CBra 1
10641        ab
10642        CBra 2
10643        c
10644        \1
10645        Ket
10646        d
10647        Alt
10648        x
10649        Ket
10650        Ket
10651        Once
10652        CBra 1
10653        ab
10654        CBra 2
10655        c
10656        \1
10657        Ket
10658        d
10659        Alt
10660        x
10661        Ket
10662        Ket
10663        $
10664        Ket
10665        End
10666------------------------------------------------------------------
10667    xabcxd
10668 0: xabcxd
10669 1: abcxd
10670 2: cx
10671
10672/^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
10673------------------------------------------------------------------
10674        Bra
10675        ^
10676        Once
10677        Brazero
10678        Once
10679        Recurse
10680        KetRmax
10681        Ket
10682        Cond
10683        Cond def
10684        CBra 1
10685        Any
10686        Ket
10687        Ket
10688        $
10689        Ket
10690        End
10691------------------------------------------------------------------
10692
10693/^(?&t)*(?(DEFINE)(?<t>.))$/BZ
10694------------------------------------------------------------------
10695        Bra
10696        ^
10697        Brazero
10698        Once
10699        Recurse
10700        KetRmax
10701        Cond
10702        Cond def
10703        CBra 1
10704        Any
10705        Ket
10706        Ket
10707        $
10708        Ket
10709        End
10710------------------------------------------------------------------
10711
10712/ -- The first four of these are not in the Perl >= 5.10 test because Perl
10713     documents that the use of \K in assertions is "not well defined". The
10714     last is here because Perl gives the match as "b" rather than "ab". I
10715     believe this to be a Perl bug. --/
10716
10717/(?=a\Kb)ab/
10718    ab
10719 0: b
10720
10721/(?!a\Kb)ac/
10722    ac
10723 0: ac
10724
10725/^abc(?<=b\Kc)d/
10726    abcd
10727 0: cd
10728
10729/^abc(?<!b\Kq)d/
10730    abcd
10731 0: abcd
10732
10733/(?>a\Kb)z|(ab)/
10734    ab
10735 0: ab
10736 1: ab
10737
10738/----------------------/
10739
10740/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
10741Failed: recursive call could loop indefinitely at offset 31
10742
10743/abc(*MARK:)pqr/
10744Failed: (*MARK) must have an argument at offset 10
10745
10746/abc(*:)pqr/
10747Failed: (*MARK) must have an argument at offset 6
10748
10749/abc(*FAIL:123)xyz/
10750Failed: an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) at offset 13
10751
10752/--- This should, and does, fail. In Perl, it does not, which I think is a
10753     bug because replacing the B in the pattern by (B|D) does make it fail. ---/
10754
10755/A(*COMMIT)B/+K
10756    ACABX
10757No match
10758
10759/--- These should be different, but in Perl 5.11 are not, which I think
10760     is a bug in Perl. ---/
10761
10762/A(*THEN)B|A(*THEN)C/K
10763    AC
10764 0: AC
10765
10766/A(*PRUNE)B|A(*PRUNE)C/K
10767    AC
10768No match
10769
10770/--- A whole lot of tests of verbs with arguments are here rather than in test
10771     11 because Perl doesn't seem to follow its specification entirely
10772     correctly. ---/
10773
10774/--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is
10775     not clear how Perl defines "involved in the failure of the match". ---/
10776
10777/^(A(*THEN:A)B|C(*THEN:B)D)/K
10778    AB
10779 0: AB
10780 1: AB
10781    CD
10782 0: CD
10783 1: CD
10784    ** Failers
10785No match
10786    AC
10787No match
10788    CB
10789No match, mark = B
10790
10791/--- Check the use of names for success and failure. PCRE doesn't show these
10792names for success, though Perl does, contrary to its spec. ---/
10793
10794/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
10795    AB
10796 0: AB
10797 1: AB
10798    CD
10799 0: CD
10800 1: CD
10801    ** Failers
10802No match
10803    AC
10804No match, mark = A
10805    CB
10806No match, mark = B
10807
10808/--- An empty name does not pass back an empty string. It is the same as if no
10809name were given. ---/
10810
10811/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
10812    AB
10813 0: AB
10814 1: AB
10815    CD
10816 0: CD
10817 1: CD
10818
10819/--- PRUNE goes to next bumpalong; COMMIT does not. ---/
10820
10821/A(*PRUNE:A)B/K
10822    ACAB
10823 0: AB
10824
10825/(*MARK:A)(*PRUNE:B)(C|X)/K
10826    C
10827 0: C
10828 1: C
10829MK: A
10830    D
10831No match, mark = B
10832
10833/(*MARK:A)(*THEN:B)(C|X)/K
10834    C
10835 0: C
10836 1: C
10837MK: A
10838    D
10839No match, mark = B
10840
10841/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
10842
10843/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
10844    AAAC
10845No match
10846
10847/--- Same --/
10848
10849/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
10850    AAAC
10851No match
10852
10853/--- This should fail; the SKIP advances by one, but when we get to AC, the
10854     PRUNE kills it. ---/
10855
10856/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
10857    AAAC
10858No match
10859
10860/A(*:A)A+(*SKIP)(B|Z) | AC/xK
10861    AAAC
10862No match
10863
10864/--- This should fail, as a null name is the same as no name ---/
10865
10866/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
10867    AAAC
10868No match
10869
10870/--- This fails in PCRE, and I think that is in accordance with Perl's
10871     documentation, though in Perl it succeeds. ---/
10872
10873/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
10874    AAAC
10875No match
10876
10877/--- Mark names can be duplicated ---/
10878
10879/A(*:A)B|X(*:A)Y/K
10880    AABC
10881 0: AB
10882MK: A
10883    XXYZ
10884 0: XY
10885MK: A
10886
10887/^A(*:A)B|^X(*:A)Y/K
10888    ** Failers
10889No match
10890    XAQQ
10891No match, mark = A
10892
10893/--- A check on what happens after hitting a mark and them bumping along to
10894something that does not even start. Perl reports tags after the failures here,
10895though it does not when the individual letters are made into something
10896more complicated. ---/
10897
10898/A(*:A)B|XX(*:B)Y/K
10899    AABC
10900 0: AB
10901MK: A
10902    XXYZ
10903 0: XXY
10904MK: B
10905    ** Failers
10906No match
10907    XAQQ
10908No match
10909    XAQQXZZ
10910No match
10911    AXQQQ
10912No match
10913    AXXQQQ
10914No match
10915
10916/--- COMMIT at the start of a pattern should be the same as an anchor. Perl
10917optimizations defeat this. So does the PCRE optimization unless we disable it
10918with \Y. ---/
10919
10920/(*COMMIT)ABC/
10921    ABCDEFG
10922 0: ABC
10923    ** Failers
10924No match
10925    DEFGABC\Y
10926No match
10927
10928/--- Repeat some tests with added studying. ---/
10929
10930/A(*COMMIT)B/+KS
10931    ACABX
10932No match
10933
10934/A(*THEN)B|A(*THEN)C/KS
10935    AC
10936 0: AC
10937
10938/A(*PRUNE)B|A(*PRUNE)C/KS
10939    AC
10940No match
10941
10942/^(A(*THEN:A)B|C(*THEN:B)D)/KS
10943    AB
10944 0: AB
10945 1: AB
10946    CD
10947 0: CD
10948 1: CD
10949    ** Failers
10950No match
10951    AC
10952No match
10953    CB
10954No match, mark = B
10955
10956/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS
10957    AB
10958 0: AB
10959 1: AB
10960    CD
10961 0: CD
10962 1: CD
10963    ** Failers
10964No match
10965    AC
10966No match, mark = A
10967    CB
10968No match, mark = B
10969
10970/^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS
10971    AB
10972 0: AB
10973 1: AB
10974    CD
10975 0: CD
10976 1: CD
10977
10978/A(*PRUNE:A)B/KS
10979    ACAB
10980 0: AB
10981
10982/(*MARK:A)(*PRUNE:B)(C|X)/KS
10983    C
10984 0: C
10985 1: C
10986MK: A
10987    D
10988No match
10989
10990/(*MARK:A)(*THEN:B)(C|X)/KS
10991    C
10992 0: C
10993 1: C
10994MK: A
10995    D
10996No match
10997
10998/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
10999    AAAC
11000No match
11001
11002/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
11003    AAAC
11004No match
11005
11006/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
11007    AAAC
11008No match
11009
11010/A(*:A)A+(*SKIP)(B|Z) | AC/xKS
11011    AAAC
11012No match
11013
11014/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
11015    AAAC
11016No match
11017
11018/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
11019    AAAC
11020No match
11021
11022/A(*:A)B|XX(*:B)Y/KS
11023    AABC
11024 0: AB
11025MK: A
11026    XXYZ
11027 0: XXY
11028MK: B
11029    ** Failers
11030No match
11031    XAQQ
11032No match
11033    XAQQXZZ
11034No match
11035    AXQQQ
11036No match
11037    AXXQQQ
11038No match
11039
11040/(*COMMIT)ABC/
11041    ABCDEFG
11042 0: ABC
11043    ** Failers
11044No match
11045    DEFGABC\Y
11046No match
11047
11048/^(ab (c+(*THEN)cd) | xyz)/x
11049    abcccd
11050No match
11051
11052/^(ab (c+(*PRUNE)cd) | xyz)/x
11053    abcccd
11054No match
11055
11056/^(ab (c+(*FAIL)cd) | xyz)/x
11057    abcccd
11058No match
11059
11060/--- Perl 5.11 gets some of these wrong ---/
11061
11062/(?>.(*ACCEPT))*?5/
11063    abcde
11064 0: a
11065
11066/(.(*ACCEPT))*?5/
11067    abcde
11068 0: a
11069 1: a
11070
11071/(.(*ACCEPT))5/
11072    abcde
11073 0: a
11074 1: a
11075
11076/(.(*ACCEPT))*5/
11077    abcde
11078 0: a
11079 1: a
11080
11081/A\NB./BZ
11082------------------------------------------------------------------
11083        Bra
11084        A
11085        Any
11086        B
11087        Any
11088        Ket
11089        End
11090------------------------------------------------------------------
11091    ACBD
11092 0: ACBD
11093    *** Failers
11094No match
11095    A\nB
11096No match
11097    ACB\n
11098No match
11099
11100/A\NB./sBZ
11101------------------------------------------------------------------
11102        Bra
11103        A
11104        Any
11105        B
11106        AllAny
11107        Ket
11108        End
11109------------------------------------------------------------------
11110    ACBD
11111 0: ACBD
11112    ACB\n
11113 0: ACB\x0a
11114    *** Failers
11115No match
11116    A\nB
11117No match
11118
11119/A\NB/<crlf>
11120    A\nB
11121 0: A\x0aB
11122    A\rB
11123 0: A\x0dB
11124    ** Failers
11125No match
11126    A\r\nB
11127No match
11128
11129/\R+b/BZ
11130------------------------------------------------------------------
11131        Bra
11132        \R++
11133        b
11134        Ket
11135        End
11136------------------------------------------------------------------
11137
11138/\R+\n/BZ
11139------------------------------------------------------------------
11140        Bra
11141        \R+
11142        \x0a
11143        Ket
11144        End
11145------------------------------------------------------------------
11146
11147/\R+\d/BZ
11148------------------------------------------------------------------
11149        Bra
11150        \R++
11151        \d
11152        Ket
11153        End
11154------------------------------------------------------------------
11155
11156/\d*\R/BZ
11157------------------------------------------------------------------
11158        Bra
11159        \d*+
11160        \R
11161        Ket
11162        End
11163------------------------------------------------------------------
11164
11165/\s*\R/BZ
11166------------------------------------------------------------------
11167        Bra
11168        \s*+
11169        \R
11170        Ket
11171        End
11172------------------------------------------------------------------
11173
11174/-- Perl treats this one differently, not failing the second string. I believe
11175    that is a bug in Perl. --/
11176
11177/^((abc|abcx)(*THEN)y|abcd)/
11178    abcd
11179 0: abcd
11180 1: abcd
11181    *** Failers
11182No match
11183    abcxy
11184No match
11185
11186/(?<=abc)def/
11187    abc\P\P
11188Partial match: abc
11189
11190/abc$/
11191    abc
11192 0: abc
11193    abc\P
11194 0: abc
11195    abc\P\P
11196Partial match: abc
11197
11198/abc$/m
11199    abc
11200 0: abc
11201    abc\n
11202 0: abc
11203    abc\P\P
11204Partial match: abc
11205    abc\n\P\P
11206 0: abc
11207    abc\P
11208 0: abc
11209    abc\n\P
11210 0: abc
11211
11212/abc\z/
11213    abc
11214 0: abc
11215    abc\P
11216 0: abc
11217    abc\P\P
11218Partial match: abc
11219
11220/abc\Z/
11221    abc
11222 0: abc
11223    abc\P
11224 0: abc
11225    abc\P\P
11226Partial match: abc
11227
11228/abc\b/
11229    abc
11230 0: abc
11231    abc\P
11232 0: abc
11233    abc\P\P
11234Partial match: abc
11235
11236/abc\B/
11237    abc
11238No match
11239    abc\P
11240Partial match: abc
11241    abc\P\P
11242Partial match: abc
11243
11244/.+/
11245    abc\>0
11246 0: abc
11247    abc\>1
11248 0: bc
11249    abc\>2
11250 0: c
11251    abc\>3
11252No match
11253    abc\>4
11254Error -24
11255    abc\>-4
11256Error -24
11257
11258/^\cģ/
11259Failed: \c must be followed by an ASCII character at offset 3
11260
11261/(?P<abn>(?P=abn)xxx)/BZ
11262------------------------------------------------------------------
11263        Bra
11264        Once
11265        CBra 1
11266        \1
11267        xxx
11268        Ket
11269        Ket
11270        Ket
11271        End
11272------------------------------------------------------------------
11273
11274/(a\1z)/BZ
11275------------------------------------------------------------------
11276        Bra
11277        Once
11278        CBra 1
11279        a
11280        \1
11281        z
11282        Ket
11283        Ket
11284        Ket
11285        End
11286------------------------------------------------------------------
11287
11288/(?P<abn>(?P=abn)(?<badstufxxx)/BZ
11289Failed: syntax error in subpattern name (missing terminator) at offset 29
11290
11291/(?P<abn>(?P=axn)xxx)/BZ
11292Failed: reference to non-existent subpattern at offset 15
11293
11294/(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
11295------------------------------------------------------------------
11296        Bra
11297        CBra 1
11298        \2
11299        xxx
11300        Ket
11301        CBra 2
11302        yy
11303        Ket
11304        Ket
11305        End
11306------------------------------------------------------------------
11307
11308/-- End of testinput2 --/
11309