Annotation of embedaddon/php/ext/pcre/pcrelib/testdata/testoutput2, revision 1.1.1.1
1.1 misho 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
13: Capturing subpattern count = 1
14: No options
15: No first char
16: No need char
17:
18: /abc/I
19: Capturing subpattern count = 0
20: No options
21: First char = 'a'
22: Need char = 'c'
23: abc
24: 0: abc
25: defabc
26: 0: abc
27: \Aabc
28: 0: abc
29: *** Failers
30: No match
31: \Adefabc
32: No match
33: ABC
34: No match
35:
36: /^abc/I
37: Capturing subpattern count = 0
38: Options: anchored
39: No first char
40: No need char
41: abc
42: 0: abc
43: \Aabc
44: 0: abc
45: *** Failers
46: No match
47: defabc
48: No match
49: \Adefabc
50: No match
51:
52: /a+bc/I
53: Capturing subpattern count = 0
54: No options
55: First char = 'a'
56: Need char = 'c'
57:
58: /a*bc/I
59: Capturing subpattern count = 0
60: No options
61: No first char
62: Need char = 'c'
63:
64: /a{3}bc/I
65: Capturing subpattern count = 0
66: No options
67: First char = 'a'
68: Need char = 'c'
69:
70: /(abc|a+z)/I
71: Capturing subpattern count = 1
72: No options
73: First char = 'a'
74: No need char
75:
76: /^abc$/I
77: Capturing subpattern count = 0
78: Options: anchored
79: No first char
80: No need char
81: abc
82: 0: abc
83: *** Failers
84: No match
85: def\nabc
86: No match
87:
88: /ab\idef/X
89: Failed: unrecognized character follows \ at offset 3
90:
91: /(?X)ab\idef/X
92: Failed: unrecognized character follows \ at offset 7
93:
94: /x{5,4}/
95: Failed: numbers out of order in {} quantifier at offset 5
96:
97: /z{65536}/
98: Failed: number too big in {} quantifier at offset 7
99:
100: /[abcd/
101: Failed: missing terminating ] for character class at offset 5
102:
103: /(?X)[\B]/
104: Failed: invalid escape sequence in character class at offset 6
105:
106: /(?X)[\R]/
107: Failed: invalid escape sequence in character class at offset 6
108:
109: /(?X)[\X]/
110: Failed: invalid escape sequence in character class at offset 6
111:
112: /[\B]/BZ
113: ------------------------------------------------------------------
114: Bra
115: B
116: Ket
117: End
118: ------------------------------------------------------------------
119:
120: /[\R]/BZ
121: ------------------------------------------------------------------
122: Bra
123: R
124: Ket
125: End
126: ------------------------------------------------------------------
127:
128: /[\X]/BZ
129: ------------------------------------------------------------------
130: Bra
131: X
132: Ket
133: End
134: ------------------------------------------------------------------
135:
136: /[z-a]/
137: Failed: range out of order in character class at offset 3
138:
139: /^*/
140: Failed: nothing to repeat at offset 1
141:
142: /(abc/
143: Failed: missing ) at offset 4
144:
145: /(?# abc/
146: Failed: missing ) after comment at offset 7
147:
148: /(?z)abc/
149: Failed: unrecognized character after (? or (?- at offset 2
150:
151: /.*b/I
152: Capturing subpattern count = 0
153: No options
154: First char at start or follows newline
155: Need char = 'b'
156:
157: /.*?b/I
158: Capturing subpattern count = 0
159: No options
160: First char at start or follows newline
161: Need char = 'b'
162:
163: /cat|dog|elephant/I
164: Capturing subpattern count = 0
165: No options
166: No first char
167: No 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
174: Capturing subpattern count = 0
175: No options
176: No first char
177: No need char
178: Subject length lower bound = 3
179: Starting 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
186: Capturing subpattern count = 0
187: Options: caseless
188: No first char
189: No need char
190: Subject length lower bound = 3
191: Starting 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
198: Capturing subpattern count = 0
199: No options
200: No first char
201: No need char
202: Subject length lower bound = 1
203: Starting byte set: a b c d
204:
205: /(a|[^\dZ])/IS
206: Capturing subpattern count = 1
207: No options
208: No first char
209: No need char
210: Subject length lower bound = 1
211: Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
212: \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19
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
227: Capturing subpattern count = 1
228: No options
229: No first char
230: No need char
231: Subject length lower bound = 1
232: Starting byte set: \x09 \x0a \x0c \x0d \x20 a b
233:
234: /(ab\2)/
235: Failed: reference to non-existent subpattern at offset 6
236:
237: /{4,5}abc/
238: Failed: nothing to repeat at offset 4
239:
240: /(a)(b)(c)\2/I
241: Capturing subpattern count = 3
242: Max back reference = 2
243: No options
244: First char = 'a'
245: Need char = 'c'
246: abcb
247: 0: abcb
248: 1: a
249: 2: b
250: 3: c
251: \O0abcb
252: Matched, but too many substrings
253: \O3abcb
254: Matched, but too many substrings
255: 0: abcb
256: \O6abcb
257: Matched, but too many substrings
258: 0: abcb
259: 1: a
260: \O9abcb
261: Matched, 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
272: Capturing subpattern count = 3
273: Max back reference = 2
274: No options
275: First char = 'a'
276: No need char
277: abc
278: 0: abc
279: 1: a
280: \O0abc
281: Matched, but too many substrings
282: \O3abc
283: Matched, 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
294: Matched, but too many substrings
295: \O3aba
296: Matched, but too many substrings
297: 0: aba
298: \O6aba
299: Matched, but too many substrings
300: 0: aba
301: 1: <unset>
302: \O9aba
303: Matched, 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
314: Capturing subpattern count = 0
315: Options: dollar_endonly
316: First char = 'a'
317: Need char = 'c'
318: abc
319: 0: abc
320: *** Failers
321: No match
322: abc\n
323: No match
324: abc\ndef
325: No match
326:
327: /(a)(b)(c)(d)(e)\6/
328: Failed: reference to non-existent subpattern at offset 17
329:
330: /the quick brown fox/I
331: Capturing subpattern count = 0
332: No options
333: First char = 't'
334: Need 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
341: Capturing subpattern count = 0
342: Options: anchored
343: No first char
344: No need char
345: the quick brown fox
346: 0: the quick brown fox
347: *** Failers
348: No match
349: this is a line with the quick brown fox
350: No match
351:
352: /ab(?z)cd/
353: Failed: unrecognized character after (? or (?- at offset 4
354:
355: /^abc|def/I
356: Capturing subpattern count = 0
357: No options
358: No first char
359: No need char
360: abcdef
361: 0: abc
362: abcdef\B
363: 0: def
364:
365: /.*((abc)$|(def))/I
366: Capturing subpattern count = 3
367: No options
368: First char at start or follows newline
369: No 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
384: No 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
406: No match: POSIX code 17: match failed
407: The Quick Brown Fox
408: No 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
418: No match: POSIX code 17: match failed
419: abc\ndef
420: No 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
429: Failed: POSIX code 15: bad back reference at offset 7
430:
431: /(abc\1)/P
432: abc
433: No match: POSIX code 17: match failed
434:
435: /)/
436: Failed: unmatched parentheses at offset 0
437:
438: /a[]b/
439: Failed: missing terminating ] for character class at offset 4
440:
441: /[^aeiou ]{3,}/I
442: Capturing subpattern count = 0
443: No options
444: No first char
445: No need char
446: co-processors, and for
447: 0: -pr
448:
449: /<.*>/I
450: Capturing subpattern count = 0
451: No options
452: First char = '<'
453: Need char = '>'
454: abc<def>ghi<klm>nop
455: 0: <def>ghi<klm>
456:
457: /<.*?>/I
458: Capturing subpattern count = 0
459: No options
460: First char = '<'
461: Need char = '>'
462: abc<def>ghi<klm>nop
463: 0: <def>
464:
465: /<.*>/IU
466: Capturing subpattern count = 0
467: Options: ungreedy
468: First char = '<'
469: Need char = '>'
470: abc<def>ghi<klm>nop
471: 0: <def>
472:
473: /(?U)<.*>/I
474: Capturing subpattern count = 0
475: Options: ungreedy
476: First char = '<'
477: Need char = '>'
478: abc<def>ghi<klm>nop
479: 0: <def>
480:
481: /<.*?>/IU
482: Capturing subpattern count = 0
483: Options: ungreedy
484: First char = '<'
485: Need char = '>'
486: abc<def>ghi<klm>nop
487: 0: <def>ghi<klm>
488:
489: /={3,}/IU
490: Capturing subpattern count = 0
491: Options: ungreedy
492: First char = '='
493: Need char = '='
494: abc========def
495: 0: ===
496:
497: /(?U)={3,}?/I
498: Capturing subpattern count = 0
499: Options: ungreedy
500: First char = '='
501: Need char = '='
502: abc========def
503: 0: ========
504:
505: /(?<!bar|cattle)foo/I
506: Capturing subpattern count = 0
507: No options
508: First char = 'f'
509: Need char = 'o'
510: foo
511: 0: foo
512: catfoo
513: 0: foo
514: *** Failers
515: No match
516: the barfoo
517: No match
518: and cattlefoo
519: No match
520:
521: /(?<=a+)b/
522: Failed: lookbehind assertion is not fixed length at offset 6
523:
524: /(?<=aaa|b{0,3})b/
525: Failed: lookbehind assertion is not fixed length at offset 14
526:
527: /(?<!(foo)a\1)bar/
528: Failed: lookbehind assertion is not fixed length at offset 12
529:
530: /(?i)abc/I
531: Capturing subpattern count = 0
532: Options: caseless
533: First char = 'a' (caseless)
534: Need char = 'c' (caseless)
535:
536: /(a|(?m)a)/I
537: Capturing subpattern count = 1
538: No options
539: First char = 'a'
540: No need char
541:
542: /(?i)^1234/I
543: Capturing subpattern count = 0
544: Options: anchored caseless
545: No first char
546: No need char
547:
548: /(^b|(?i)^d)/I
549: Capturing subpattern count = 1
550: Options: anchored
551: No first char
552: No need char
553:
554: /(?s).*/I
555: Capturing subpattern count = 0
556: Options: anchored dotall
557: No first char
558: No need char
559:
560: /[abcd]/IS
561: Capturing subpattern count = 0
562: No options
563: No first char
564: No need char
565: Subject length lower bound = 1
566: Starting byte set: a b c d
567:
568: /(?i)[abcd]/IS
569: Capturing subpattern count = 0
570: Options: caseless
571: No first char
572: No need char
573: Subject length lower bound = 1
574: Starting byte set: A B C D a b c d
575:
576: /(?m)[xy]|(b|c)/IS
577: Capturing subpattern count = 1
578: Options: multiline
579: No first char
580: No need char
581: Subject length lower bound = 1
582: Starting byte set: b c x y
583:
584: /(^a|^b)/Im
585: Capturing subpattern count = 1
586: Options: multiline
587: First char at start or follows newline
588: No need char
589:
590: /(?i)(^a|^b)/Im
591: Capturing subpattern count = 1
592: Options: caseless multiline
593: First char at start or follows newline
594: No need char
595:
596: /(a)(?(1)a|b|c)/
597: Failed: conditional group contains more than two branches at offset 13
598:
599: /(?(?=a)a|b|c)/
600: Failed: conditional group contains more than two branches at offset 12
601:
602: /(?(1a)/
603: Failed: missing ) at offset 6
604:
605: /(?(1a))/
606: Failed: reference to non-existent subpattern at offset 6
607:
608: /(?(?i))/
609: Failed: assertion expected after (?( at offset 3
610:
611: /(?(abc))/
612: Failed: reference to non-existent subpattern at offset 7
613:
614: /(?(?<ab))/
615: Failed: syntax error in subpattern name (missing terminator) at offset 7
616:
617: /((?s)blah)\s+\1/I
618: Capturing subpattern count = 1
619: Max back reference = 1
620: No options
621: First char = 'b'
622: Need char = 'h'
623:
624: /((?i)blah)\s+\1/I
625: Capturing subpattern count = 1
626: Max back reference = 1
627: No options
628: First char = 'b' (caseless)
629: Need 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: ------------------------------------------------------------------
642: Capturing subpattern count = 1
643: No options
644: First char = 'b' (caseless)
645: No need char
646: Subject length lower bound = 1
647: No set of starting bytes
648:
649: /(a*b|(?i:c*(?-i)d))/IS
650: Capturing subpattern count = 1
651: No options
652: No first char
653: No need char
654: Subject length lower bound = 1
655: Starting byte set: C a b c d
656:
657: /a$/I
658: Capturing subpattern count = 0
659: No options
660: First char = 'a'
661: No need char
662: a
663: 0: a
664: a\n
665: 0: a
666: *** Failers
667: No match
668: \Za
669: No match
670: \Za\n
671: No match
672:
673: /a$/Im
674: Capturing subpattern count = 0
675: Options: multiline
676: First char = 'a'
677: No need char
678: a
679: 0: a
680: a\n
681: 0: a
682: \Za\n
683: 0: a
684: *** Failers
685: No match
686: \Za
687: No match
688:
689: /\Aabc/Im
690: Capturing subpattern count = 0
691: Options: anchored multiline
692: No first char
693: No need char
694:
695: /^abc/Im
696: Capturing subpattern count = 0
697: Options: multiline
698: First char at start or follows newline
699: Need char = 'c'
700:
701: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
702: Capturing subpattern count = 5
703: Options: anchored
704: No first char
705: No 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
715: Capturing subpattern count = 0
716: No options
717: No first char
718: No need char
719: Subject length lower bound = 1
720: Starting byte set: a b
721:
722: /(?<!foo)(alpha|omega)/IS
723: Capturing subpattern count = 1
724: No options
725: No first char
726: Need char = 'a'
727: Subject length lower bound = 5
728: Starting byte set: a o
729:
730: /(?!alphabet)[ab]/IS
731: Capturing subpattern count = 0
732: No options
733: No first char
734: No need char
735: Subject length lower bound = 1
736: Starting byte set: a b
737:
738: /(?<=foo\n)^bar/Im
739: Capturing subpattern count = 0
740: Contains explicit CR or LF match
741: Options: multiline
742: No first char
743: Need char = 'r'
744: foo\nbarbar
745: 0: bar
746: ***Failers
747: No match
748: rhubarb
749: No match
750: barbell
751: No match
752: abc\nbarton
753: No match
754:
755: /^(?<=foo\n)bar/Im
756: Capturing subpattern count = 0
757: Contains explicit CR or LF match
758: Options: multiline
759: First char at start or follows newline
760: Need char = 'r'
761: foo\nbarbar
762: 0: bar
763: ***Failers
764: No match
765: rhubarb
766: No match
767: barbell
768: No match
769: abc\nbarton
770: No match
771:
772: /(?>^abc)/Im
773: Capturing subpattern count = 0
774: Options: multiline
775: First char at start or follows newline
776: Need char = 'c'
777: abc
778: 0: abc
779: def\nabc
780: 0: abc
781: *** Failers
782: No match
783: defabc
784: No match
785:
786: /(?<=ab(c+)d)ef/
787: Failed: lookbehind assertion is not fixed length at offset 11
788:
789: /(?<=ab(?<=c+)d)ef/
790: Failed: lookbehind assertion is not fixed length at offset 12
791:
792: /(?<=ab(c|de)f)g/
793: Failed: 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
798: Capturing subpattern count = 0
799: No options
800: First char = '-'
801: Need char = 't'
802: the bullock-cart
803: 0: -cart
804: a donkey-cart race
805: 0: -cart
806: *** Failers
807: No match
808: cart
809: No match
810: horse-and-cart
811: No match
812:
813: /(?<=ab(?i)x|y|z)/I
814: Capturing subpattern count = 0
815: No options
816: No first char
817: No need char
818:
819: /(?>.*)(?<=(abcd)|(xyz))/I
820: Capturing subpattern count = 2
821: No options
822: First char at start or follows newline
823: No 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
833: Capturing subpattern count = 0
834: No options
835: First char = 'Z'
836: Need 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
850: No match
851: ZZ
852: No match
853: abXYZZ
854: No match
855: zzz
856: No match
857: bzz
858: No match
859:
860: /(?<!(foo)a)bar/I
861: Capturing subpattern count = 1
862: No options
863: First char = 'b'
864: Need char = 'r'
865: bar
866: 0: bar
867: foobbar
868: 0: bar
869: *** Failers
870: No match
871: fooabar
872: No match
873:
874: /This one is here because Perl 5.005_02 doesn't fail it/I
875: Capturing subpattern count = 0
876: No options
877: First char = 'T'
878: Need char = 't'
879:
880: /^(a)?(?(1)a|b)+$/I
881: Capturing subpattern count = 1
882: Options: anchored
883: No first char
884: No need char
885: *** Failers
886: No match
887: a
888: No match
889:
890: /This one is here because Perl behaves differently; see also the following/I
891: Capturing subpattern count = 0
892: No options
893: First char = 'T'
894: Need char = 'g'
895:
896: /^(a\1?){4}$/I
897: Capturing subpattern count = 1
898: Max back reference = 1
899: Options: anchored
900: No first char
901: No need char
902: aaaa
903: No match
904: aaaaaa
905: No 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/
909: No match
910: /a recursive reference to itself. PCRE has now made these into atomic patterns./
911: No match
912:
913: /^(xa|=?\1a){2}$/
914: xa=xaa
915: 0: xa=xaa
916: 1: =xaa
917: ** Failers
918: No match
919: xa=xaaa
920: No match
921:
922: /^(xa|=?\1a)+$/
923: xa=xaa
924: 0: xa=xaa
925: 1: =xaa
926: ** Failers
927: No match
928: xa=xaaa
929: No match
930:
931: /These are syntax tests from Perl 5.005/I
932: Capturing subpattern count = 0
933: No options
934: First char = 'T'
935: Need char = '5'
936:
937: /a[b-a]/
938: Failed: range out of order in character class at offset 4
939:
940: /a[]b/
941: Failed: missing terminating ] for character class at offset 4
942:
943: /a[/
944: Failed: missing terminating ] for character class at offset 2
945:
946: /*a/
947: Failed: nothing to repeat at offset 0
948:
949: /(*)b/
950: Failed: nothing to repeat at offset 1
951:
952: /abc)/
953: Failed: unmatched parentheses at offset 3
954:
955: /(abc/
956: Failed: missing ) at offset 4
957:
958: /a**/
959: Failed: nothing to repeat at offset 2
960:
961: /)(/
962: Failed: unmatched parentheses at offset 0
963:
964: /\1/
965: Failed: reference to non-existent subpattern at offset 2
966:
967: /\2/
968: Failed: reference to non-existent subpattern at offset 2
969:
970: /(a)|\2/
971: Failed: reference to non-existent subpattern at offset 6
972:
973: /a[b-a]/Ii
974: Failed: range out of order in character class at offset 4
975:
976: /a[]b/Ii
977: Failed: missing terminating ] for character class at offset 4
978:
979: /a[/Ii
980: Failed: missing terminating ] for character class at offset 2
981:
982: /*a/Ii
983: Failed: nothing to repeat at offset 0
984:
985: /(*)b/Ii
986: Failed: nothing to repeat at offset 1
987:
988: /abc)/Ii
989: Failed: unmatched parentheses at offset 3
990:
991: /(abc/Ii
992: Failed: missing ) at offset 4
993:
994: /a**/Ii
995: Failed: nothing to repeat at offset 2
996:
997: /)(/Ii
998: Failed: unmatched parentheses at offset 0
999:
1000: /:(?:/
1001: Failed: missing ) at offset 4
1002:
1003: /(?<%)b/
1004: Failed: unrecognized character after (?< at offset 3
1005:
1006: /a(?{)b/
1007: Failed: unrecognized character after (? or (?- at offset 3
1008:
1009: /a(?{{})b/
1010: Failed: unrecognized character after (? or (?- at offset 3
1011:
1012: /a(?{}})b/
1013: Failed: unrecognized character after (? or (?- at offset 3
1014:
1015: /a(?{"{"})b/
1016: Failed: unrecognized character after (? or (?- at offset 3
1017:
1018: /a(?{"{"}})b/
1019: Failed: unrecognized character after (? or (?- at offset 3
1020:
1021: /(?(1?)a|b)/
1022: Failed: malformed number or name after (?( at offset 4
1023:
1024: /[a[:xyz:/
1025: Failed: missing terminating ] for character class at offset 8
1026:
1027: /(?<=x+)y/
1028: Failed: lookbehind assertion is not fixed length at offset 6
1029:
1030: /a{37,17}/
1031: Failed: numbers out of order in {} quantifier at offset 7
1032:
1033: /abc/\
1034: Failed: \ at end of pattern at offset 4
1035:
1036: /abc/\P
1037: Failed: POSIX code 9: bad escape sequence at offset 4
1038:
1039: /abc/\i
1040: Failed: \ at end of pattern at offset 4
1041:
1042: /(a)bc(d)/I
1043: Capturing subpattern count = 2
1044: No options
1045: First char = 'a'
1046: Need 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
1060: copy substring 5 failed -7
1061:
1062: /(.{20})/I
1063: Capturing subpattern count = 1
1064: No options
1065: No first char
1066: No 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
1080: Capturing subpattern count = 1
1081: No options
1082: No first char
1083: No 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
1094: Capturing subpattern count = 1
1095: No options
1096: No first char
1097: No 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
1110: Capturing subpattern count = 3
1111: Options: anchored
1112: No first char
1113: No 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)
1122: get 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)
1135: get 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
1148: Capturing subpattern count = 0
1149: Options: anchored
1150: No first char
1151: No 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
1160: Capturing subpattern count = 8
1161: Contains explicit CR or LF match
1162: No options
1163: First char = 'w'
1164: Need char = 'd'
1165:
1166: /.*X/IDZ
1167: ------------------------------------------------------------------
1168: Bra
1169: Any*
1170: X
1171: Ket
1172: End
1173: ------------------------------------------------------------------
1174: Capturing subpattern count = 0
1175: No options
1176: First char at start or follows newline
1177: Need char = 'X'
1178:
1179: /.*X/IDZs
1180: ------------------------------------------------------------------
1181: Bra
1182: AllAny*
1183: X
1184: Ket
1185: End
1186: ------------------------------------------------------------------
1187: Capturing subpattern count = 0
1188: Options: anchored dotall
1189: No first char
1190: Need 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: ------------------------------------------------------------------
1205: Capturing subpattern count = 1
1206: No options
1207: First char at start or follows newline
1208: No 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: ------------------------------------------------------------------
1223: Capturing subpattern count = 1
1224: Options: anchored dotall
1225: No first char
1226: No 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: ------------------------------------------------------------------
1241: Capturing subpattern count = 1
1242: Options: anchored dotall
1243: No first char
1244: No 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: ------------------------------------------------------------------
1262: Capturing subpattern count = 0
1263: Options: anchored
1264: No first char
1265: No need char
1266:
1267: /\Biss\B/I+
1268: Capturing subpattern count = 0
1269: No options
1270: First char = 'i'
1271: Need 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+
1282: Capturing subpattern count = 0
1283: No options
1284: First char = 'i'
1285: Need char = 's'
1286: Mississippi
1287: 0: iss
1288: 0+ issippi
1289: 0: iss
1290: 0+ ippi
1291:
1292: /\Biss\B/IG+
1293: Capturing subpattern count = 0
1294: No options
1295: First char = 'i'
1296: Need char = 's'
1297: Mississippi
1298: 0: iss
1299: 0+ issippi
1300:
1301: /\Biss\B/Ig+
1302: Capturing subpattern count = 0
1303: No options
1304: First char = 'i'
1305: Need char = 's'
1306: Mississippi
1307: 0: iss
1308: 0+ issippi
1309: 0: iss
1310: 0+ ippi
1311: *** Failers
1312: No match
1313: Mississippi\A
1314: No match
1315:
1316: /(?<=[Ms])iss/Ig+
1317: Capturing subpattern count = 0
1318: No options
1319: First char = 'i'
1320: Need char = 's'
1321: Mississippi
1322: 0: iss
1323: 0+ issippi
1324: 0: iss
1325: 0+ ippi
1326:
1327: /(?<=[Ms])iss/IG+
1328: Capturing subpattern count = 0
1329: No options
1330: First char = 'i'
1331: Need char = 's'
1332: Mississippi
1333: 0: iss
1334: 0+ issippi
1335:
1336: /^iss/Ig+
1337: Capturing subpattern count = 0
1338: Options: anchored
1339: No first char
1340: No need char
1341: ississippi
1342: 0: iss
1343: 0+ issippi
1344:
1345: /.*iss/Ig+
1346: Capturing subpattern count = 0
1347: No options
1348: First char at start or follows newline
1349: Need char = 's'
1350: abciss\nxyzisspqr
1351: 0: abciss
1352: 0+ \x0axyzisspqr
1353: 0: xyziss
1354: 0+ pqr
1355:
1356: /.i./I+g
1357: Capturing subpattern count = 0
1358: No options
1359: No first char
1360: Need 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
1387: Capturing subpattern count = 0
1388: Options: anchored
1389: No first char
1390: No need char
1391: Mississippi
1392: 0: Mis
1393: 0+ sissippi
1394:
1395: /^ab\n/Ig+
1396: Capturing subpattern count = 0
1397: Contains explicit CR or LF match
1398: Options: anchored
1399: No first char
1400: No need char
1401: ab\nab\ncd
1402: 0: ab\x0a
1403: 0+ ab\x0acd
1404:
1405: /^ab\n/Img+
1406: Capturing subpattern count = 0
1407: Contains explicit CR or LF match
1408: Options: multiline
1409: First char at start or follows newline
1410: Need 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
1418: Capturing subpattern count = 0
1419: No options
1420: First char = 'a'
1421: Need char = 'c'
1422:
1423: /abc|bac/I
1424: Capturing subpattern count = 0
1425: No options
1426: No first char
1427: Need char = 'c'
1428:
1429: /(abc|bac)/I
1430: Capturing subpattern count = 1
1431: No options
1432: No first char
1433: Need char = 'c'
1434:
1435: /(abc|(c|dc))/I
1436: Capturing subpattern count = 2
1437: No options
1438: No first char
1439: Need char = 'c'
1440:
1441: /(abc|(d|de)c)/I
1442: Capturing subpattern count = 2
1443: No options
1444: No first char
1445: Need char = 'c'
1446:
1447: /a*/I
1448: Capturing subpattern count = 0
1449: No options
1450: No first char
1451: No need char
1452:
1453: /a+/I
1454: Capturing subpattern count = 0
1455: No options
1456: First char = 'a'
1457: No need char
1458:
1459: /(baa|a+)/I
1460: Capturing subpattern count = 1
1461: No options
1462: No first char
1463: Need char = 'a'
1464:
1465: /a{0,3}/I
1466: Capturing subpattern count = 0
1467: No options
1468: No first char
1469: No need char
1470:
1471: /baa{3,}/I
1472: Capturing subpattern count = 0
1473: No options
1474: First char = 'b'
1475: Need char = 'a'
1476:
1477: /"([^\\"]+|\\.)*"/I
1478: Capturing subpattern count = 1
1479: No options
1480: First char = '"'
1481: Need char = '"'
1482:
1483: /(abc|ab[cd])/I
1484: Capturing subpattern count = 1
1485: No options
1486: First char = 'a'
1487: No need char
1488:
1489: /(a|.)/I
1490: Capturing subpattern count = 1
1491: No options
1492: No first char
1493: No need char
1494:
1495: /a|ba|\w/I
1496: Capturing subpattern count = 0
1497: No options
1498: No first char
1499: No need char
1500:
1501: /abc(?=pqr)/I
1502: Capturing subpattern count = 0
1503: No options
1504: First char = 'a'
1505: Need char = 'r'
1506:
1507: /...(?<=abc)/I
1508: Capturing subpattern count = 0
1509: No options
1510: No first char
1511: No need char
1512:
1513: /abc(?!pqr)/I
1514: Capturing subpattern count = 0
1515: No options
1516: First char = 'a'
1517: Need char = 'c'
1518:
1519: /ab./I
1520: Capturing subpattern count = 0
1521: No options
1522: First char = 'a'
1523: Need char = 'b'
1524:
1525: /ab[xyz]/I
1526: Capturing subpattern count = 0
1527: No options
1528: First char = 'a'
1529: Need char = 'b'
1530:
1531: /abc*/I
1532: Capturing subpattern count = 0
1533: No options
1534: First char = 'a'
1535: Need char = 'b'
1536:
1537: /ab.c*/I
1538: Capturing subpattern count = 0
1539: No options
1540: First char = 'a'
1541: Need char = 'b'
1542:
1543: /a.c*/I
1544: Capturing subpattern count = 0
1545: No options
1546: First char = 'a'
1547: No need char
1548:
1549: /.c*/I
1550: Capturing subpattern count = 0
1551: No options
1552: No first char
1553: No need char
1554:
1555: /ac*/I
1556: Capturing subpattern count = 0
1557: No options
1558: First char = 'a'
1559: No need char
1560:
1561: /(a.c*|b.c*)/I
1562: Capturing subpattern count = 1
1563: No options
1564: No first char
1565: No need char
1566:
1567: /a.c*|aba/I
1568: Capturing subpattern count = 0
1569: No options
1570: First char = 'a'
1571: No need char
1572:
1573: /.+a/I
1574: Capturing subpattern count = 0
1575: No options
1576: No first char
1577: Need char = 'a'
1578:
1579: /(?=abcda)a.*/I
1580: Capturing subpattern count = 0
1581: No options
1582: First char = 'a'
1583: Need char = 'a'
1584:
1585: /(?=a)a.*/I
1586: Capturing subpattern count = 0
1587: No options
1588: First char = 'a'
1589: No need char
1590:
1591: /a(b)*/I
1592: Capturing subpattern count = 1
1593: No options
1594: First char = 'a'
1595: No need char
1596:
1597: /a\d*/I
1598: Capturing subpattern count = 0
1599: No options
1600: First char = 'a'
1601: No need char
1602:
1603: /ab\d*/I
1604: Capturing subpattern count = 0
1605: No options
1606: First char = 'a'
1607: Need char = 'b'
1608:
1609: /a(\d)*/I
1610: Capturing subpattern count = 1
1611: No options
1612: First char = 'a'
1613: No need char
1614:
1615: /abcde{0,0}/I
1616: Capturing subpattern count = 0
1617: No options
1618: First char = 'a'
1619: Need char = 'd'
1620:
1621: /ab\d+/I
1622: Capturing subpattern count = 0
1623: No options
1624: First char = 'a'
1625: Need char = 'b'
1626:
1627: /a(?(1)b)(.)/I
1628: Capturing subpattern count = 1
1629: No options
1630: First char = 'a'
1631: No need char
1632:
1633: /a(?(1)bag|big)(.)/I
1634: Capturing subpattern count = 1
1635: No options
1636: First char = 'a'
1637: Need char = 'g'
1638:
1639: /a(?(1)bag|big)*(.)/I
1640: Capturing subpattern count = 1
1641: No options
1642: First char = 'a'
1643: No need char
1644:
1645: /a(?(1)bag|big)+(.)/I
1646: Capturing subpattern count = 1
1647: No options
1648: First char = 'a'
1649: Need char = 'g'
1650:
1651: /a(?(1)b..|b..)(.)/I
1652: Capturing subpattern count = 1
1653: No options
1654: First char = 'a'
1655: Need char = 'b'
1656:
1657: /ab\d{0}e/I
1658: Capturing subpattern count = 0
1659: No options
1660: First char = 'a'
1661: Need char = 'e'
1662:
1663: /a?b?/I
1664: Capturing subpattern count = 0
1665: No options
1666: No first char
1667: No 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
1679: No match
1680:
1681: /|-/I
1682: Capturing subpattern count = 0
1683: No options
1684: No first char
1685: No need char
1686: abcd
1687: 0:
1688: -abc
1689: 0:
1690: \Nab-c
1691: 0: -
1692: *** Failers
1693: 0:
1694: \Nabc
1695: No 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
1725: Capturing subpattern count = 0
1726: Options: anchored
1727: No first char
1728: Need char = 'd'
1729: Subject length lower bound = 4
1730: No 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
1740: Capturing subpattern count = 0
1741: Options: extended
1742: First char = '('
1743: Need 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
1759: No match
1760: abcd
1761: No match
1762: abcd)
1763: No match
1764: (abcd
1765: No match
1766:
1767: /\( ( (?>[^()]+) | (?R) )* \) /Ixg
1768: Capturing subpattern count = 1
1769: Options: extended
1770: First char = '('
1771: Need 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
1782: Capturing subpattern count = 0
1783: Options: extended
1784: First char = '('
1785: Need 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
1795: No match
1796: ()
1797: No match
1798:
1799: /\( (?: (?>[^()]+) | (?R) )? \) /Ix
1800: Capturing subpattern count = 0
1801: Options: extended
1802: First char = '('
1803: Need char = ')'
1804: ()
1805: 0: ()
1806: 12(abcde(fsh)xyz(foo(bar))lmno)89
1807: 0: (fsh)
1808:
1809: /\( ( (?>[^()]+) | (?R) )* \) /Ix
1810: Capturing subpattern count = 1
1811: Options: extended
1812: First char = '('
1813: Need char = ')'
1814: (ab(xy)cd)
1815: 0: (ab(xy)cd)
1816: 1: cd
1817:
1818: /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
1819: Capturing subpattern count = 2
1820: Options: extended
1821: First char = '('
1822: Need char = ')'
1823: (ab(xy)cd)
1824: 0: (ab(xy)cd)
1825: 1: ab(xy)cd
1826: 2: cd
1827:
1828: /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
1829: Capturing subpattern count = 3
1830: Options: extended
1831: First char = '('
1832: Need 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
1845: Capturing subpattern count = 3
1846: Options: extended
1847: First char = '('
1848: Need 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
1861: Capturing subpattern count = 11
1862: Options: extended
1863: First char = '('
1864: Need 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
1876: 10: ab(xy)cd
1877: 11: cd
1878:
1879: /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
1880: Capturing subpattern count = 3
1881: Options: extended
1882: First char = '('
1883: Need 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
1890: Capturing subpattern count = 3
1891: Options: extended
1892: First char = '('
1893: Need 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: ------------------------------------------------------------------
1913: Capturing subpattern count = 0
1914: Options: anchored
1915: No first char
1916: No need char
1917:
1918: /^[[:^alnum:]]/DZ
1919: ------------------------------------------------------------------
1920: Bra
1921: ^
1922: [\x00-/:-@[-`{-\xff] (neg)
1923: Ket
1924: End
1925: ------------------------------------------------------------------
1926: Capturing subpattern count = 0
1927: Options: anchored
1928: No first char
1929: No need char
1930:
1931: /^[[:alpha:]]/DZ
1932: ------------------------------------------------------------------
1933: Bra
1934: ^
1935: [A-Za-z]
1936: Ket
1937: End
1938: ------------------------------------------------------------------
1939: Capturing subpattern count = 0
1940: Options: anchored
1941: No first char
1942: No need char
1943:
1944: /^[[:^alpha:]]/DZ
1945: ------------------------------------------------------------------
1946: Bra
1947: ^
1948: [\x00-@[-`{-\xff] (neg)
1949: Ket
1950: End
1951: ------------------------------------------------------------------
1952: Capturing subpattern count = 0
1953: Options: anchored
1954: No first char
1955: No need char
1956:
1957: /[_[:alpha:]]/IS
1958: Capturing subpattern count = 0
1959: No options
1960: No first char
1961: No need char
1962: Subject length lower bound = 1
1963: Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
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: ------------------------------------------------------------------
1974: Capturing subpattern count = 0
1975: Options: anchored
1976: No first char
1977: No need char
1978:
1979: /^[[:^ascii:]]/DZ
1980: ------------------------------------------------------------------
1981: Bra
1982: ^
1983: [\x80-\xff] (neg)
1984: Ket
1985: End
1986: ------------------------------------------------------------------
1987: Capturing subpattern count = 0
1988: Options: anchored
1989: No first char
1990: No need char
1991:
1992: /^[[:blank:]]/DZ
1993: ------------------------------------------------------------------
1994: Bra
1995: ^
1996: [\x09 ]
1997: Ket
1998: End
1999: ------------------------------------------------------------------
2000: Capturing subpattern count = 0
2001: Options: anchored
2002: No first char
2003: No need char
2004:
2005: /^[[:^blank:]]/DZ
2006: ------------------------------------------------------------------
2007: Bra
2008: ^
2009: [\x00-\x08\x0a-\x1f!-\xff] (neg)
2010: Ket
2011: End
2012: ------------------------------------------------------------------
2013: Capturing subpattern count = 0
2014: Options: anchored
2015: No first char
2016: No need char
2017:
2018: /[\n\x0b\x0c\x0d[:blank:]]/IS
2019: Capturing subpattern count = 0
2020: Contains explicit CR or LF match
2021: No options
2022: No first char
2023: No need char
2024: Subject length lower bound = 1
2025: Starting 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: ------------------------------------------------------------------
2035: Capturing subpattern count = 0
2036: Options: anchored
2037: No first char
2038: No need char
2039:
2040: /^[[:digit:]]/DZ
2041: ------------------------------------------------------------------
2042: Bra
2043: ^
2044: [0-9]
2045: Ket
2046: End
2047: ------------------------------------------------------------------
2048: Capturing subpattern count = 0
2049: Options: anchored
2050: No first char
2051: No need char
2052:
2053: /^[[:graph:]]/DZ
2054: ------------------------------------------------------------------
2055: Bra
2056: ^
2057: [!-~]
2058: Ket
2059: End
2060: ------------------------------------------------------------------
2061: Capturing subpattern count = 0
2062: Options: anchored
2063: No first char
2064: No need char
2065:
2066: /^[[:lower:]]/DZ
2067: ------------------------------------------------------------------
2068: Bra
2069: ^
2070: [a-z]
2071: Ket
2072: End
2073: ------------------------------------------------------------------
2074: Capturing subpattern count = 0
2075: Options: anchored
2076: No first char
2077: No need char
2078:
2079: /^[[:print:]]/DZ
2080: ------------------------------------------------------------------
2081: Bra
2082: ^
2083: [ -~]
2084: Ket
2085: End
2086: ------------------------------------------------------------------
2087: Capturing subpattern count = 0
2088: Options: anchored
2089: No first char
2090: No need char
2091:
2092: /^[[:punct:]]/DZ
2093: ------------------------------------------------------------------
2094: Bra
2095: ^
2096: [!-/:-@[-`{-~]
2097: Ket
2098: End
2099: ------------------------------------------------------------------
2100: Capturing subpattern count = 0
2101: Options: anchored
2102: No first char
2103: No need char
2104:
2105: /^[[:space:]]/DZ
2106: ------------------------------------------------------------------
2107: Bra
2108: ^
2109: [\x09-\x0d ]
2110: Ket
2111: End
2112: ------------------------------------------------------------------
2113: Capturing subpattern count = 0
2114: Options: anchored
2115: No first char
2116: No need char
2117:
2118: /^[[:upper:]]/DZ
2119: ------------------------------------------------------------------
2120: Bra
2121: ^
2122: [A-Z]
2123: Ket
2124: End
2125: ------------------------------------------------------------------
2126: Capturing subpattern count = 0
2127: Options: anchored
2128: No first char
2129: No need char
2130:
2131: /^[[:xdigit:]]/DZ
2132: ------------------------------------------------------------------
2133: Bra
2134: ^
2135: [0-9A-Fa-f]
2136: Ket
2137: End
2138: ------------------------------------------------------------------
2139: Capturing subpattern count = 0
2140: Options: anchored
2141: No first char
2142: No need char
2143:
2144: /^[[:word:]]/DZ
2145: ------------------------------------------------------------------
2146: Bra
2147: ^
2148: [0-9A-Z_a-z]
2149: Ket
2150: End
2151: ------------------------------------------------------------------
2152: Capturing subpattern count = 0
2153: Options: anchored
2154: No first char
2155: No need char
2156:
2157: /^[[:^cntrl:]]/DZ
2158: ------------------------------------------------------------------
2159: Bra
2160: ^
2161: [ -~\x80-\xff] (neg)
2162: Ket
2163: End
2164: ------------------------------------------------------------------
2165: Capturing subpattern count = 0
2166: Options: anchored
2167: No first char
2168: No need char
2169:
2170: /^[12[:^digit:]]/DZ
2171: ------------------------------------------------------------------
2172: Bra
2173: ^
2174: [\x00-/12:-\xff] (neg)
2175: Ket
2176: End
2177: ------------------------------------------------------------------
2178: Capturing subpattern count = 0
2179: Options: anchored
2180: No first char
2181: No need char
2182:
2183: /^[[:^blank:]]/DZ
2184: ------------------------------------------------------------------
2185: Bra
2186: ^
2187: [\x00-\x08\x0a-\x1f!-\xff] (neg)
2188: Ket
2189: End
2190: ------------------------------------------------------------------
2191: Capturing subpattern count = 0
2192: Options: anchored
2193: No first char
2194: No need char
2195:
2196: /[01[:alpha:]%]/DZ
2197: ------------------------------------------------------------------
2198: Bra
2199: [%01A-Za-z]
2200: Ket
2201: End
2202: ------------------------------------------------------------------
2203: Capturing subpattern count = 0
2204: No options
2205: No first char
2206: No need char
2207:
2208: /[[.ch.]]/I
2209: Failed: POSIX collating elements are not supported at offset 1
2210:
2211: /[[=ch=]]/I
2212: Failed: POSIX collating elements are not supported at offset 1
2213:
2214: /[[:rhubarb:]]/I
2215: Failed: unknown POSIX class name at offset 3
2216:
2217: /[[:upper:]]/Ii
2218: Capturing subpattern count = 0
2219: Options: caseless
2220: No first char
2221: No need char
2222: A
2223: 0: A
2224: a
2225: 0: a
2226:
2227: /[[:lower:]]/Ii
2228: Capturing subpattern count = 0
2229: Options: caseless
2230: No first char
2231: No need char
2232: A
2233: 0: A
2234: a
2235: 0: a
2236:
2237: /((?-i)[[:lower:]])[[:lower:]]/Ii
2238: Capturing subpattern count = 1
2239: Options: caseless
2240: No first char
2241: No 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
2252: No match
2253: AB
2254: No match
2255:
2256: /[\200-\110]/I
2257: Failed: range out of order in character class at offset 9
2258:
2259: /^(?(0)f|b)oo/I
2260: Failed: invalid condition (?(0) at offset 6
2261:
2262: /This one's here because of the large output vector needed/I
2263: Capturing subpattern count = 0
2264: No options
2265: First char = 'T'
2266: Need 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
2269: Capturing subpattern count = 271
2270: Max back reference = 270
2271: No options
2272: No first char
2273: No 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
2285: 10: 10
2286: 11: 11
2287: 12: 12
2288: 13: 13
2289: 14: 14
2290: 15: 15
2291: 16: 16
2292: 17: 17
2293: 18: 18
2294: 19: 19
2295: 20: 20
2296: 21: 21
2297: 22: 22
2298: 23: 23
2299: 24: 24
2300: 25: 25
2301: 26: 26
2302: 27: 27
2303: 28: 28
2304: 29: 29
2305: 30: 30
2306: 31: 31
2307: 32: 32
2308: 33: 33
2309: 34: 34
2310: 35: 35
2311: 36: 36
2312: 37: 37
2313: 38: 38
2314: 39: 39
2315: 40: 40
2316: 41: 41
2317: 42: 42
2318: 43: 43
2319: 44: 44
2320: 45: 45
2321: 46: 46
2322: 47: 47
2323: 48: 48
2324: 49: 49
2325: 50: 50
2326: 51: 51
2327: 52: 52
2328: 53: 53
2329: 54: 54
2330: 55: 55
2331: 56: 56
2332: 57: 57
2333: 58: 58
2334: 59: 59
2335: 60: 60
2336: 61: 61
2337: 62: 62
2338: 63: 63
2339: 64: 64
2340: 65: 65
2341: 66: 66
2342: 67: 67
2343: 68: 68
2344: 69: 69
2345: 70: 70
2346: 71: 71
2347: 72: 72
2348: 73: 73
2349: 74: 74
2350: 75: 75
2351: 76: 76
2352: 77: 77
2353: 78: 78
2354: 79: 79
2355: 80: 80
2356: 81: 81
2357: 82: 82
2358: 83: 83
2359: 84: 84
2360: 85: 85
2361: 86: 86
2362: 87: 87
2363: 88: 88
2364: 89: 89
2365: 90: 90
2366: 91: 91
2367: 92: 92
2368: 93: 93
2369: 94: 94
2370: 95: 95
2371: 96: 96
2372: 97: 97
2373: 98: 98
2374: 99: 99
2375: 100: 100
2376: 101: 101
2377: 102: 102
2378: 103: 103
2379: 104: 104
2380: 105: 105
2381: 106: 106
2382: 107: 107
2383: 108: 108
2384: 109: 109
2385: 110: 110
2386: 111: 111
2387: 112: 112
2388: 113: 113
2389: 114: 114
2390: 115: 115
2391: 116: 116
2392: 117: 117
2393: 118: 118
2394: 119: 119
2395: 120: 120
2396: 121: 121
2397: 122: 122
2398: 123: 123
2399: 124: 124
2400: 125: 125
2401: 126: 126
2402: 127: 127
2403: 128: 128
2404: 129: 129
2405: 130: 130
2406: 131: 131
2407: 132: 132
2408: 133: 133
2409: 134: 134
2410: 135: 135
2411: 136: 136
2412: 137: 137
2413: 138: 138
2414: 139: 139
2415: 140: 140
2416: 141: 141
2417: 142: 142
2418: 143: 143
2419: 144: 144
2420: 145: 145
2421: 146: 146
2422: 147: 147
2423: 148: 148
2424: 149: 149
2425: 150: 150
2426: 151: 151
2427: 152: 152
2428: 153: 153
2429: 154: 154
2430: 155: 155
2431: 156: 156
2432: 157: 157
2433: 158: 158
2434: 159: 159
2435: 160: 160
2436: 161: 161
2437: 162: 162
2438: 163: 163
2439: 164: 164
2440: 165: 165
2441: 166: 166
2442: 167: 167
2443: 168: 168
2444: 169: 169
2445: 170: 170
2446: 171: 171
2447: 172: 172
2448: 173: 173
2449: 174: 174
2450: 175: 175
2451: 176: 176
2452: 177: 177
2453: 178: 178
2454: 179: 179
2455: 180: 180
2456: 181: 181
2457: 182: 182
2458: 183: 183
2459: 184: 184
2460: 185: 185
2461: 186: 186
2462: 187: 187
2463: 188: 188
2464: 189: 189
2465: 190: 190
2466: 191: 191
2467: 192: 192
2468: 193: 193
2469: 194: 194
2470: 195: 195
2471: 196: 196
2472: 197: 197
2473: 198: 198
2474: 199: 199
2475: 200: 200
2476: 201: 201
2477: 202: 202
2478: 203: 203
2479: 204: 204
2480: 205: 205
2481: 206: 206
2482: 207: 207
2483: 208: 208
2484: 209: 209
2485: 210: 210
2486: 211: 211
2487: 212: 212
2488: 213: 213
2489: 214: 214
2490: 215: 215
2491: 216: 216
2492: 217: 217
2493: 218: 218
2494: 219: 219
2495: 220: 220
2496: 221: 221
2497: 222: 222
2498: 223: 223
2499: 224: 224
2500: 225: 225
2501: 226: 226
2502: 227: 227
2503: 228: 228
2504: 229: 229
2505: 230: 230
2506: 231: 231
2507: 232: 232
2508: 233: 233
2509: 234: 234
2510: 235: 235
2511: 236: 236
2512: 237: 237
2513: 238: 238
2514: 239: 239
2515: 240: 240
2516: 241: 241
2517: 242: 242
2518: 243: 243
2519: 244: 244
2520: 245: 245
2521: 246: 246
2522: 247: 247
2523: 248: 248
2524: 249: 249
2525: 250: 250
2526: 251: 251
2527: 252: 252
2528: 253: 253
2529: 254: 254
2530: 255: 255
2531: 256: 256
2532: 257: 257
2533: 258: 258
2534: 259: 259
2535: 260: 260
2536: 261: 261
2537: 262: 262
2538: 263: 263
2539: 264: 264
2540: 265: 265
2541: 266: 266
2542: 267: 267
2543: 268: 268
2544: 269: 269
2545: 270: ABC
2546: 271: ABC
2547:
2548: /This one's here because Perl does this differently and PCRE can't at present/I
2549: Capturing subpattern count = 0
2550: No options
2551: First char = 'T'
2552: Need char = 't'
2553:
2554: /(main(O)?)+/I
2555: Capturing subpattern count = 2
2556: No options
2557: First char = 'm'
2558: Need 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
2568: Capturing subpattern count = 1
2569: No options
2570: First char = 'T'
2571: Need char = 's'
2572:
2573: /^(a(b)?)+$/I
2574: Capturing subpattern count = 2
2575: Options: anchored
2576: No first char
2577: No need char
2578: aba
2579: 0: aba
2580: 1: a
2581: 2: b
2582:
2583: /^(aa(bb)?)+$/I
2584: Capturing subpattern count = 2
2585: Options: anchored
2586: No first char
2587: No need char
2588: aabbaa
2589: 0: aabbaa
2590: 1: aa
2591: 2: bb
2592:
2593: /^(aa|aa(bb))+$/I
2594: Capturing subpattern count = 2
2595: Options: anchored
2596: No first char
2597: No need char
2598: aabbaa
2599: 0: aabbaa
2600: 1: aa
2601: 2: bb
2602:
2603: /^(aa(bb)??)+$/I
2604: Capturing subpattern count = 2
2605: Options: anchored
2606: No first char
2607: No need char
2608: aabbaa
2609: 0: aabbaa
2610: 1: aa
2611: 2: bb
2612:
2613: /^(?:aa(bb)?)+$/I
2614: Capturing subpattern count = 1
2615: Options: anchored
2616: No first char
2617: No need char
2618: aabbaa
2619: 0: aabbaa
2620: 1: bb
2621:
2622: /^(aa(b(b))?)+$/I
2623: Capturing subpattern count = 3
2624: Options: anchored
2625: No first char
2626: No need char
2627: aabbaa
2628: 0: aabbaa
2629: 1: aa
2630: 2: bb
2631: 3: b
2632:
2633: /^(?:aa(b(b))?)+$/I
2634: Capturing subpattern count = 2
2635: Options: anchored
2636: No first char
2637: No need char
2638: aabbaa
2639: 0: aabbaa
2640: 1: bb
2641: 2: b
2642:
2643: /^(?:aa(b(?:b))?)+$/I
2644: Capturing subpattern count = 1
2645: Options: anchored
2646: No first char
2647: No need char
2648: aabbaa
2649: 0: aabbaa
2650: 1: bb
2651:
2652: /^(?:aa(bb(?:b))?)+$/I
2653: Capturing subpattern count = 1
2654: Options: anchored
2655: No first char
2656: No need char
2657: aabbbaa
2658: 0: aabbbaa
2659: 1: bbb
2660:
2661: /^(?:aa(b(?:bb))?)+$/I
2662: Capturing subpattern count = 1
2663: Options: anchored
2664: No first char
2665: No need char
2666: aabbbaa
2667: 0: aabbbaa
2668: 1: bbb
2669:
2670: /^(?:aa(?:b(b))?)+$/I
2671: Capturing subpattern count = 1
2672: Options: anchored
2673: No first char
2674: No need char
2675: aabbaa
2676: 0: aabbaa
2677: 1: b
2678:
2679: /^(?:aa(?:b(bb))?)+$/I
2680: Capturing subpattern count = 1
2681: Options: anchored
2682: No first char
2683: No need char
2684: aabbbaa
2685: 0: aabbbaa
2686: 1: bb
2687:
2688: /^(aa(b(bb))?)+$/I
2689: Capturing subpattern count = 3
2690: Options: anchored
2691: No first char
2692: No need char
2693: aabbbaa
2694: 0: aabbbaa
2695: 1: aa
2696: 2: bbb
2697: 3: bb
2698:
2699: /^(aa(bb(bb))?)+$/I
2700: Capturing subpattern count = 3
2701: Options: anchored
2702: No first char
2703: No need char
2704: aabbbbaa
2705: 0: aabbbbaa
2706: 1: aa
2707: 2: bbbb
2708: 3: bb
2709:
2710: /--------------------------------------------------------------------/I
2711: Capturing subpattern count = 0
2712: No options
2713: First char = '-'
2714: Need char = '-'
2715:
2716: /#/IxDZ
2717: ------------------------------------------------------------------
2718: Bra
2719: Ket
2720: End
2721: ------------------------------------------------------------------
2722: Capturing subpattern count = 0
2723: Options: extended
2724: No first char
2725: No need char
2726:
2727: /a#/IxDZ
2728: ------------------------------------------------------------------
2729: Bra
2730: a
2731: Ket
2732: End
2733: ------------------------------------------------------------------
2734: Capturing subpattern count = 0
2735: Options: extended
2736: First char = 'a'
2737: No need char
2738:
2739: /[\s]/DZ
2740: ------------------------------------------------------------------
2741: Bra
2742: [\x09\x0a\x0c\x0d ]
2743: Ket
2744: End
2745: ------------------------------------------------------------------
2746: Capturing subpattern count = 0
2747: No options
2748: No first char
2749: No need char
2750:
2751: /[\S]/DZ
2752: ------------------------------------------------------------------
2753: Bra
2754: [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg)
2755: Ket
2756: End
2757: ------------------------------------------------------------------
2758: Capturing subpattern count = 0
2759: No options
2760: No first char
2761: No need char
2762:
2763: /a(?i)b/DZ
2764: ------------------------------------------------------------------
2765: Bra
2766: a
2767: 01 Opt
2768: NC b
2769: Ket
2770: End
2771: ------------------------------------------------------------------
2772: Capturing subpattern count = 0
2773: No options
2774: First char = 'a'
2775: Need char = 'b' (caseless)
2776: ab
2777: 0: ab
2778: aB
2779: 0: aB
2780: *** Failers
2781: No match
2782: AB
2783: No 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: ------------------------------------------------------------------
2797: Capturing subpattern count = 1
2798: No options
2799: First char = 'a'
2800: Need char = 'b' (caseless)
2801: ab
2802: 0: ab
2803: 1: ab
2804: aB
2805: 0: aB
2806: 1: aB
2807: *** Failers
2808: No match
2809: AB
2810: No match
2811:
2812: / (?i)abc/IxDZ
2813: ------------------------------------------------------------------
2814: Bra
2815: NC abc
2816: Ket
2817: End
2818: ------------------------------------------------------------------
2819: Capturing subpattern count = 0
2820: Options: caseless extended
2821: First char = 'a' (caseless)
2822: Need char = 'c' (caseless)
2823:
2824: /#this is a comment
2825: (?i)abc/IxDZ
2826: ------------------------------------------------------------------
2827: Bra
2828: NC abc
2829: Ket
2830: End
2831: ------------------------------------------------------------------
2832: Capturing subpattern count = 0
2833: Options: caseless extended
2834: First char = 'a' (caseless)
2835: Need char = 'c' (caseless)
2836:
2837: /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
2838: ------------------------------------------------------------------
2839: Bra
2840: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
2841: Ket
2842: End
2843: ------------------------------------------------------------------
2844: Capturing subpattern count = 0
2845: No options
2846: First char = '1'
2847: Need char = '0'
2848:
2849: /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
2850: ------------------------------------------------------------------
2851: Bra
2852: 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
2853: Ket
2854: End
2855: ------------------------------------------------------------------
2856: Capturing subpattern count = 0
2857: No options
2858: First char = '1'
2859: Need char = '0'
2860:
2861: /\Q\E/DZ
2862: ------------------------------------------------------------------
2863: Bra
2864: Ket
2865: End
2866: ------------------------------------------------------------------
2867: Capturing subpattern count = 0
2868: No options
2869: No first char
2870: No need char
2871: \
2872: 0:
2873:
2874: /\Q\Ex/DZ
2875: ------------------------------------------------------------------
2876: Bra
2877: x
2878: Ket
2879: End
2880: ------------------------------------------------------------------
2881: Capturing subpattern count = 0
2882: No options
2883: First char = 'x'
2884: No need char
2885:
2886: / \Q\E/DZ
2887: ------------------------------------------------------------------
2888: Bra
2889:
2890: Ket
2891: End
2892: ------------------------------------------------------------------
2893: Capturing subpattern count = 0
2894: No options
2895: First char = ' '
2896: No need char
2897:
2898: /a\Q\E/DZ
2899: ------------------------------------------------------------------
2900: Bra
2901: a
2902: Ket
2903: End
2904: ------------------------------------------------------------------
2905: Capturing subpattern count = 0
2906: No options
2907: First char = 'a'
2908: No 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: ------------------------------------------------------------------
2923: Capturing subpattern count = 0
2924: No options
2925: First char = 'a'
2926: Need char = 'b'
2927: abc
2928: 0: ab
2929:
2930: /\Q\Eabc/DZ
2931: ------------------------------------------------------------------
2932: Bra
2933: abc
2934: Ket
2935: End
2936: ------------------------------------------------------------------
2937: Capturing subpattern count = 0
2938: No options
2939: First char = 'a'
2940: Need char = 'c'
2941:
2942: /x*+\w/DZ
2943: ------------------------------------------------------------------
2944: Bra
2945: x*+
2946: \w
2947: Ket
2948: End
2949: ------------------------------------------------------------------
2950: Capturing subpattern count = 0
2951: No options
2952: No first char
2953: No need char
2954: *** Failers
2955: 0: F
2956: xxxxx
2957: No match
2958:
2959: /x?+/DZ
2960: ------------------------------------------------------------------
2961: Bra
2962: x?+
2963: Ket
2964: End
2965: ------------------------------------------------------------------
2966: Capturing subpattern count = 0
2967: No options
2968: No first char
2969: No need char
2970:
2971: /x++/DZ
2972: ------------------------------------------------------------------
2973: Bra
2974: x++
2975: Ket
2976: End
2977: ------------------------------------------------------------------
2978: Capturing subpattern count = 0
2979: No options
2980: First char = 'x'
2981: No 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: ------------------------------------------------------------------
2993: Capturing subpattern count = 0
2994: No options
2995: First char = 'x'
2996: No 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: ------------------------------------------------------------------
3010: Capturing subpattern count = 1
3011: No options
3012: No first char
3013: No need char
3014:
3015: /^(\w++|\s++)*$/I
3016: Capturing subpattern count = 1
3017: Options: anchored
3018: No first char
3019: No 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
3024: No match
3025: this is not a line with only words and spaces!
3026: No match
3027:
3028: /(\d++)(\w)/I
3029: Capturing subpattern count = 2
3030: No options
3031: No first char
3032: No need char
3033: 12345a
3034: 0: 12345a
3035: 1: 12345
3036: 2: a
3037: *** Failers
3038: No match
3039: 12345+
3040: No match
3041:
3042: /a++b/I
3043: Capturing subpattern count = 0
3044: No options
3045: First char = 'a'
3046: Need char = 'b'
3047: aaab
3048: 0: aaab
3049:
3050: /(a++b)/I
3051: Capturing subpattern count = 1
3052: No options
3053: First char = 'a'
3054: Need char = 'b'
3055: aaab
3056: 0: aaab
3057: 1: aaab
3058:
3059: /(a++)b/I
3060: Capturing subpattern count = 1
3061: No options
3062: First char = 'a'
3063: Need char = 'b'
3064: aaab
3065: 0: aaab
3066: 1: aaa
3067:
3068: /([^()]++|\([^()]*\))+/I
3069: Capturing subpattern count = 1
3070: No options
3071: No first char
3072: No need char
3073: ((abc(ade)ufh()()x
3074: 0: abc(ade)ufh()()x
3075: 1: x
3076:
3077: /\(([^()]++|\([^()]+\))+\)/I
3078: Capturing subpattern count = 1
3079: No options
3080: First char = '('
3081: Need char = ')'
3082: (abc)
3083: 0: (abc)
3084: 1: abc
3085: (abc(def)xyz)
3086: 0: (abc(def)xyz)
3087: 1: xyz
3088: *** Failers
3089: No match
3090: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3091: No 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: ------------------------------------------------------------------
3114: Capturing subpattern count = 1
3115: No options
3116: First char = 'a'
3117: Need char = 'c'
3118:
3119: /a+?+/I
3120: Failed: nothing to repeat at offset 3
3121:
3122: /a{2,3}?+b/I
3123: Failed: nothing to repeat at offset 7
3124:
3125: /(?U)a+?+/I
3126: Failed: nothing to repeat at offset 7
3127:
3128: /a{2,3}?+b/IU
3129: Failed: 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: ------------------------------------------------------------------
3140: Capturing subpattern count = 0
3141: No options
3142: First char = 'x'
3143: Need 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: ------------------------------------------------------------------
3156: Capturing subpattern count = 0
3157: Options: ungreedy
3158: First char = 'x'
3159: Need 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: ------------------------------------------------------------------
3184: Capturing subpattern count = 5
3185: Options: anchored
3186: No first char
3187: No need char
3188:
3189: /^x(?U)a+b/DZ
3190: ------------------------------------------------------------------
3191: Bra
3192: ^
3193: x
3194: a++
3195: b
3196: Ket
3197: End
3198: ------------------------------------------------------------------
3199: Capturing subpattern count = 0
3200: Options: anchored
3201: No first char
3202: Need 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: ------------------------------------------------------------------
3216: Capturing subpattern count = 1
3217: Options: anchored
3218: No first char
3219: Need char = 'b'
3220:
3221: /[.x.]/I
3222: Failed: POSIX collating elements are not supported at offset 0
3223:
3224: /[=x=]/I
3225: Failed: POSIX collating elements are not supported at offset 0
3226:
3227: /[:x:]/I
3228: Failed: POSIX named classes are supported only within a class at offset 0
3229:
3230: /\l/I
3231: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3232:
3233: /\L/I
3234: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3235:
3236: /\N{name}/I
3237: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3238:
3239: /\u/I
3240: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3241:
3242: /\U/I
3243: Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3244:
3245: /[/I
3246: Failed: missing terminating ] for character class at offset 1
3247:
3248: /[a-/I
3249: Failed: missing terminating ] for character class at offset 3
3250:
3251: /[[:space:]/I
3252: Failed: 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: ------------------------------------------------------------------
3261: Capturing subpattern count = 0
3262: No options
3263: No first char
3264: No need char
3265:
3266: /[[:space:]]/IDZ
3267: ------------------------------------------------------------------
3268: Bra
3269: [\x09-\x0d ]
3270: Ket
3271: End
3272: ------------------------------------------------------------------
3273: Capturing subpattern count = 0
3274: No options
3275: No first char
3276: No need char
3277:
3278: /[[:space:]abcde]/IDZ
3279: ------------------------------------------------------------------
3280: Bra
3281: [\x09-\x0d a-e]
3282: Ket
3283: End
3284: ------------------------------------------------------------------
3285: Capturing subpattern count = 0
3286: No options
3287: No first char
3288: No need char
3289:
3290: /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix
3291: Capturing subpattern count = 0
3292: Options: extended
3293: First char = '<'
3294: Need 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
3308: No match
3309: <abc
3310: No 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: ------------------------------------------------------------------
3320: Capturing subpattern count = 0
3321: No options
3322: First char = '8'
3323: Need 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: ------------------------------------------------------------------
3333: Capturing subpattern count = 0
3334: No options
3335: First char = '$'
3336: Need char = 'X'
3337:
3338: /(.*)\d+\1/I
3339: Capturing subpattern count = 1
3340: Max back reference = 1
3341: No options
3342: No first char
3343: No need char
3344:
3345: /(.*)\d+/I
3346: Capturing subpattern count = 1
3347: No options
3348: First char at start or follows newline
3349: No need char
3350:
3351: /(.*)\d+\1/Is
3352: Capturing subpattern count = 1
3353: Max back reference = 1
3354: Options: dotall
3355: No first char
3356: No need char
3357:
3358: /(.*)\d+/Is
3359: Capturing subpattern count = 1
3360: Options: anchored dotall
3361: No first char
3362: No need char
3363:
3364: /(.*(xyz))\d+\2/I
3365: Capturing subpattern count = 2
3366: Max back reference = 2
3367: No options
3368: First char at start or follows newline
3369: Need char = 'z'
3370:
3371: /((.*))\d+\1/I
3372: Capturing subpattern count = 2
3373: Max back reference = 1
3374: No options
3375: No first char
3376: No need char
3377: abc123bc
3378: 0: bc123bc
3379: 1: bc
3380: 2: bc
3381:
3382: /a[b]/I
3383: Capturing subpattern count = 0
3384: No options
3385: First char = 'a'
3386: Need char = 'b'
3387:
3388: /(?=a).*/I
3389: Capturing subpattern count = 0
3390: No options
3391: First char = 'a'
3392: No need char
3393:
3394: /(?=abc).xyz/IiI
3395: Capturing subpattern count = 0
3396: Options: caseless
3397: First char = 'a' (caseless)
3398: Need char = 'z' (caseless)
3399:
3400: /(?=abc)(?i).xyz/I
3401: Capturing subpattern count = 0
3402: No options
3403: First char = 'a'
3404: Need char = 'z' (caseless)
3405:
3406: /(?=a)(?=b)/I
3407: Capturing subpattern count = 0
3408: No options
3409: First char = 'a'
3410: No need char
3411:
3412: /(?=.)a/I
3413: Capturing subpattern count = 0
3414: No options
3415: First char = 'a'
3416: No need char
3417:
3418: /((?=abcda)a)/I
3419: Capturing subpattern count = 1
3420: No options
3421: First char = 'a'
3422: Need char = 'a'
3423:
3424: /((?=abcda)ab)/I
3425: Capturing subpattern count = 1
3426: No options
3427: First char = 'a'
3428: Need char = 'b'
3429:
3430: /()a/I
3431: Capturing subpattern count = 1
3432: No options
3433: No first char
3434: Need char = 'a'
3435:
3436: /(?(1)ab|ac)(.)/I
3437: Capturing subpattern count = 1
3438: No options
3439: First char = 'a'
3440: No need char
3441:
3442: /(?(1)abz|acz)(.)/I
3443: Capturing subpattern count = 1
3444: No options
3445: First char = 'a'
3446: Need char = 'z'
3447:
3448: /(?(1)abz)(.)/I
3449: Capturing subpattern count = 1
3450: No options
3451: No first char
3452: No need char
3453:
3454: /(?(1)abz)(1)23/I
3455: Capturing subpattern count = 1
3456: No options
3457: No first char
3458: Need char = '3'
3459:
3460: /(a)+/I
3461: Capturing subpattern count = 1
3462: No options
3463: First char = 'a'
3464: No need char
3465:
3466: /(a){2,3}/I
3467: Capturing subpattern count = 1
3468: No options
3469: First char = 'a'
3470: Need char = 'a'
3471:
3472: /(a)*/I
3473: Capturing subpattern count = 1
3474: No options
3475: No first char
3476: No need char
3477:
3478: /[a]/I
3479: Capturing subpattern count = 0
3480: No options
3481: First char = 'a'
3482: No need char
3483:
3484: /[ab]/I
3485: Capturing subpattern count = 0
3486: No options
3487: No first char
3488: No need char
3489:
3490: /[ab]/IS
3491: Capturing subpattern count = 0
3492: No options
3493: No first char
3494: No need char
3495: Subject length lower bound = 1
3496: Starting byte set: a b
3497:
3498: /[^a]/I
3499: Capturing subpattern count = 0
3500: No options
3501: No first char
3502: No need char
3503:
3504: /\d456/I
3505: Capturing subpattern count = 0
3506: No options
3507: No first char
3508: Need char = '6'
3509:
3510: /\d456/IS
3511: Capturing subpattern count = 0
3512: No options
3513: No first char
3514: Need char = '6'
3515: Subject length lower bound = 4
3516: Starting byte set: 0 1 2 3 4 5 6 7 8 9
3517:
3518: /a^b/I
3519: Capturing subpattern count = 0
3520: No options
3521: First char = 'a'
3522: Need char = 'b'
3523:
3524: /^a/Im
3525: Capturing subpattern count = 0
3526: Options: multiline
3527: First char at start or follows newline
3528: Need char = 'a'
3529: abcde
3530: 0: a
3531: xy\nabc
3532: 0: a
3533: *** Failers
3534: No match
3535: xyabc
3536: No match
3537:
3538: /c|abc/I
3539: Capturing subpattern count = 0
3540: No options
3541: No first char
3542: Need char = 'c'
3543:
3544: /(?i)[ab]/IS
3545: Capturing subpattern count = 0
3546: Options: caseless
3547: No first char
3548: No need char
3549: Subject length lower bound = 1
3550: Starting byte set: A B a b
3551:
3552: /[ab](?i)cd/IS
3553: Capturing subpattern count = 0
3554: No options
3555: No first char
3556: Need char = 'd' (caseless)
3557: Subject length lower bound = 3
3558: Starting byte set: a b
3559:
3560: /abc(?C)def/I
3561: Capturing subpattern count = 0
3562: No options
3563: First char = 'a'
3564: Need char = 'f'
3565: abcdef
3566: --->abcdef
3567: 0 ^ ^ d
3568: 0: abcdef
3569: 1234abcdef
3570: --->1234abcdef
3571: 0 ^ ^ d
3572: 0: abcdef
3573: *** Failers
3574: No match
3575: abcxyz
3576: No match
3577: abcxyzf
3578: --->abcxyzf
3579: 0 ^ ^ d
3580: No match
3581:
3582: /abc(?C)de(?C1)f/I
3583: Capturing subpattern count = 0
3584: No options
3585: First char = 'a'
3586: Need char = 'f'
3587: 123abcdef
3588: --->123abcdef
3589: 0 ^ ^ d
3590: 1 ^ ^ f
3591: 0: abcdef
3592:
3593: /(?C1)\dabc(?C2)def/I
3594: Capturing subpattern count = 0
3595: No options
3596: No first char
3597: Need 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
3607: No match
3608: abcdef
3609: --->abcdef
3610: 1 ^ \d
3611: 1 ^ \d
3612: 1 ^ \d
3613: 1 ^ \d
3614: 1 ^ \d
3615: 1 ^ \d
3616: No match
3617:
3618: /(?C255)ab/I
3619: Capturing subpattern count = 0
3620: No options
3621: First char = 'a'
3622: Need char = 'b'
3623:
3624: /(?C256)ab/I
3625: Failed: number after (?C is > 255 at offset 6
3626:
3627: /(?Cab)xx/I
3628: Failed: closing ) for (?C expected at offset 3
3629:
3630: /(?C12vr)x/I
3631: Failed: closing ) for (?C expected at offset 5
3632:
3633: /abc(?C)def/I
3634: Capturing subpattern count = 0
3635: No options
3636: First char = 'a'
3637: Need char = 'f'
3638: *** Failers
3639: No match
3640: \x83\x0\x61bcdef
3641: --->\x83\x00abcdef
3642: 0 ^ ^ d
3643: 0: abcdef
3644:
3645: /(abc)(?C)de(?C1)f/I
3646: Capturing subpattern count = 1
3647: No options
3648: First char = 'a'
3649: Need char = 'f'
3650: 123abcdef
3651: --->123abcdef
3652: 0 ^ ^ d
3653: 1 ^ ^ f
3654: 0: abcdef
3655: 1: abc
3656: 123abcdef\C+
3657: Callout 0: last capture = 1
3658: 0: <unset>
3659: 1: abc
3660: --->123abcdef
3661: ^ ^ d
3662: Callout 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
3673: No match
3674: 123abcdef\C!1
3675: --->123abcdef
3676: 0 ^ ^ d
3677: 1 ^ ^ f
3678: No match
3679:
3680: /(?C0)(abc(?C1))*/I
3681: Capturing subpattern count = 1
3682: No options
3683: No first char
3684: No 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
3714: Capturing subpattern count = 1
3715: No options
3716: No first char
3717: No need char
3718: 123\C+
3719: Callout 0: last capture = -1
3720: 0: <unset>
3721: --->123
3722: ^ ^ )
3723: 0: 123
3724: 1: 123
3725: 123456\C+
3726: Callout 0: last capture = -1
3727: 0: <unset>
3728: --->123456
3729: ^ ^ )
3730: Callout 0: last capture = 1
3731: 0: <unset>
3732: 1: 123
3733: --->123456
3734: ^ ^ )
3735: 0: 123456
3736: 1: 456
3737: 123456789\C+
3738: Callout 0: last capture = -1
3739: 0: <unset>
3740: --->123456789
3741: ^ ^ )
3742: Callout 0: last capture = 1
3743: 0: <unset>
3744: 1: 123
3745: --->123456789
3746: ^ ^ )
3747: Callout 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
3756: Capturing subpattern count = 2
3757: No options
3758: First char = 'x'
3759: No need char
3760: xyzabc\C+
3761: Callout 0: last capture = 2
3762: 0: <unset>
3763: 1: <unset>
3764: 2: xyz
3765: --->xyzabc
3766: ^ ^ p
3767: Callout 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
3775: Capturing subpattern count = 3
3776: No options
3777: First char = 'X'
3778: Need char = 'x'
3779: Xxyzabc\C+
3780: Callout 0: last capture = 3
3781: 0: <unset>
3782: 1: X
3783: 2: <unset>
3784: 3: xyz
3785: --->Xxyzabc
3786: ^ ^ p
3787: Callout 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
3797: Capturing subpattern count = 1
3798: No options
3799: First char = 'a'
3800: Need char = 'f'
3801: abcdef\C+
3802: Callout 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
3811: Capturing subpattern count = 1
3812: No options
3813: First char = 'a'
3814: Need char = 'z'
3815: abcxyz\C+
3816: Callout 1: last capture = 1
3817: 0: <unset>
3818: 1: abc
3819: --->abcxyz
3820: ^ ^ d
3821: Callout 2: last capture = -1
3822: 0: <unset>
3823: --->abcxyz
3824: ^ a
3825: 0: abcxyz
3826:
3827: /(?<=(abc)(?C))xyz/I
3828: Capturing subpattern count = 1
3829: No options
3830: First char = 'x'
3831: Need char = 'z'
3832: abcxyz\C+
3833: Callout 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
3842: Capturing subpattern count = 2
3843: No options
3844: First char = 'a'
3845: Need char = 'b'
3846: abbbbbccc\C*1
3847: --->abbbbbccc
3848: 1 ^ ^
3849: Callout data = 1
3850: 1 ^ ^
3851: Callout data = 1
3852: 1 ^ ^
3853: Callout data = 1
3854: 1 ^ ^
3855: Callout data = 1
3856: 1 ^ ^
3857: Callout data = 1
3858: 1 ^ ^
3859: Callout data = 1
3860: 1 ^ ^
3861: Callout data = 1
3862: 1 ^ ^
3863: Callout data = 1
3864: No match
3865:
3866: /a(b+?)(c*?)(?C1)/I
3867: Capturing subpattern count = 2
3868: No options
3869: First char = 'a'
3870: Need char = 'b'
3871: abbbbbccc\C*1
3872: --->abbbbbccc
3873: 1 ^ ^
3874: Callout data = 1
3875: 1 ^ ^
3876: Callout data = 1
3877: 1 ^ ^
3878: Callout data = 1
3879: 1 ^ ^
3880: Callout data = 1
3881: 1 ^ ^
3882: Callout data = 1
3883: 1 ^ ^
3884: Callout data = 1
3885: 1 ^ ^
3886: Callout data = 1
3887: 1 ^ ^
3888: Callout data = 1
3889: No match
3890:
3891: /(?C)abc/I
3892: Capturing subpattern count = 0
3893: No options
3894: First char = 'a'
3895: Need char = 'c'
3896:
3897: /(?C)^abc/I
3898: Capturing subpattern count = 0
3899: Options: anchored
3900: No first char
3901: No need char
3902:
3903: /(?C)a|b/IS
3904: Capturing subpattern count = 0
3905: No options
3906: No first char
3907: No need char
3908: Subject length lower bound = 1
3909: Starting byte set: a b
3910:
3911: /(?R)/I
3912: Failed: recursive call could loop indefinitely at offset 3
3913:
3914: /(a|(?R))/I
3915: Failed: recursive call could loop indefinitely at offset 6
3916:
3917: /(ab|(bc|(de|(?R))))/I
3918: Failed: recursive call could loop indefinitely at offset 15
3919:
3920: /x(ab|(bc|(de|(?R))))/I
3921: Capturing subpattern count = 3
3922: No options
3923: First char = 'x'
3924: No 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
3948: No match
3949: xyab
3950: No match
3951:
3952: /(ab|(bc|(de|(?1))))/I
3953: Failed: recursive call could loop indefinitely at offset 15
3954:
3955: /x(ab|(bc|(de|(?1)x)x)x)/I
3956: Failed: recursive call could loop indefinitely at offset 16
3957:
3958: /^([^()]|\((?1)*\))*$/I
3959: Capturing subpattern count = 1
3960: Options: anchored
3961: No first char
3962: No 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)
3973: No match
3974: a(b(c)d
3975: No match
3976:
3977: /^>abc>([^()]|\((?1)*\))*<xyz<$/I
3978: Capturing subpattern count = 1
3979: Options: anchored
3980: No first char
3981: Need 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: ------------------------------------------------------------------
4005: Capturing subpattern count = 1
4006: No options
4007: First char = 'a'
4008: Need 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: ------------------------------------------------------------------
4023: Capturing subpattern count = 1
4024: No options
4025: First char = 'a'
4026: Need char = 'b'
4027:
4028: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
4029: Capturing subpattern count = 2
4030: Options: anchored
4031: No first char
4032: No 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
4044: No match
4045: ((2+2)*-3)-7)
4046: No match
4047:
4048: /^(x(y|(?1){2})z)/I
4049: Capturing subpattern count = 2
4050: Options: anchored
4051: No first char
4052: No 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
4062: No match
4063: xxyzz
4064: No match
4065: xxyzxyzxyzz
4066: No match
4067:
4068: /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix
4069: Capturing subpattern count = 2
4070: Options: extended
4071: First char = '<'
4072: Need 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
4098: No match
4099: <abc
4100: No match
4101:
4102: /(?1)/I
4103: Failed: reference to non-existent subpattern at offset 3
4104:
4105: /((?2)(abc)/I
4106: Failed: missing ) at offset 10
4107:
4108: /^(abc)def(?1)/I
4109: Capturing subpattern count = 1
4110: Options: anchored
4111: No first char
4112: No need char
4113: abcdefabc
4114: 0: abcdefabc
4115: 1: abc
4116:
4117: /^(a|b|c)=(?1)+/I
4118: Capturing subpattern count = 1
4119: Options: anchored
4120: No first char
4121: No 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
4133: Capturing subpattern count = 2
4134: Options: anchored
4135: No first char
4136: No 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: ------------------------------------------------------------------
4166: Capturing subpattern count = 2
4167: Named capturing subpatterns:
4168: longername2 2
4169: name1 1
4170: No options
4171: First char = 'a'
4172: Need 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: ------------------------------------------------------------------
4200: Capturing subpattern count = 3
4201: Named capturing subpatterns:
4202: a 3
4203: c 1
4204: d 2
4205: No options
4206: First char = 'a'
4207: Need 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: ------------------------------------------------------------------
4227: Capturing subpattern count = 1
4228: Max back reference = 1
4229: Named capturing subpatterns:
4230: a 1
4231: No options
4232: First char = 'a'
4233: Need 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
4236: Capturing subpattern count = 4
4237: Max back reference = 4
4238: Named capturing subpatterns:
4239: four 4
4240: one 1
4241: three 3
4242: two 2
4243: Options: anchored caseless
4244: No first char
4245: No 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
4269: No match
4270: The quick brown fox
4271: No match
4272:
4273: /((?(R)a|b))\1(?1)?/I
4274: Capturing subpattern count = 1
4275: Max back reference = 1
4276: No options
4277: No first char
4278: No need char
4279: bb
4280: 0: bb
4281: 1: b
4282: bbaa
4283: 0: bba
4284: 1: b
4285:
4286: /(.*)a/Is
4287: Capturing subpattern count = 1
4288: Options: anchored dotall
4289: No first char
4290: Need char = 'a'
4291:
4292: /(.*)a\1/Is
4293: Capturing subpattern count = 1
4294: Max back reference = 1
4295: Options: dotall
4296: No first char
4297: Need char = 'a'
4298:
4299: /(.*)a(b)\2/Is
4300: Capturing subpattern count = 2
4301: Max back reference = 2
4302: Options: anchored dotall
4303: No first char
4304: Need char = 'b'
4305:
4306: /((.*)a|(.*)b)z/Is
4307: Capturing subpattern count = 3
4308: Options: anchored dotall
4309: No first char
4310: Need char = 'z'
4311:
4312: /((.*)a|(.*)b)z\1/Is
4313: Capturing subpattern count = 3
4314: Max back reference = 1
4315: Options: dotall
4316: No first char
4317: Need char = 'z'
4318:
4319: /((.*)a|(.*)b)z\2/Is
4320: Capturing subpattern count = 3
4321: Max back reference = 2
4322: Options: dotall
4323: No first char
4324: Need char = 'z'
4325:
4326: /((.*)a|(.*)b)z\3/Is
4327: Capturing subpattern count = 3
4328: Max back reference = 3
4329: Options: dotall
4330: No first char
4331: Need char = 'z'
4332:
4333: /((.*)a|^(.*)b)z\3/Is
4334: Capturing subpattern count = 3
4335: Max back reference = 3
4336: Options: anchored dotall
4337: No first char
4338: Need char = 'z'
4339:
4340: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
4341: Capturing subpattern count = 31
4342: Options: anchored dotall
4343: No first char
4344: No need char
4345:
4346: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
4347: Capturing subpattern count = 31
4348: Max back reference = 31
4349: Options: dotall
4350: No first char
4351: No need char
4352:
4353: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
4354: Capturing subpattern count = 32
4355: Max back reference = 32
4356: Options: dotall
4357: No first char
4358: No 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: ------------------------------------------------------------------
4372: Capturing subpattern count = 0
4373: Options: no_auto_capture
4374: First char = 'a'
4375: Need 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: ------------------------------------------------------------------
4391: Capturing subpattern count = 1
4392: Named capturing subpatterns:
4393: one 1
4394: Options: no_auto_capture
4395: First char = 'a'
4396: Need 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: ------------------------------------------------------------------
4413: Capturing subpattern count = 1
4414: Named capturing subpatterns:
4415: named 1
4416: Options: no_auto_capture
4417: First char = 'a'
4418: Need char = 'c'
4419:
4420: /(a+)*zz/I
4421: Capturing subpattern count = 1
4422: No options
4423: No first char
4424: Need char = 'z'
4425: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
4426: Minimum match() limit = 8
4427: Minimum match() recursion limit = 6
4428: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
4429: 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4430: aaaaaaaaaaaaaz\M
4431: Minimum match() limit = 32768
4432: Minimum match() recursion limit = 42
4433: No match
4434:
4435: /(aaa(?C1)bbb|ab)/I
4436: Capturing subpattern count = 1
4437: No options
4438: First char = 'a'
4439: Need 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
4453: Callout data = 1
4454: 0: ab
4455: 1: ab
4456: aaabbb\C*-1
4457: --->aaabbb
4458: 1 ^ ^ b
4459: Callout data = -1
4460: No match
4461:
4462: /ab(?P<one>cd)ef(?P<two>gh)/I
4463: Capturing subpattern count = 2
4464: Named capturing subpatterns:
4465: one 1
4466: two 2
4467: No options
4468: First char = 'a'
4469: Need 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
4487: no parentheses with name "three"
4488: 0: abcdefgh
4489: 1: cd
4490: 2: gh
4491: copy 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: ------------------------------------------------------------------
4503: Capturing subpattern count = 2
4504: Named capturing subpatterns:
4505: Tes 1
4506: Test 2
4507: No options
4508: No first char
4509: No 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: ------------------------------------------------------------------
4521: Capturing subpattern count = 2
4522: Named capturing subpatterns:
4523: Tes 2
4524: Test 1
4525: No options
4526: No first char
4527: No need char
4528:
4529: /(?P<Z>zz)(?P<A>aa)/I
4530: Capturing subpattern count = 2
4531: Named capturing subpatterns:
4532: A 2
4533: Z 1
4534: No options
4535: First char = 'z'
4536: Need 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
4549: Failed: two named subpatterns have the same name at offset 15
4550:
4551: /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
4552: Failed: two named subpatterns have the same name at offset 30
4553:
4554: "\[((?P<elem>\d+)(,(?P>elem))*)\]"I
4555: Capturing subpattern count = 3
4556: Named capturing subpatterns:
4557: elem 2
4558: No options
4559: First char = '['
4560: Need 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
4567: No match
4568: []
4569: No match
4570:
4571: "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
4572: Capturing subpattern count = 3
4573: Named capturing subpatterns:
4574: elem 2
4575: No options
4576: First char = '['
4577: Need 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: ------------------------------------------------------------------
4603: Capturing subpattern count = 2
4604: No options
4605: No first char
4606: No 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: ------------------------------------------------------------------
4625: Capturing subpattern count = 2
4626: No options
4627: No first char
4628: No 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: ------------------------------------------------------------------
4660: Capturing subpattern count = 2
4661: No options
4662: No first char
4663: No need char
4664:
4665: /[ab]{1}+/DZ
4666: ------------------------------------------------------------------
4667: Bra
4668: Once
4669: [ab]{1,1}
4670: Ket
4671: Ket
4672: End
4673: ------------------------------------------------------------------
4674: Capturing subpattern count = 0
4675: No options
4676: No first char
4677: No need char
4678:
4679: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
4680: Capturing subpattern count = 3
4681: Options: caseless
4682: No first char
4683: Need 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
4689: Capturing subpattern count = 3
4690: Options: caseless
4691: No first char
4692: Need char = 'g' (caseless)
4693: Subject length lower bound = 8
4694: No 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: ------------------------------------------------------------------
4708: Capturing subpattern count = 0
4709: No options
4710: No first char
4711: Need char = 'b'
4712: Subject length lower bound = 1
4713: No 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: ------------------------------------------------------------------
4729: Capturing subpattern count = 1
4730: No options
4731: No first char
4732: Need char = 'c'
4733: Subject length lower bound = 1
4734: No 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: ------------------------------------------------------------------
4747: Capturing subpattern count = 0
4748: No options
4749: First char = 'a'
4750: Need 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: ------------------------------------------------------------------
4769: Capturing subpattern count = 0
4770: Options:
4771: First char = 'a'
4772: Need 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
4789: No 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: ------------------------------------------------------------------
4802: Capturing subpattern count = 0
4803: Options:
4804: No first char
4805: Need 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: ------------------------------------------------------------------
4846: Capturing subpattern count = 0
4847: Options:
4848: First char = 'a'
4849: Need 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
4872: No 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: ------------------------------------------------------------------
4901: Capturing subpattern count = 1
4902: Options:
4903: No first char
4904: Need 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
4962: No match
4963:
4964: /(ab|cd){3,4}/IC
4965: Capturing subpattern count = 1
4966: Options:
4967: No first char
4968: No 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: ------------------------------------------------------------------
5057: Capturing subpattern count = 1
5058: Options:
5059: No first char
5060: No 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
5201: No 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: ------------------------------------------------------------------
5283: Capturing subpattern count = 1
5284: Options:
5285: No first char
5286: Need 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
5314: Capturing subpattern count = 0
5315: No options
5316: No first char
5317: No need char
5318: ab cd\>1
5319: 0: cd
5320:
5321: /\b.*/Is
5322: Capturing subpattern count = 0
5323: Options: dotall
5324: No first char
5325: No need char
5326: ab cd\>1
5327: 0: cd
5328:
5329: /(?!.bcd).*/I
5330: Capturing subpattern count = 0
5331: No options
5332: No first char
5333: No need char
5334: Xbcd12345
5335: 0: bcd12345
5336:
5337: /abcde/I
5338: Capturing subpattern count = 0
5339: No options
5340: First char = 'a'
5341: Need char = 'e'
5342: ab\P
5343: Partial match: ab
5344: abc\P
5345: Partial match: abc
5346: abcd\P
5347: Partial match: abcd
5348: abcde\P
5349: 0: abcde
5350: the quick brown abc\P
5351: Partial match: abc
5352: ** Failers\P
5353: No match
5354: the quick brown abxyz fox\P
5355: No match
5356:
5357: "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
5358: Capturing subpattern count = 3
5359: Options: anchored
5360: No first char
5361: Need 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
5376: Partial match: 1
5377: 1/2\P
5378: Partial match: 1/2
5379: 1/2/0\P
5380: Partial match: 1/2/0
5381: 1/2/04\P
5382: 0: 1/2/04
5383: 1: 1
5384: 2: 2
5385: 0\P
5386: Partial match: 0
5387: 02/\P
5388: Partial match: 02/
5389: 02/0\P
5390: Partial match: 02/0
5391: 02/1\P
5392: Partial match: 02/1
5393: ** Failers\P
5394: No match
5395: \P
5396: No match
5397: 123\P
5398: No match
5399: 33/4/04\P
5400: No match
5401: 3/13/04\P
5402: No match
5403: 0/1/2003\P
5404: No match
5405: 0/\P
5406: No match
5407: 02/0/\P
5408: No match
5409: 02/13\P
5410: No match
5411:
5412: /0{0,2}ABC/I
5413: Capturing subpattern count = 0
5414: No options
5415: No first char
5416: Need char = 'C'
5417:
5418: /\d{3,}ABC/I
5419: Capturing subpattern count = 0
5420: No options
5421: No first char
5422: Need char = 'C'
5423:
5424: /\d*ABC/I
5425: Capturing subpattern count = 0
5426: No options
5427: No first char
5428: Need char = 'C'
5429:
5430: /[abc]+DE/I
5431: Capturing subpattern count = 0
5432: No options
5433: No first char
5434: Need char = 'E'
5435:
5436: /[abc]?123/I
5437: Capturing subpattern count = 0
5438: No options
5439: No first char
5440: Need char = '3'
5441: 123\P
5442: 0: 123
5443: a\P
5444: Partial match: a
5445: b\P
5446: Partial match: b
5447: c\P
5448: Partial match: c
5449: c12\P
5450: Partial match: c12
5451: c123\P
5452: 0: c123
5453:
5454: /^(?:\d){3,5}X/I
5455: Capturing subpattern count = 0
5456: Options: anchored
5457: No first char
5458: Need char = 'X'
5459: 1\P
5460: Partial match: 1
5461: 123\P
5462: Partial match: 123
5463: 123X
5464: 0: 123X
5465: 1234\P
5466: Partial match: 1234
5467: 1234X
5468: 0: 1234X
5469: 12345\P
5470: Partial match: 12345
5471: 12345X
5472: 0: 12345X
5473: *** Failers
5474: No match
5475: 1X
5476: No match
5477: 123456\P
5478: No match
5479:
5480: /abc/I>testsavedregex
5481: Capturing subpattern count = 0
5482: No options
5483: First char = 'a'
5484: Need char = 'c'
5485: Compiled regex written to testsavedregex
5486: <testsavedregex
5487: Compiled regex loaded from testsavedregex
5488: No study data
5489: abc
5490: 0: abc
5491: ** Failers
5492: No match
5493: bca
5494: No match
5495:
5496: /abc/IF>testsavedregex
5497: Capturing subpattern count = 0
5498: No options
5499: First char = 'a'
5500: Need char = 'c'
5501: Compiled regex written to testsavedregex
5502: <testsavedregex
5503: Compiled regex (byte-inverted) loaded from testsavedregex
5504: No study data
5505: abc
5506: 0: abc
5507: ** Failers
5508: No match
5509: bca
5510: No match
5511:
5512: /(a|b)/IS>testsavedregex
5513: Capturing subpattern count = 1
5514: No options
5515: No first char
5516: No need char
5517: Subject length lower bound = 1
5518: Starting byte set: a b
5519: Compiled regex written to testsavedregex
5520: Study data written to testsavedregex
5521: <testsavedregex
5522: Compiled regex loaded from testsavedregex
5523: Study data loaded from testsavedregex
5524: abc
5525: 0: a
5526: 1: a
5527: ** Failers
5528: 0: a
5529: 1: a
5530: def
5531: No match
5532:
5533: /(a|b)/ISF>testsavedregex
5534: Capturing subpattern count = 1
5535: No options
5536: No first char
5537: No need char
5538: Subject length lower bound = 1
5539: Starting byte set: a b
5540: Compiled regex written to testsavedregex
5541: Study data written to testsavedregex
5542: <testsavedregex
5543: Compiled regex (byte-inverted) loaded from testsavedregex
5544: Study data loaded from testsavedregex
5545: abc
5546: 0: a
5547: 1: a
5548: ** Failers
5549: 0: a
5550: 1: a
5551: def
5552: No match
5553:
5554: ~<(\w+)/?>(.)*</(\1)>~smgI
5555: Capturing subpattern count = 3
5556: Max back reference = 1
5557: Options: multiline dotall
5558: First char = '<'
5559: Need 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
5567: Capturing subpattern count = 0
5568: Options: anchored
5569: No first char
5570: No need char
5571:
5572: /line\nbreak/I
5573: Capturing subpattern count = 0
5574: Contains explicit CR or LF match
5575: No options
5576: First char = 'l'
5577: Need 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
5584: Capturing subpattern count = 0
5585: Contains explicit CR or LF match
5586: Options: firstline
5587: First char = 'l'
5588: Need char = 'k'
5589: this is a line\nbreak
5590: 0: line\x0abreak
5591: ** Failers
5592: No match
5593: line one\nthis is a line\nbreak in the second line
5594: No match
5595:
5596: /line\nbreak/Imf
5597: Capturing subpattern count = 0
5598: Contains explicit CR or LF match
5599: Options: multiline firstline
5600: First char = 'l'
5601: Need char = 'k'
5602: this is a line\nbreak
5603: 0: line\x0abreak
5604: ** Failers
5605: No match
5606: line one\nthis is a line\nbreak in the second line
5607: No match
5608:
5609: /ab.cd/P
5610: ab-cd
5611: 0: ab-cd
5612: ab=cd
5613: 0: ab=cd
5614: ** Failers
5615: No match: POSIX code 17: match failed
5616: ab\ncd
5617: No 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
5628: Capturing subpattern count = 0
5629: No options
5630: First char = 'A'
5631: Need char = 'd'
5632: AbCd
5633: 0: AbCd
5634: ** Failers
5635: No match
5636: abcd
5637: No match
5638:
5639: /a{11111111111111111111}/I
5640: Failed: number too big in {} quantifier at offset 22
5641:
5642: /(){64294967295}/I
5643: Failed: number too big in {} quantifier at offset 14
5644:
5645: /(){2,4294967295}/I
5646: Failed: 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
5649: Capturing subpattern count = 1
5650: Max back reference = 1
5651: No options
5652: First char = 'a' (caseless)
5653: Need 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
5659: Capturing subpattern count = 12
5660: Max back reference = 11
5661: Named 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
5674: No options
5675: First char = 'a'
5676: Need 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
5688: 10: j
5689: 11: k
5690: 12: l
5691:
5692: "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
5693: Capturing subpattern count = 12
5694: Max back reference = 11
5695: No options
5696: First char = 'a'
5697: Need 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
5709: 10: j
5710: 11: k
5711: 12: 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
5714: Capturing subpattern count = 101
5715: Named 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
5817: No options
5818: First char = 'a'
5819: Need char = 'a'
5820: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5821: Matched, 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
5832: 10: a
5833: 11: a
5834: 12: a
5835: 13: a
5836: 14: 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
5839: Capturing subpattern count = 101
5840: No options
5841: First char = 'a'
5842: Need char = 'a'
5843: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5844: Matched, 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
5855: 10: a
5856: 11: a
5857: 12: a
5858: 13: a
5859: 14: a
5860:
5861: /[^()]*(?:\((?R)\)[^()]*)*/I
5862: Capturing subpattern count = 0
5863: No options
5864: No first char
5865: No 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
5874: Capturing subpattern count = 0
5875: No options
5876: No first char
5877: No need char
5878: (this(and)that
5879: 0:
5880: (this(and)that)
5881: 0: (this(and)that)
5882:
5883: /[^()]*(?:\((?R)\))*[^()]*/I
5884: Capturing subpattern count = 0
5885: No options
5886: No first char
5887: No need char
5888: (this(and)that
5889: 0:
5890: (this(and)that)
5891: 0: (this(and)that)
5892:
5893: /(?:\((?R)\))*[^()]*/I
5894: Capturing subpattern count = 0
5895: No options
5896: No first char
5897: No need char
5898: (this(and)that
5899: 0:
5900: (this(and)that)
5901: 0:
5902: ((this))
5903: 0: ((this))
5904:
5905: /(?:\((?R)\))|[^()]*/I
5906: Capturing subpattern count = 0
5907: No options
5908: No first char
5909: No 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
5921: Matched with REG_NOSUB
5922:
5923: /a(?P<name>b)c/PN
5924: abc
5925: Matched with REG_NOSUB
5926:
5927: /\x{100}/I
5928: Failed: character value in \x{...} sequence is too large at offset 6
5929:
5930: /\x{0000ff}/I
5931: Capturing subpattern count = 0
5932: No options
5933: First char = 255
5934: No need char
5935:
5936: /^((?P<A>a1)|(?P<A>a2)b)/I
5937: Failed: two named subpatterns have the same name at offset 17
5938:
5939: /^((?P<A>a1)|(?P<A>a2)b)/IJ
5940: Capturing subpattern count = 3
5941: Named capturing subpatterns:
5942: A 2
5943: A 3
5944: Options: anchored dupnames
5945: No first char
5946: No 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
5959: No match
5960: a1b\CZ\CA
5961: no parentheses with name "Z"
5962: 0: a1
5963: 1: a1
5964: 2: a1
5965: copy substring Z failed -7
5966: C a1 (2) A
5967:
5968: /^(?P<A>a)(?P<A>b)/IJ
5969: Capturing subpattern count = 2
5970: Named capturing subpatterns:
5971: A 1
5972: A 2
5973: Options: anchored dupnames
5974: No first char
5975: No 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
5983: Capturing subpattern count = 2
5984: Named capturing subpatterns:
5985: A 1
5986: A 2
5987: Options: dupnames
5988: No first char
5989: No 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
5997: copy substring A failed -7
5998:
5999: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
6000: Capturing subpattern count = 4
6001: Named capturing subpatterns:
6002: A 1
6003: A 2
6004: A 3
6005: A 4
6006: Options: dupnames
6007: No first char
6008: No 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
6018: Capturing subpattern count = 3
6019: Named capturing subpatterns:
6020: A 2
6021: A 3
6022: Options: anchored dupnames
6023: No first char
6024: No 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
6037: No match
6038: a1b\GZ\GA
6039: no parentheses with name "Z"
6040: 0: a1
6041: 1: a1
6042: 2: a1
6043: copy substring Z failed -7
6044: G a1 (2) A
6045:
6046: /^(?P<A>a)(?P<A>b)/IJ
6047: Capturing subpattern count = 2
6048: Named capturing subpatterns:
6049: A 1
6050: A 2
6051: Options: anchored dupnames
6052: No first char
6053: No 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
6061: Capturing subpattern count = 2
6062: Named capturing subpatterns:
6063: A 1
6064: A 2
6065: Options: dupnames
6066: No first char
6067: No 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
6075: copy substring A failed -7
6076:
6077: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
6078: Capturing subpattern count = 4
6079: Named capturing subpatterns:
6080: A 1
6081: A 2
6082: A 3
6083: A 4
6084: Options: dupnames
6085: No first char
6086: No 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
6096: Capturing subpattern count = 3
6097: Named capturing subpatterns:
6098: A 2
6099: A 3
6100: Options: anchored dupnames
6101: Duplicate name status changes
6102: No first char
6103: No 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
6117: Failed: 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
6120: set in the pattern's options; consequently pcre_get_named_substring() produces
6121: a random value. /Ix
6122: Capturing subpattern count = 1
6123: Options: extended
6124: First char = 'I'
6125: Need char = 'e'
6126:
6127: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I
6128: Capturing subpattern count = 4
6129: Named capturing subpatterns:
6130: A 1
6131: B 2
6132: B 3
6133: C 4
6134: Options: anchored
6135: Duplicate name status changes
6136: No first char
6137: No 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
6149: Capturing subpattern count = 1
6150: Named capturing subpatterns:
6151: A 1
6152: Options: anchored
6153: No first char
6154: No need char
6155: aabc
6156: 0: aa
6157: 1: a
6158: bc
6159: 0: b
6160: ** Failers
6161: No match
6162: abc
6163: No match
6164:
6165: /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I
6166: Capturing subpattern count = 1
6167: Named capturing subpatterns:
6168: ZZ 1
6169: No options
6170: No first char
6171: Need char = 'X'
6172: bXaX
6173: 0: bXaX
6174: 1: X
6175:
6176: /(?:(?(2y)a|b)(X))+/I
6177: Failed: reference to non-existent subpattern at offset 9
6178:
6179: /(?:(?(ZA)a|b)(?P<ZZ>X))+/I
6180: Failed: reference to non-existent subpattern at offset 9
6181:
6182: /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I
6183: Capturing subpattern count = 1
6184: Named capturing subpatterns:
6185: ZZ 1
6186: No options
6187: No first char
6188: Need char = 'X'
6189: bbXaaX
6190: 0: bbXaaX
6191: 1: X
6192:
6193: /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I
6194: Capturing subpattern count = 1
6195: Named capturing subpatterns:
6196: ZZ 1
6197: No options
6198: No first char
6199: Need char = 'X'
6200: (b)\\Xa\\X
6201: 0: (b)\Xa\X
6202: 1: X
6203:
6204: /(?P<ABC/I
6205: Failed: syntax error in subpattern name (missing terminator) at offset 7
6206:
6207: /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
6208: Capturing subpattern count = 1
6209: Max back reference = 1
6210: Named capturing subpatterns:
6211: A 1
6212: No options
6213: No first char
6214: No 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
6223: Capturing subpattern count = 10
6224: Max back reference = 10
6225: Named capturing subpatterns:
6226: A 10
6227: No options
6228: No first char
6229: No 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:
6241: 10: Y
6242:
6243: /\777/I
6244: Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3
6245:
6246: /\s*,\s*/IS
6247: Capturing subpattern count = 0
6248: No options
6249: No first char
6250: Need char = ','
6251: Subject length lower bound = 1
6252: Starting byte set: \x09 \x0a \x0c \x0d \x20 ,
6253: \x0b,\x0b
6254: 0: ,
6255: \x0c,\x0d
6256: 0: \x0c,\x0d
6257:
6258: /^abc/Im
6259: Capturing subpattern count = 0
6260: Options: multiline
6261: First char at start or follows newline
6262: Need 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
6274: No match
6275: xyz\nabc\<cr>
6276: No match
6277: xyz\r\nabc\<cr>
6278: No match
6279: xyz\nabc\<crlf>
6280: No match
6281: xyz\rabc\<crlf>
6282: No match
6283: xyz\rabc\<lf>
6284: No match
6285:
6286: /abc$/Im<lf>
6287: Capturing subpattern count = 0
6288: Options: multiline
6289: Forced newline sequence: LF
6290: First char = 'a'
6291: Need 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
6307: No match
6308: xyzabc\r
6309: No match
6310: xyzabc\rpqr
6311: No match
6312: xyzabc\r\n
6313: No match
6314: xyzabc\r\npqr
6315: No match
6316:
6317: /^abc/Im<cr>
6318: Capturing subpattern count = 0
6319: Options: multiline
6320: Forced newline sequence: CR
6321: First char at start or follows newline
6322: Need char = 'c'
6323: xyz\rabcdef
6324: 0: abc
6325: xyz\nabcdef\<lf>
6326: 0: abc
6327: ** Failers
6328: No match
6329: xyz\nabcdef
6330: No match
6331:
6332: /^abc/Im<lf>
6333: Capturing subpattern count = 0
6334: Options: multiline
6335: Forced newline sequence: LF
6336: First char at start or follows newline
6337: Need char = 'c'
6338: xyz\nabcdef
6339: 0: abc
6340: xyz\rabcdef\<cr>
6341: 0: abc
6342: ** Failers
6343: No match
6344: xyz\rabcdef
6345: No match
6346:
6347: /^abc/Im<crlf>
6348: Capturing subpattern count = 0
6349: Options: multiline
6350: Forced newline sequence: CRLF
6351: First char at start or follows newline
6352: Need char = 'c'
6353: xyz\r\nabcdef
6354: 0: abc
6355: xyz\rabcdef\<cr>
6356: 0: abc
6357: ** Failers
6358: No match
6359: xyz\rabcdef
6360: No match
6361:
6362: /^abc/Im<bad>
6363: Unknown newline type at: <bad>
6364:
6365:
6366: /abc/I
6367: Capturing subpattern count = 0
6368: No options
6369: First char = 'a'
6370: Need char = 'c'
6371: xyz\rabc\<bad>
6372: Unknown newline type at: <bad>
6373: abc
6374: 0: abc
6375:
6376: /.*/I<lf>
6377: Capturing subpattern count = 0
6378: Options:
6379: Forced newline sequence: LF
6380: First char at start or follows newline
6381: No 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
6402: Capturing subpattern count = 2
6403: Options: dotall
6404: No first char
6405: Need 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
6418: Capturing subpattern count = 1
6419: No options
6420: No first char
6421: No need char
6422: /* this is a C style comment */\M
6423: Minimum match() limit = 120
6424: Minimum 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
6429: Capturing subpattern count = 1
6430: Named capturing subpatterns:
6431: B 1
6432: No options
6433: No first char
6434: Need char = '.'
6435:
6436: /()()()()()()()()()()()()()()()()()()()()
6437: ()()()()()()()()()()()()()()()()()()()()
6438: ()()()()()()()()()()()()()()()()()()()()
6439: ()()()()()()()()()()()()()()()()()()()()
6440: ()()()()()()()()()()()()()()()()()()()()
6441: (.(.))/Ix
6442: Capturing subpattern count = 102
6443: Options: extended
6444: No first char
6445: No 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:
6457: 10:
6458: 11:
6459: 12:
6460: 13:
6461: 14:
6462: 15:
6463: 16:
6464: 17:
6465: 18:
6466: 19:
6467: 20:
6468: 21:
6469: 22:
6470: 23:
6471: 24:
6472: 25:
6473: 26:
6474: 27:
6475: 28:
6476: 29:
6477: 30:
6478: 31:
6479: 32:
6480: 33:
6481: 34:
6482: 35:
6483: 36:
6484: 37:
6485: 38:
6486: 39:
6487: 40:
6488: 41:
6489: 42:
6490: 43:
6491: 44:
6492: 45:
6493: 46:
6494: 47:
6495: 48:
6496: 49:
6497: 50:
6498: 51:
6499: 52:
6500: 53:
6501: 54:
6502: 55:
6503: 56:
6504: 57:
6505: 58:
6506: 59:
6507: 60:
6508: 61:
6509: 62:
6510: 63:
6511: 64:
6512: 65:
6513: 66:
6514: 67:
6515: 68:
6516: 69:
6517: 70:
6518: 71:
6519: 72:
6520: 73:
6521: 74:
6522: 75:
6523: 76:
6524: 77:
6525: 78:
6526: 79:
6527: 80:
6528: 81:
6529: 82:
6530: 83:
6531: 84:
6532: 85:
6533: 86:
6534: 87:
6535: 88:
6536: 89:
6537: 90:
6538: 91:
6539: 92:
6540: 93:
6541: 94:
6542: 95:
6543: 96:
6544: 97:
6545: 98:
6546: 99:
6547: 100:
6548: 101: XY
6549: 102: Y
6550:
6551: /(a*b|(?i:c*(?-i)d))/IS
6552: Capturing subpattern count = 1
6553: No options
6554: No first char
6555: No need char
6556: Subject length lower bound = 1
6557: Starting byte set: C a b c d
6558:
6559: /()[ab]xyz/IS
6560: Capturing subpattern count = 1
6561: No options
6562: No first char
6563: Need char = 'z'
6564: Subject length lower bound = 4
6565: Starting byte set: a b
6566:
6567: /(|)[ab]xyz/IS
6568: Capturing subpattern count = 1
6569: No options
6570: No first char
6571: Need char = 'z'
6572: Subject length lower bound = 4
6573: Starting byte set: a b
6574:
6575: /(|c)[ab]xyz/IS
6576: Capturing subpattern count = 1
6577: No options
6578: No first char
6579: Need char = 'z'
6580: Subject length lower bound = 4
6581: Starting byte set: a b c
6582:
6583: /(|c?)[ab]xyz/IS
6584: Capturing subpattern count = 1
6585: No options
6586: No first char
6587: Need char = 'z'
6588: Subject length lower bound = 4
6589: Starting byte set: a b c
6590:
6591: /(d?|c?)[ab]xyz/IS
6592: Capturing subpattern count = 1
6593: No options
6594: No first char
6595: Need char = 'z'
6596: Subject length lower bound = 4
6597: Starting byte set: a b c d
6598:
6599: /(d?|c)[ab]xyz/IS
6600: Capturing subpattern count = 1
6601: No options
6602: No first char
6603: Need char = 'z'
6604: Subject length lower bound = 4
6605: Starting 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: ------------------------------------------------------------------
6617: Capturing subpattern count = 0
6618: Options: anchored
6619: No first char
6620: Need char = 'b'
6621:
6622: /^a*+b\d/DZ
6623: ------------------------------------------------------------------
6624: Bra
6625: ^
6626: a*+
6627: b
6628: \d
6629: Ket
6630: End
6631: ------------------------------------------------------------------
6632: Capturing subpattern count = 0
6633: Options: anchored
6634: No first char
6635: Need char = 'b'
6636:
6637: /^a*?b\d/DZ
6638: ------------------------------------------------------------------
6639: Bra
6640: ^
6641: a*+
6642: b
6643: \d
6644: Ket
6645: End
6646: ------------------------------------------------------------------
6647: Capturing subpattern count = 0
6648: Options: anchored
6649: No first char
6650: Need char = 'b'
6651:
6652: /^a+A\d/DZ
6653: ------------------------------------------------------------------
6654: Bra
6655: ^
6656: a++
6657: A
6658: \d
6659: Ket
6660: End
6661: ------------------------------------------------------------------
6662: Capturing subpattern count = 0
6663: Options: anchored
6664: No first char
6665: Need char = 'A'
6666: aaaA5
6667: 0: aaaA5
6668: ** Failers
6669: No match
6670: aaaa5
6671: No match
6672:
6673: /^a*A\d/IiDZ
6674: ------------------------------------------------------------------
6675: Bra
6676: ^
6677: a*
6678: NC A
6679: \d
6680: Ket
6681: End
6682: ------------------------------------------------------------------
6683: Capturing subpattern count = 0
6684: Options: anchored caseless
6685: No first char
6686: Need char = 'A' (caseless)
6687: aaaA5
6688: 0: aaaA5
6689: aaaa5
6690: 0: aaaa5
6691:
6692: /(a*|b*)[cd]/IS
6693: Capturing subpattern count = 1
6694: No options
6695: No first char
6696: No need char
6697: Subject length lower bound = 1
6698: Starting byte set: a b c d
6699:
6700: /(a+|b*)[cd]/IS
6701: Capturing subpattern count = 1
6702: No options
6703: No first char
6704: No need char
6705: Subject length lower bound = 1
6706: Starting byte set: a b c d
6707:
6708: /(a*|b+)[cd]/IS
6709: Capturing subpattern count = 1
6710: No options
6711: No first char
6712: No need char
6713: Subject length lower bound = 1
6714: Starting byte set: a b c d
6715:
6716: /(a+|b+)[cd]/IS
6717: Capturing subpattern count = 1
6718: No options
6719: No first char
6720: No need char
6721: Subject length lower bound = 2
6722: Starting byte set: a b
6723:
6724: /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
6725: ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
6726: (((
6727: a
6728: ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
6729: ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
6730: )))
6731: /Ix
6732: Capturing subpattern count = 203
6733: Options: extended
6734: First char = 'a'
6735: No need char
6736: large nest
6737: Matched, 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
6748: 10: a
6749: 11: a
6750: 12: a
6751: 13: a
6752: 14: 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
7349: Capturing subpattern count = 2
7350: Named capturing subpatterns:
7351: abc 1
7352: xyz 2
7353: No options
7354: First char = 'x'
7355: Need 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
7364: Capturing subpattern count = 2
7365: Named capturing subpatterns:
7366: abc 1
7367: xyz 2
7368: No options
7369: First char = 'x'
7370: Need 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
7379: Failed: syntax error in subpattern name (missing terminator) at offset 6
7380:
7381: /(?<abc>x)(?'xyz>y)/I
7382: Failed: syntax error in subpattern name (missing terminator) at offset 15
7383:
7384: /(?P'abc'x)(?P<xyz>y)/I
7385: Failed: 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
7395: No match
7396: aXaX
7397: No match
7398: aXbX
7399: No match
7400:
7401: /^(?P>abc)(?<abcd>xxx)/
7402: Failed: 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
7442: No match
7443: axby
7444: No 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
7463: No match
7464: x
7465: No 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
7586: Capturing subpattern count = 4
7587: Max back reference = 4
7588: Named capturing subpatterns:
7589: four 4
7590: one 1
7591: three 3
7592: two 2
7593: Options: anchored caseless
7594: No first char
7595: No 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
7619: No match
7620: The quick brown fox
7621: No match
7622:
7623: /(?=(\w+))\1:/I
7624: Capturing subpattern count = 1
7625: Max back reference = 1
7626: No options
7627: No first char
7628: Need char = ':'
7629: abcd:
7630: 0: abcd:
7631: 1: abcd
7632:
7633: /(?=(?'abc'\w+))\k<abc>:/I
7634: Capturing subpattern count = 1
7635: Max back reference = 1
7636: Named capturing subpatterns:
7637: abc 1
7638: No options
7639: No first char
7640: Need 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
7651: No match
7652: addd
7653: No match
7654: adbb
7655: No 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
7667: No match
7668: bddd
7669: No match
7670:
7671: /(?(<bc))/
7672: Failed: malformed number or name after (?( at offset 6
7673:
7674: /(?(''))/
7675: Failed: assertion expected after (?( at offset 4
7676:
7677: /(?('R')stuff)/
7678: Failed: 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
7693: Failed: 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
7702: Failed: DEFINE group contains more than one branch at offset 22
7703:
7704: /(?(DEFINE) abc) xyz/xI
7705: Capturing subpattern count = 0
7706: Options: extended
7707: First char = 'x'
7708: Need char = 'z'
7709:
7710: /(?(DEFINE) abc){3} xyz/x
7711: Failed: repeating a DEFINE group is not allowed at offset 17
7712:
7713: /(a|)*\d/
7714: \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7715: No match
7716: \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
7717: Matched, 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
7727: No match
7728: a\nb
7729: No match
7730: a\nb\<any>
7731: No match
7732: a\rb\<cr>
7733: No match
7734: a\rb\<any>
7735: No match
7736: a\x85b\<any>
7737: No match
7738: a\rb\<anycrlf>
7739: No 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>
7764: Failed: 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
7780: No match
7781: a\n\rb
7782: No 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
7822: No match
7823: ab
7824: No 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
7842: No match
7843: a\n\n\n\rb
7844: No match
7845: a\r
7846: No match
7847:
7848: /^a[\R]b/<bsr_unicode>
7849: aRb
7850: 0: aRb
7851: ** Failers
7852: No match
7853: a\nb
7854: No match
7855:
7856: /(?&abc)X(?<abc>P)/I
7857: Capturing subpattern count = 1
7858: Named capturing subpatterns:
7859: abc 1
7860: No options
7861: No first char
7862: Need char = 'P'
7863: abcPXP123
7864: 0: PXP
7865: 1: P
7866:
7867: /(?1)X(?<abc>P)/I
7868: Capturing subpattern count = 1
7869: Named capturing subpatterns:
7870: abc 1
7871: No options
7872: No first char
7873: Need 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
7906: No match
7907:
7908: /(abc)(?:(?i)(?1))/
7909: defabcabcxyz
7910: 0: abcabc
7911: 1: abc
7912: DEFabcABCXYZ
7913: No match
7914:
7915: /^(a)\g-2/
7916: Failed: reference to non-existent subpattern at offset 7
7917:
7918: /^(a)\g/
7919: Failed: a numbered reference must not be zero at offset 5
7920:
7921: /^(a)\g{0}/
7922: Failed: a numbered reference must not be zero at offset 8
7923:
7924: /^(a)\g{3/
7925: Failed: \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}/
7928: Failed: reference to non-existent subpattern at offset 9
7929:
7930: /^a.b/<lf>
7931: a\rb
7932: 0: a\x0db
7933: *** Failers
7934: No match
7935: a\nb
7936: No match
7937:
7938: /.+foo/
7939: afoo
7940: 0: afoo
7941: ** Failers
7942: No match
7943: \r\nfoo
7944: No match
7945: \nfoo
7946: No match
7947:
7948: /.+foo/<crlf>
7949: afoo
7950: 0: afoo
7951: \nfoo
7952: 0: \x0afoo
7953: ** Failers
7954: No match
7955: \r\nfoo
7956: No match
7957:
7958: /.+foo/<any>
7959: afoo
7960: 0: afoo
7961: ** Failers
7962: No match
7963: \nfoo
7964: No match
7965: \r\nfoo
7966: No 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
7982: No match
7983: abc\r\nxyz
7984: No 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
8018: No match
8019: XABC\B
8020: No 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
8057: No match
8058: xyabc
8059: No match
8060:
8061: /x(?-0)y/
8062: Failed: a numbered reference must not be zero at offset 5
8063:
8064: /x(?-1)y/
8065: Failed: reference to non-existent subpattern at offset 5
8066:
8067: /x(?+0)y/
8068: Failed: a numbered reference must not be zero at offset 5
8069:
8070: /x(?+1)y/
8071: Failed: 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
8096: No match
8097: abcY
8098: No 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
8127: No match
8128: XabcXabc
8129: No match
8130:
8131: /(?(-1)a)/BZ
8132: Failed: 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
8148: Failed: 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
8178: No match
8179: tom-bon
8180: No match
8181:
8182: /\g{A/
8183: Failed: 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
8345: No match
8346: XXXX
8347: No 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/
8531: Failed: missing terminating ] for character class at offset 7
8532:
8533: /[\Q\E]AAA/
8534: Failed: missing terminating ] for character class at offset 9
8535:
8536: /[^\E]AAA/
8537: Failed: missing terminating ] for character class at offset 8
8538:
8539: /[^\Q\E]AAA/
8540: Failed: missing terminating ] for character class at offset 10
8541:
8542: /[\E^]AAA/
8543: Failed: missing terminating ] for character class at offset 8
8544:
8545: /[\Q\E^]AAA/
8546: Failed: 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)
8583: No 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+
8615: No 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)
8641: No 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)
8653: No 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)
8672: No 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)
8698: No match
8699:
8700: /a(*MARK)b/
8701: Failed: (*MARK) must have an argument at offset 7
8702:
8703: /(?i:A{1,}\6666666666)/
8704: Failed: number is too big at offset 19
8705:
8706: /\g6666666666/
8707: Failed: number is too big at offset 11
8708:
8709: /[\g6666666666]/
8710: Failed: number is too big at offset 12
8711:
8712: /(?1)\c[/
8713: Failed: reference to non-existent subpattern at offset 3
8714:
8715: /.+A/<crlf>
8716: \r\nA
8717: No 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/
8733: Failed: (*VERB) not recognized at offset 5
8734:
8735: /(*CR)a.b/
8736: a\nb
8737: 0: a\x0ab
8738: ** Failers
8739: No match
8740: a\rb
8741: No match
8742:
8743: /(*CR)a.b/<lf>
8744: a\nb
8745: 0: a\x0ab
8746: ** Failers
8747: No match
8748: a\rb
8749: No match
8750:
8751: /(*LF)a.b/<CRLF>
8752: a\rb
8753: 0: a\x0db
8754: ** Failers
8755: No match
8756: a\nb
8757: No match
8758:
8759: /(*CRLF)a.b/
8760: a\rb
8761: 0: a\x0db
8762: a\nb
8763: 0: a\x0ab
8764: ** Failers
8765: No match
8766: a\r\nb
8767: No match
8768:
8769: /(*ANYCRLF)a.b/<CR>
8770: ** Failers
8771: No match
8772: a\rb
8773: No match
8774: a\nb
8775: No match
8776: a\r\nb
8777: No match
8778:
8779: /(*ANY)a.b/<cr>
8780: ** Failers
8781: No match
8782: a\rb
8783: No match
8784: a\nb
8785: No match
8786: a\r\nb
8787: No match
8788: a\x85b
8789: No 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>
8813: Capturing subpattern count = 0
8814: Options: bsr_anycrlf
8815: First char = 'a'
8816: Need 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
8824: No match
8825: a\x85b
8826: No match
8827: a\x0bb
8828: No match
8829:
8830: /a\Rb/I<bsr_unicode>
8831: Capturing subpattern count = 0
8832: Options: bsr_unicode
8833: First char = 'a'
8834: Need 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
8846: No match
8847: a\x85b\<bsr_anycrlf>
8848: No match
8849: a\x0bb\<bsr_anycrlf>
8850: No match
8851:
8852: /a\R?b/I<bsr_anycrlf>
8853: Capturing subpattern count = 0
8854: Options: bsr_anycrlf
8855: First char = 'a'
8856: Need 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
8864: No match
8865: a\x85b
8866: No match
8867: a\x0bb
8868: No match
8869:
8870: /a\R?b/I<bsr_unicode>
8871: Capturing subpattern count = 0
8872: Options: bsr_unicode
8873: First char = 'a'
8874: Need 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
8886: No match
8887: a\x85b\<bsr_anycrlf>
8888: No match
8889: a\x0bb\<bsr_anycrlf>
8890: No match
8891:
8892: /a\R{2,4}b/I<bsr_anycrlf>
8893: Capturing subpattern count = 0
8894: Options: bsr_anycrlf
8895: First char = 'a'
8896: Need 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
8904: No match
8905: a\x85\85b
8906: No match
8907: a\x0b\0bb
8908: No match
8909:
8910: /a\R{2,4}b/I<bsr_unicode>
8911: Capturing subpattern count = 0
8912: Options: bsr_unicode
8913: First char = 'a'
8914: Need 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
8922: No match
8923: a\x0b\0bb
8924: No match
8925: ** Failers
8926: No match
8927: a\r\r\r\r\rb
8928: No match
8929: a\x85\85b\<bsr_anycrlf>
8930: No match
8931: a\x0b\0bb\<bsr_anycrlf>
8932: No match
8933:
8934: /(*BSR_ANYCRLF)a\Rb/I
8935: Capturing subpattern count = 0
8936: Options: bsr_anycrlf
8937: First char = 'a'
8938: Need char = 'b'
8939: a\nb
8940: 0: a\x0ab
8941: a\rb
8942: 0: a\x0db
8943:
8944: /(*BSR_UNICODE)a\Rb/I
8945: Capturing subpattern count = 0
8946: Options: bsr_unicode
8947: First char = 'a'
8948: Need char = 'b'
8949: a\x85b
8950: 0: a\x85b
8951:
8952: /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
8953: Capturing subpattern count = 0
8954: Options: bsr_anycrlf
8955: Forced newline sequence: CRLF
8956: First char = 'a'
8957: Need char = 'b'
8958: a\nb
8959: 0: a\x0ab
8960: a\rb
8961: 0: a\x0db
8962:
8963: /(*CRLF)(*BSR_UNICODE)a\Rb/I
8964: Capturing subpattern count = 0
8965: Options: bsr_unicode
8966: Forced newline sequence: CRLF
8967: First char = 'a'
8968: Need char = 'b'
8969: a\x85b
8970: 0: a\x85b
8971:
8972: /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
8973: Capturing subpattern count = 0
8974: Options: bsr_anycrlf
8975: Forced newline sequence: CR
8976: First char = 'a'
8977: Need char = 'b'
8978:
8979: /(?<a>)(?&)/
8980: Failed: subpattern name expected at offset 9
8981:
8982: /(?<abc>)(?&a)/
8983: Failed: reference to non-existent subpattern at offset 12
8984:
8985: /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
8986: Failed: reference to non-existent subpattern at offset 32
8987:
8988: /(?+-a)/
8989: Failed: digit expected after (?+ at offset 3
8990:
8991: /(?-+a)/
8992: Failed: unrecognized character after (? or (?- at offset 3
8993:
8994: /(?(-1))/
8995: Failed: reference to non-existent subpattern at offset 6
8996:
8997: /(?(+10))/
8998: Failed: reference to non-existent subpattern at offset 7
8999:
9000: /(?(10))/
9001: Failed: reference to non-existent subpattern at offset 6
9002:
9003: /(?(+2))()()/
9004:
9005: /(?(2))()()/
9006:
9007: /\k''/
9008: Failed: subpattern name expected at offset 3
9009:
9010: /\k<>/
9011: Failed: subpattern name expected at offset 3
9012:
9013: /\k{}/
9014: Failed: subpattern name expected at offset 3
9015:
9016: /(?P=)/
9017: Failed: subpattern name expected at offset 4
9018:
9019: /(?P>)/
9020: Failed: subpattern name expected at offset 4
9021:
9022: /(?!\w)(?R)/
9023: Failed: recursive call could loop indefinitely at offset 9
9024:
9025: /(?=\w)(?R)/
9026: Failed: recursive call could loop indefinitely at offset 9
9027:
9028: /(?<!\w)(?R)/
9029: Failed: recursive call could loop indefinitely at offset 10
9030:
9031: /(?<=\w)(?R)/
9032: Failed: recursive call could loop indefinitely at offset 10
9033:
9034: /[[:foo:]]/
9035: Failed: unknown POSIX class name at offset 3
9036:
9037: /[[:1234:]]/
9038: Failed: unknown POSIX class name at offset 3
9039:
9040: /[[:f\oo:]]/
9041: Failed: unknown POSIX class name at offset 3
9042:
9043: /[[: :]]/
9044: Failed: unknown POSIX class name at offset 3
9045:
9046: /[[:...:]]/
9047: Failed: unknown POSIX class name at offset 3
9048:
9049: /[[:l\ower:]]/
9050: Failed: unknown POSIX class name at offset 3
9051:
9052: /[[:abc\:]]/
9053: Failed: unknown POSIX class name at offset 3
9054:
9055: /[abc[:x\]pqr:]]/
9056: Failed: unknown POSIX class name at offset 6
9057:
9058: /[[:a\dz:]]/
9059: Failed: unknown POSIX class name at offset 3
9060:
9061: /(^(a|b\g<-1'c))/
9062: Failed: \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
9070: No match
9071: xxz
9072: No match
9073:
9074: /(\3)(\1)(a)/
9075: cat
9076: No 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>
9090: Failed: ] is an invalid data character in JavaScript compatibility mode at offset 2
9091:
9092: /(?2)[]a()b](abc)/
9093: Failed: reference to non-existent subpattern at offset 3
9094:
9095: /(?2)[^]a()b](abc)/
9096: Failed: reference to non-existent subpattern at offset 3
9097:
9098: /(?1)[]a()b](abc)/
9099: abcbabc
9100: 0: abcbabc
9101: 1: abc
9102: ** Failers
9103: No match
9104: abcXabc
9105: No match
9106:
9107: /(?1)[^]a()b](abc)/
9108: abcXabc
9109: 0: abcXabc
9110: 1: abc
9111: ** Failers
9112: No match
9113: abcbabc
9114: No 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)/
9123: Failed: reference to non-existent subpattern at offset 4
9124:
9125: /(?&N)[]a(?<N>)](abc)/
9126: Failed: reference to non-existent subpattern at offset 4
9127:
9128: /a[]b/
9129: Failed: missing terminating ] for character class at offset 4
9130:
9131: /a[^]b/
9132: Failed: missing terminating ] for character class at offset 5
9133:
9134: /a[]b/<JS>
9135: ** Failers
9136: No match
9137: ab
9138: No match
9139:
9140: /a[]+b/<JS>
9141: ** Failers
9142: No match
9143: ab
9144: No match
9145:
9146: /a[]*+b/<JS>
9147: ** Failers
9148: No match
9149: ab
9150: No match
9151:
9152: /a[^]b/<JS>
9153: aXb
9154: 0: aXb
9155: a\nb
9156: 0: a\x0ab
9157: ** Failers
9158: No match
9159: ab
9160: No match
9161:
9162: /a[^]+b/<JS>
9163: aXb
9164: 0: aXb
9165: a\nX\nXb
9166: 0: a\x0aX\x0aXb
9167: ** Failers
9168: No match
9169: ab
9170: No match
9171:
9172: /a(?!)+b/
9173: Failed: nothing to repeat at offset 5
9174:
9175: /a(*FAIL)+b/
9176: Failed: nothing to repeat at offset 8
9177:
9178: /(abc|pqr|123){0}[xyz]/SI
9179: Capturing subpattern count = 1
9180: No options
9181: No first char
9182: No need char
9183: Subject length lower bound = 1
9184: Starting byte set: x y z
9185:
9186: /(?(?=.*b)b|^)/CI
9187: Capturing subpattern count = 0
9188: Options:
9189: No first char
9190: No 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
9226: Capturing subpattern count = 0
9227: No options
9228: No first char
9229: No need char
9230:
9231: /(?(?=.*b).*b|^d)/I
9232: Capturing subpattern count = 0
9233: No options
9234: First char at start or follows newline
9235: No need char
9236:
9237: /a?|b?/P
9238: abc
9239: 0: a
9240: ** Failers
9241: 0:
9242: ddd\N
9243: No 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
9271: No match
9272: abc
9273: No match
9274: abc\Y
9275: --->abc
9276: +0 ^ x
9277: +0 ^ x
9278: +0 ^ x
9279: +0 ^ x
9280: No match
9281: abcxypqr
9282: No 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
9296: No 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/
9356: Failed: 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
9369: Partial match: X
9370: Xa\P
9371: Partial match: Xa
9372: Xaa\P
9373: Partial match: Xaa
9374: Xaaa\P
9375: Partial match: Xaaa
9376: Xaaaa\P
9377: Partial match: Xaaaa
9378:
9379: /Xa{2,4}?b/
9380: X\P
9381: Partial match: X
9382: Xa\P
9383: Partial match: Xa
9384: Xaa\P
9385: Partial match: Xaa
9386: Xaaa\P
9387: Partial match: Xaaa
9388: Xaaaa\P
9389: Partial match: Xaaaa
9390:
9391: /Xa{2,4}+b/
9392: X\P
9393: Partial match: X
9394: Xa\P
9395: Partial match: Xa
9396: Xaa\P
9397: Partial match: Xaa
9398: Xaaa\P
9399: Partial match: Xaaa
9400: Xaaaa\P
9401: Partial match: Xaaaa
9402:
9403: /X\d{2,4}b/
9404: X\P
9405: Partial match: X
9406: X3\P
9407: Partial match: X3
9408: X33\P
9409: Partial match: X33
9410: X333\P
9411: Partial match: X333
9412: X3333\P
9413: Partial match: X3333
9414:
9415: /X\d{2,4}?b/
9416: X\P
9417: Partial match: X
9418: X3\P
9419: Partial match: X3
9420: X33\P
9421: Partial match: X33
9422: X333\P
9423: Partial match: X333
9424: X3333\P
9425: Partial match: X3333
9426:
9427: /X\d{2,4}+b/
9428: X\P
9429: Partial match: X
9430: X3\P
9431: Partial match: X3
9432: X33\P
9433: Partial match: X33
9434: X333\P
9435: Partial match: X333
9436: X3333\P
9437: Partial match: X3333
9438:
9439: /X\D{2,4}b/
9440: X\P
9441: Partial match: X
9442: Xa\P
9443: Partial match: Xa
9444: Xaa\P
9445: Partial match: Xaa
9446: Xaaa\P
9447: Partial match: Xaaa
9448: Xaaaa\P
9449: Partial match: Xaaaa
9450:
9451: /X\D{2,4}?b/
9452: X\P
9453: Partial match: X
9454: Xa\P
9455: Partial match: Xa
9456: Xaa\P
9457: Partial match: Xaa
9458: Xaaa\P
9459: Partial match: Xaaa
9460: Xaaaa\P
9461: Partial match: Xaaaa
9462:
9463: /X\D{2,4}+b/
9464: X\P
9465: Partial match: X
9466: Xa\P
9467: Partial match: Xa
9468: Xaa\P
9469: Partial match: Xaa
9470: Xaaa\P
9471: Partial match: Xaaa
9472: Xaaaa\P
9473: Partial match: Xaaaa
9474:
9475: /X[abc]{2,4}b/
9476: X\P
9477: Partial match: X
9478: Xa\P
9479: Partial match: Xa
9480: Xaa\P
9481: Partial match: Xaa
9482: Xaaa\P
9483: Partial match: Xaaa
9484: Xaaaa\P
9485: Partial match: Xaaaa
9486:
9487: /X[abc]{2,4}?b/
9488: X\P
9489: Partial match: X
9490: Xa\P
9491: Partial match: Xa
9492: Xaa\P
9493: Partial match: Xaa
9494: Xaaa\P
9495: Partial match: Xaaa
9496: Xaaaa\P
9497: Partial match: Xaaaa
9498:
9499: /X[abc]{2,4}+b/
9500: X\P
9501: Partial match: X
9502: Xa\P
9503: Partial match: Xa
9504: Xaa\P
9505: Partial match: Xaa
9506: Xaaa\P
9507: Partial match: Xaaa
9508: Xaaaa\P
9509: Partial match: Xaaaa
9510:
9511: /X[^a]{2,4}b/
9512: X\P
9513: Partial match: X
9514: Xz\P
9515: Partial match: Xz
9516: Xzz\P
9517: Partial match: Xzz
9518: Xzzz\P
9519: Partial match: Xzzz
9520: Xzzzz\P
9521: Partial match: Xzzzz
9522:
9523: /X[^a]{2,4}?b/
9524: X\P
9525: Partial match: X
9526: Xz\P
9527: Partial match: Xz
9528: Xzz\P
9529: Partial match: Xzz
9530: Xzzz\P
9531: Partial match: Xzzz
9532: Xzzzz\P
9533: Partial match: Xzzzz
9534:
9535: /X[^a]{2,4}+b/
9536: X\P
9537: Partial match: X
9538: Xz\P
9539: Partial match: Xz
9540: Xzz\P
9541: Partial match: Xzz
9542: Xzzz\P
9543: Partial match: Xzzz
9544: Xzzzz\P
9545: Partial match: Xzzzz
9546:
9547: /(Y)X\1{2,4}b/
9548: YX\P
9549: Partial match: YX
9550: YXY\P
9551: Partial match: YXY
9552: YXYY\P
9553: Partial match: YXYY
9554: YXYYY\P
9555: Partial match: YXYYY
9556: YXYYYY\P
9557: Partial match: YXYYYY
9558:
9559: /(Y)X\1{2,4}?b/
9560: YX\P
9561: Partial match: YX
9562: YXY\P
9563: Partial match: YXY
9564: YXYY\P
9565: Partial match: YXYY
9566: YXYYY\P
9567: Partial match: YXYYY
9568: YXYYYY\P
9569: Partial match: YXYYYY
9570:
9571: /(Y)X\1{2,4}+b/
9572: YX\P
9573: Partial match: YX
9574: YXY\P
9575: Partial match: YXY
9576: YXYY\P
9577: Partial match: YXYY
9578: YXYYY\P
9579: Partial match: YXYYY
9580: YXYYYY\P
9581: Partial match: YXYYYY
9582:
9583: /\++\KZ|\d+X|9+Y/
9584: ++++123999\P
9585: Partial match: 123999
9586: ++++123999Y\P
9587: 0: 999Y
9588: ++++Z1234\P
9589: 0: Z
9590:
9591: /Z(*F)/
9592: Z\P
9593: No match
9594: ZA\P
9595: No match
9596:
9597: /Z(?!)/
9598: Z\P
9599: No match
9600: ZA\P
9601: No match
9602:
9603: /dog(sbody)?/
9604: dogs\P
9605: 0: dog
9606: dogs\P\P
9607: Partial 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
9625: Partial match: dogs
9626:
9627: /\bthe cat\b/
9628: the cat\P
9629: 0: the cat
9630: the cat\P\P
9631: Partial 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
9651: Partial match: abc12
9652: xyzabc12\P\P
9653: Partial match: abc12
9654:
9655: /(?<=abc)123/
9656: xyzabc123pqr
9657: 0: 123
9658: xyzabc12\P
9659: Partial match: abc12
9660: xyzabc12\P\P
9661: Partial match: abc12
9662:
9663: /\babc\b/
9664: +++abc+++
9665: 0: abc
9666: +++ab\P
9667: Partial match: +ab
9668: +++ab\P\P
9669: Partial 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
9758: No match
9759: abcdef\N
9760: No match
9761: xyzabcdef\N
9762: No match
9763:
9764: /^(?:(?=abc)|abc\K)/+
9765: abcdef
9766: 0:
9767: 0+ abcdef
9768: abcdef\N\N
9769: 0:
9770: 0+ def
9771: ** Failers
9772: No match
9773: abcdef\N
9774: No 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
9796: No 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
9809: No match
9810: xyzabc\N\N
9811: No match
9812: xyz\N\N
9813: No match
9814: xyz\N
9815: No 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
9918: No match
9919: XAAX
9920: No 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)/
9960: Failed: lookbehind assertion is not fixed length at offset 10
9961:
9962: /(a)(?<=b+(?1))/
9963: Failed: lookbehind assertion is not fixed length at offset 13
9964:
9965: /(a+)(?<=b(?1))/
9966: Failed: lookbehind assertion is not fixed length at offset 14
9967:
9968: /(a(?<=b(?1)))/
9969: Failed: lookbehind assertion is not fixed length at offset 13
9970:
9971: /(?<=b(?1))xyz/
9972: Failed: reference to non-existent subpattern at offset 8
9973:
9974: /(?<=b(?1))xyz(b+)pqrstuvew/
9975: Failed: lookbehind assertion is not fixed length at offset 26
9976:
9977: /(a|bc)\1/SI
9978: Capturing subpattern count = 1
9979: Max back reference = 1
9980: No options
9981: No first char
9982: No need char
9983: Subject length lower bound = 2
9984: Starting byte set: a b
9985:
9986: /(a|bc)\1{2,3}/SI
9987: Capturing subpattern count = 1
9988: Max back reference = 1
9989: No options
9990: No first char
9991: No need char
9992: Subject length lower bound = 3
9993: Starting byte set: a b
9994:
9995: /(a|bc)(?1)/SI
9996: Capturing subpattern count = 1
9997: No options
9998: No first char
9999: No need char
10000: Subject length lower bound = 2
10001: Starting byte set: a b
10002:
10003: /(a|b\1)(a|b\1)/SI
10004: Capturing subpattern count = 2
10005: Max back reference = 1
10006: No options
10007: No first char
10008: No need char
10009: Subject length lower bound = 2
10010: Starting byte set: a b
10011:
10012: /(a|b\1){2}/SI
10013: Capturing subpattern count = 1
10014: Max back reference = 1
10015: No options
10016: No first char
10017: No need char
10018: Subject length lower bound = 2
10019: Starting byte set: a b
10020:
10021: /(a|bbbb\1)(a|bbbb\1)/SI
10022: Capturing subpattern count = 2
10023: Max back reference = 1
10024: No options
10025: No first char
10026: No need char
10027: Subject length lower bound = 2
10028: Starting byte set: a b
10029:
10030: /(a|bbbb\1){2}/SI
10031: Capturing subpattern count = 1
10032: Max back reference = 1
10033: No options
10034: No first char
10035: No need char
10036: Subject length lower bound = 2
10037: Starting 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
10040: Capturing subpattern count = 1
10041: Options: anchored
10042: No first char
10043: Need char = ':'
10044: Subject length lower bound = 22
10045: No 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
10241: Capturing subpattern count = 0
10242: Contains explicit CR or LF match
10243: Options: extended
10244: No first char
10245: No need char
10246: Subject length lower bound = 3
10247: Starting 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
10252: Capturing subpattern count = 11
10253: Options: caseless dotall
10254: First char = '<'
10255: Need char = '>'
10256: Subject length lower bound = 47
10257: No set of starting bytes
10258:
10259: "(?>.*/)foo"SI
10260: Capturing subpattern count = 0
10261: No options
10262: First char at start or follows newline
10263: Need char = 'o'
10264: Subject length lower bound = 4
10265: No set of starting bytes
10266:
10267: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /xSI
10268: Capturing subpattern count = 0
10269: Options: extended
10270: No first char
10271: Need char = '-'
10272: Subject length lower bound = 8
10273: No set of starting bytes
10274:
10275: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
10276: Capturing subpattern count = 1
10277: Options: caseless
10278: No first char
10279: No need char
10280: Subject length lower bound = 1
10281: Starting byte set: A B C a b c
10282:
10283: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
10284: Capturing subpattern count = 0
10285: No options
10286: No first char
10287: Need char = 'b'
10288: Subject length lower bound = 41
10289: Starting 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
10296: Capturing subpattern count = 3
10297: Max back reference = 1
10298: Options: caseless extended dotall
10299: First char = '<'
10300: Need char = '='
10301: Subject length lower bound = 9
10302: No 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
10313: Capturing subpattern count = 1
10314: Options: anchored caseless extended
10315: No first char
10316: Need char = ':'
10317: Subject length lower bound = 2
10318: No set of starting bytes
10319:
10320: /(?|(?<a>A)|(?<a>B))/I
10321: Capturing subpattern count = 1
10322: Named capturing subpatterns:
10323: a 1
10324: a 1
10325: No options
10326: No first char
10327: No 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))/
10338: Failed: 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
10343: Capturing subpattern count = 6
10344: Named capturing subpatterns:
10345: apostrophe 2
10346: apostrophe 5
10347: quote 1
10348: quote 4
10349: realquote 3
10350: realquote 6
10351: Options: extended dupnames
10352: No first char
10353: No 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
10368: No match
10369: b"11111
10370: No match
10371: a"11111
10372: No 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: ------------------------------------------------------------------
10405: Capturing subpattern count = 4
10406: Named capturing subpatterns:
10407: D 4
10408: D 1
10409: Options: anchored extended dupnames
10410: No first char
10411: No 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
10422: No match
10423: abcdY
10424: No match
10425: ey
10426: No 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: ------------------------------------------------------------------
10454: Capturing subpattern count = 4
10455: Named capturing subpatterns:
10456: A 1
10457: A 4
10458: Options: extended dupnames
10459: First char = 'a'
10460: Need char = 'd'
10461: abcdd
10462: 0: abcdd
10463: 1: a
10464: 2: b
10465: 3: c
10466: 4: dd
10467: ** Failers
10468: No match
10469: abcdde
10470: No match
10471:
10472: /abcd*/
10473: xxxxabcd\P
10474: 0: abcd
10475: xxxxabcd\P\P
10476: Partial match: abcd
10477:
10478: /abcd*/i
10479: xxxxabcd\P
10480: 0: abcd
10481: xxxxabcd\P\P
10482: Partial match: abcd
10483: XXXXABCD\P
10484: 0: ABCD
10485: XXXXABCD\P\P
10486: Partial match: ABCD
10487:
10488: /abc\d*/
10489: xxxxabc1\P
10490: 0: abc1
10491: xxxxabc1\P\P
10492: Partial match: abc1
10493:
10494: /(a)bc\1*/
10495: xxxxabca\P
10496: 0: abca
10497: 1: a
10498: xxxxabca\P\P
10499: Partial match: abca
10500:
10501: /abc[de]*/
10502: xxxxabcde\P
10503: 0: abcde
10504: xxxxabcde\P\P
10505: Partial 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
10525: No match
10526: ABX
10527: No match
10528: BAXBAD
10529: No 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>
10539: Capturing subpattern count = 3
10540: Max back reference = 3
10541: Options:
10542: No first char
10543: Need char = 'a'
10544: Subject length lower bound = 1
10545: No set of starting bytes
10546: cat
10547: 0: a
10548: 1:
10549: 2:
10550: 3: a
10551:
10552: /(\3)(\1)(a)/SI
10553: Capturing subpattern count = 3
10554: Max back reference = 3
10555: No options
10556: No first char
10557: Need char = 'a'
10558: Subject length lower bound = 3
10559: No set of starting bytes
10560: cat
10561: No match
10562:
10563: /i(?(DEFINE)(?<s>a))/SI
10564: Capturing subpattern count = 1
10565: Named capturing subpatterns:
10566: s 1
10567: No options
10568: First char = 'i'
10569: No need char
10570: Subject length lower bound = 1
10571: No set of starting bytes
10572: i
10573: 0: i
10574:
10575: /()i(?(1)a)/SI
10576: Capturing subpattern count = 1
10577: No options
10578: No first char
10579: Need char = 'i'
10580: Subject length lower bound = 1
10581: Starting 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
10605: No match
10606: XABX
10607: No 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))/
10741: Failed: recursive call could loop indefinitely at offset 31
10742:
10743: /abc(*MARK:)pqr/
10744: Failed: (*MARK) must have an argument at offset 10
10745:
10746: /abc(*:)pqr/
10747: Failed: (*MARK) must have an argument at offset 6
10748:
10749: /abc(*FAIL:123)xyz/
10750: Failed: 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
10757: No 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
10768: No 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
10785: No match
10786: AC
10787: No match
10788: CB
10789: No match, mark = B
10790:
10791: /--- Check the use of names for success and failure. PCRE doesn't show these
10792: names 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
10802: No match
10803: AC
10804: No match, mark = A
10805: CB
10806: No match, mark = B
10807:
10808: /--- An empty name does not pass back an empty string. It is the same as if no
10809: name 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
10829: MK: A
10830: D
10831: No match, mark = B
10832:
10833: /(*MARK:A)(*THEN:B)(C|X)/K
10834: C
10835: 0: C
10836: 1: C
10837: MK: A
10838: D
10839: No 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
10845: No match
10846:
10847: /--- Same --/
10848:
10849: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
10850: AAAC
10851: No 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
10858: No match
10859:
10860: /A(*:A)A+(*SKIP)(B|Z) | AC/xK
10861: AAAC
10862: No 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
10868: No 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
10875: No match
10876:
10877: /--- Mark names can be duplicated ---/
10878:
10879: /A(*:A)B|X(*:A)Y/K
10880: AABC
10881: 0: AB
10882: MK: A
10883: XXYZ
10884: 0: XY
10885: MK: A
10886:
10887: /^A(*:A)B|^X(*:A)Y/K
10888: ** Failers
10889: No match
10890: XAQQ
10891: No match, mark = A
10892:
10893: /--- A check on what happens after hitting a mark and them bumping along to
10894: something that does not even start. Perl reports tags after the failures here,
10895: though it does not when the individual letters are made into something
10896: more complicated. ---/
10897:
10898: /A(*:A)B|XX(*:B)Y/K
10899: AABC
10900: 0: AB
10901: MK: A
10902: XXYZ
10903: 0: XXY
10904: MK: B
10905: ** Failers
10906: No match
10907: XAQQ
10908: No match
10909: XAQQXZZ
10910: No match
10911: AXQQQ
10912: No match
10913: AXXQQQ
10914: No match
10915:
10916: /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
10917: optimizations defeat this. So does the PCRE optimization unless we disable it
10918: with \Y. ---/
10919:
10920: /(*COMMIT)ABC/
10921: ABCDEFG
10922: 0: ABC
10923: ** Failers
10924: No match
10925: DEFGABC\Y
10926: No match
10927:
10928: /--- Repeat some tests with added studying. ---/
10929:
10930: /A(*COMMIT)B/+KS
10931: ACABX
10932: No 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
10940: No 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
10950: No match
10951: AC
10952: No match
10953: CB
10954: No 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
10964: No match
10965: AC
10966: No match, mark = A
10967: CB
10968: No 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
10986: MK: A
10987: D
10988: No match
10989:
10990: /(*MARK:A)(*THEN:B)(C|X)/KS
10991: C
10992: 0: C
10993: 1: C
10994: MK: A
10995: D
10996: No match
10997:
10998: /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
10999: AAAC
11000: No match
11001:
11002: /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
11003: AAAC
11004: No match
11005:
11006: /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
11007: AAAC
11008: No match
11009:
11010: /A(*:A)A+(*SKIP)(B|Z) | AC/xKS
11011: AAAC
11012: No match
11013:
11014: /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
11015: AAAC
11016: No match
11017:
11018: /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
11019: AAAC
11020: No match
11021:
11022: /A(*:A)B|XX(*:B)Y/KS
11023: AABC
11024: 0: AB
11025: MK: A
11026: XXYZ
11027: 0: XXY
11028: MK: B
11029: ** Failers
11030: No match
11031: XAQQ
11032: No match
11033: XAQQXZZ
11034: No match
11035: AXQQQ
11036: No match
11037: AXXQQQ
11038: No match
11039:
11040: /(*COMMIT)ABC/
11041: ABCDEFG
11042: 0: ABC
11043: ** Failers
11044: No match
11045: DEFGABC\Y
11046: No match
11047:
11048: /^(ab (c+(*THEN)cd) | xyz)/x
11049: abcccd
11050: No match
11051:
11052: /^(ab (c+(*PRUNE)cd) | xyz)/x
11053: abcccd
11054: No match
11055:
11056: /^(ab (c+(*FAIL)cd) | xyz)/x
11057: abcccd
11058: No 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
11094: No match
11095: A\nB
11096: No match
11097: ACB\n
11098: No 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
11115: No match
11116: A\nB
11117: No match
11118:
11119: /A\NB/<crlf>
11120: A\nB
11121: 0: A\x0aB
11122: A\rB
11123: 0: A\x0dB
11124: ** Failers
11125: No match
11126: A\r\nB
11127: No 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
11182: No match
11183: abcxy
11184: No match
11185:
11186: /(?<=abc)def/
11187: abc\P\P
11188: Partial match: abc
11189:
11190: /abc$/
11191: abc
11192: 0: abc
11193: abc\P
11194: 0: abc
11195: abc\P\P
11196: Partial match: abc
11197:
11198: /abc$/m
11199: abc
11200: 0: abc
11201: abc\n
11202: 0: abc
11203: abc\P\P
11204: Partial 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
11218: Partial match: abc
11219:
11220: /abc\Z/
11221: abc
11222: 0: abc
11223: abc\P
11224: 0: abc
11225: abc\P\P
11226: Partial match: abc
11227:
11228: /abc\b/
11229: abc
11230: 0: abc
11231: abc\P
11232: 0: abc
11233: abc\P\P
11234: Partial match: abc
11235:
11236: /abc\B/
11237: abc
11238: No match
11239: abc\P
11240: Partial match: abc
11241: abc\P\P
11242: Partial 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
11252: No match
11253: abc\>4
11254: Error -24
11255: abc\>-4
11256: Error -24
11257:
11258: /^\cģ/
11259: Failed: \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
11289: Failed: syntax error in subpattern name (missing terminator) at offset 29
11290:
11291: /(?P<abn>(?P=axn)xxx)/BZ
11292: Failed: 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 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>