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

Contents of /code/trunk/testdata/testoutput2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 576 - (hide annotations) (download)
Sun Nov 21 18:45:10 2010 UTC (2 years, 5 months ago) by ph10
File size: 226768 byte(s)
Added support for (*NO_START_OPT)

1 ph10 450 /-- 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 ph10 513 either because PCRE can't be compatible, or there is a possible Perl
6 ph10 450 bug. --/
7    
8 ph10 559 /-- Originally, the Perl >= 5.10 things were in here too, but now I have
9 ph10 513 separated many (most?) of them out into test 11. However, there may still
10     be some that were overlooked. --/
11 ph10 450
12 nigel 93 /(a)b|/I
13 nigel 43 Capturing subpattern count = 1
14 nigel 41 No options
15     No first char
16 nigel 43 No need char
17 nigel 41
18 nigel 93 /abc/I
19 nigel 43 Capturing subpattern count = 0
20 nigel 41 No options
21     First char = 'a'
22 nigel 43 Need char = 'c'
23 nigel 41 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 nigel 93 /^abc/I
37 nigel 43 Capturing subpattern count = 0
38 nigel 41 Options: anchored
39     No first char
40 nigel 65 No need char
41 nigel 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 nigel 93 /a+bc/I
53 nigel 43 Capturing subpattern count = 0
54 nigel 41 No options
55     First char = 'a'
56 nigel 43 Need char = 'c'
57 nigel 41
58 nigel 93 /a*bc/I
59 nigel 43 Capturing subpattern count = 0
60 nigel 41 No options
61     No first char
62 nigel 43 Need char = 'c'
63 nigel 41
64 nigel 93 /a{3}bc/I
65 nigel 43 Capturing subpattern count = 0
66 nigel 41 No options
67     First char = 'a'
68 nigel 43 Need char = 'c'
69 nigel 41
70 nigel 93 /(abc|a+z)/I
71 nigel 43 Capturing subpattern count = 1
72 nigel 41 No options
73     First char = 'a'
74 nigel 43 No need char
75 nigel 41
76 nigel 93 /^abc$/I
77 nigel 43 Capturing subpattern count = 0
78 nigel 41 Options: anchored
79     No first char
80 nigel 65 No need char
81 nigel 41 abc
82     0: abc
83     *** Failers
84     No match
85     def\nabc
86     No match
87    
88 ph10 178 /ab\idef/X
89 nigel 41 Failed: unrecognized character follows \ at offset 3
90    
91 ph10 178 /(?X)ab\idef/X
92 nigel 41 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 nigel 63 /(?X)[\B]/
104     Failed: invalid escape sequence in character class at offset 6
105 nigel 41
106 ph10 513 /(?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 nigel 41 /[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 ph10 269 Failed: unrecognized character after (? or (?- at offset 2
150 nigel 41
151 nigel 93 /.*b/I
152 nigel 43 Capturing subpattern count = 0
153 nigel 41 No options
154 nigel 91 First char at start or follows newline
155 nigel 43 Need char = 'b'
156 nigel 41
157 nigel 93 /.*?b/I
158 nigel 43 Capturing subpattern count = 0
159 nigel 41 No options
160 nigel 91 First char at start or follows newline
161 nigel 43 Need char = 'b'
162 nigel 41
163 nigel 93 /cat|dog|elephant/I
164 nigel 43 Capturing subpattern count = 0
165 nigel 41 No options
166     No first char
167 nigel 43 No need char
168 nigel 41 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 nigel 93 /cat|dog|elephant/IS
174 nigel 43 Capturing subpattern count = 0
175 nigel 41 No options
176     No first char
177 nigel 43 No need char
178 ph10 455 Subject length lower bound = 3
179 nigel 75 Starting byte set: c d e
180 nigel 41 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 nigel 93 /cat|dog|elephant/IiS
186 nigel 43 Capturing subpattern count = 0
187 nigel 41 Options: caseless
188     No first char
189 nigel 43 No need char
190 ph10 455 Subject length lower bound = 3
191 nigel 75 Starting byte set: C D E c d e
192 nigel 41 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 nigel 93 /a|[bcd]/IS
198 nigel 43 Capturing subpattern count = 0
199 nigel 41 No options
200     No first char
201 nigel 43 No need char
202 ph10 455 Subject length lower bound = 1
203 nigel 75 Starting byte set: a b c d
204 nigel 41
205 nigel 93 /(a|[^\dZ])/IS
206 nigel 43 Capturing subpattern count = 1
207 nigel 41 No options
208     No first char
209 nigel 43 No need char
210 ph10 455 Subject length lower bound = 1
211 nigel 75 Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
212 nigel 41 \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 nigel 93 /(a|b)*[\s]/IS
227 nigel 43 Capturing subpattern count = 1
228 nigel 41 No options
229     No first char
230 nigel 43 No need char
231 ph10 455 Subject length lower bound = 1
232 nigel 75 Starting byte set: \x09 \x0a \x0c \x0d \x20 a b
233 nigel 41
234     /(ab\2)/
235 nigel 63 Failed: reference to non-existent subpattern at offset 6
236 nigel 41
237     /{4,5}abc/
238     Failed: nothing to repeat at offset 4
239    
240 nigel 93 /(a)(b)(c)\2/I
241 nigel 43 Capturing subpattern count = 3
242     Max back reference = 2
243 nigel 41 No options
244     First char = 'a'
245 nigel 43 Need char = 'c'
246 nigel 41 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 ph10 102 \O12abcb
266 nigel 41 0: abcb
267     1: a
268     2: b
269     3: c
270    
271 nigel 93 /(a)bc|(a)(b)\2/I
272 nigel 43 Capturing subpattern count = 3
273     Max back reference = 2
274 nigel 41 No options
275     First char = 'a'
276 nigel 43 No need char
277 nigel 41 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 nigel 93 /abc$/IE
314 nigel 43 Capturing subpattern count = 0
315 nigel 41 Options: dollar_endonly
316     First char = 'a'
317 nigel 43 Need char = 'c'
318 nigel 41 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 nigel 63 Failed: reference to non-existent subpattern at offset 17
329 nigel 41
330 nigel 93 /the quick brown fox/I
331 nigel 43 Capturing subpattern count = 0
332 nigel 41 No options
333     First char = 't'
334 nigel 43 Need char = 'x'
335 nigel 41 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 nigel 93 /the quick brown fox/IA
341 nigel 43 Capturing subpattern count = 0
342 nigel 41 Options: anchored
343     No first char
344 nigel 65 No need char
345 nigel 41 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 ph10 269 Failed: unrecognized character after (? or (?- at offset 4
354 nigel 41
355 nigel 93 /^abc|def/I
356 nigel 43 Capturing subpattern count = 0
357 nigel 41 No options
358     No first char
359 nigel 43 No need char
360 nigel 41 abcdef
361     0: abc
362     abcdef\B
363     0: def
364    
365 nigel 93 /.*((abc)$|(def))/I
366 nigel 43 Capturing subpattern count = 3
367 nigel 41 No options
368 nigel 91 First char at start or follows newline
369 nigel 43 No need char
370 nigel 41 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 ph10 432 /abc/P
381 nigel 41 abc
382     0: abc
383     *** Failers
384     No match: POSIX code 17: match failed
385 ph10 102
386 ph10 432 /^abc|def/P
387 nigel 41 abcdef
388     0: abc
389     abcdef\B
390     0: def
391    
392 ph10 432 /.*((abc)$|(def))/P
393 nigel 41 defabc
394     0: defabc
395     1: abc
396     2: abc
397     \Zdefabc
398     0: def
399     1: def
400     3: def
401 ph10 102
402 ph10 432 /the quick brown fox/P
403 nigel 41 the quick brown fox
404     0: the quick brown fox
405 ph10 102 *** Failers
406 nigel 41 No match: POSIX code 17: match failed
407 ph10 102 The Quick Brown Fox
408 nigel 41 No match: POSIX code 17: match failed
409    
410 ph10 432 /the quick brown fox/Pi
411 nigel 41 the quick brown fox
412     0: the quick brown fox
413 ph10 102 The Quick Brown Fox
414 nigel 41 0: The Quick Brown Fox
415    
416 ph10 432 /abc.def/P
417 nigel 41 *** Failers
418     No match: POSIX code 17: match failed
419     abc\ndef
420     No match: POSIX code 17: match failed
421 ph10 102
422 ph10 432 /abc$/P
423 nigel 41 abc
424     0: abc
425 ph10 102 abc\n
426 nigel 41 0: abc
427    
428 ph10 432 /(abc)\2/P
429 nigel 41 Failed: POSIX code 15: bad back reference at offset 7
430    
431 ph10 432 /(abc\1)/P
432 nigel 41 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 nigel 93 /[^aeiou ]{3,}/I
442 nigel 43 Capturing subpattern count = 0
443 nigel 41 No options
444     No first char
445 nigel 43 No need char
446 ph10 102 co-processors, and for
447 nigel 41 0: -pr
448 ph10 102
449 nigel 93 /<.*>/I
450 nigel 43 Capturing subpattern count = 0
451 nigel 41 No options
452     First char = '<'
453 nigel 43 Need char = '>'
454 nigel 41 abc<def>ghi<klm>nop
455     0: <def>ghi<klm>
456    
457 nigel 93 /<.*?>/I
458 nigel 43 Capturing subpattern count = 0
459 nigel 41 No options
460     First char = '<'
461 nigel 43 Need char = '>'
462 nigel 41 abc<def>ghi<klm>nop
463     0: <def>
464    
465 nigel 93 /<.*>/IU
466 nigel 43 Capturing subpattern count = 0
467 nigel 41 Options: ungreedy
468     First char = '<'
469 nigel 43 Need char = '>'
470 nigel 41 abc<def>ghi<klm>nop
471     0: <def>
472 ph10 102
473 nigel 93 /(?U)<.*>/I
474 nigel 43 Capturing subpattern count = 0
475 nigel 41 Options: ungreedy
476     First char = '<'
477 nigel 43 Need char = '>'
478 nigel 41 abc<def>ghi<klm>nop
479     0: <def>
480    
481 nigel 93 /<.*?>/IU
482 nigel 43 Capturing subpattern count = 0
483 nigel 41 Options: ungreedy
484     First char = '<'
485 nigel 43 Need char = '>'
486 nigel 41 abc<def>ghi<klm>nop
487     0: <def>ghi<klm>
488 ph10 102
489 nigel 93 /={3,}/IU
490 nigel 43 Capturing subpattern count = 0
491 nigel 41 Options: ungreedy
492     First char = '='
493 nigel 43 Need char = '='
494 nigel 41 abc========def
495     0: ===
496 ph10 102
497 nigel 93 /(?U)={3,}?/I
498 nigel 43 Capturing subpattern count = 0
499 nigel 41 Options: ungreedy
500     First char = '='
501 nigel 43 Need char = '='
502 nigel 41 abc========def
503     0: ========
504 ph10 102
505 nigel 93 /(?<!bar|cattle)foo/I
506 nigel 43 Capturing subpattern count = 0
507 nigel 41 No options
508     First char = 'f'
509 nigel 43 Need char = 'o'
510 nigel 41 foo
511     0: foo
512 ph10 102 catfoo
513 nigel 41 0: foo
514     *** Failers
515     No match
516     the barfoo
517     No match
518 ph10 102 and cattlefoo
519 nigel 41 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 nigel 93 /(?i)abc/I
531 nigel 43 Capturing subpattern count = 0
532 nigel 41 Options: caseless
533 nigel 63 First char = 'a' (caseless)
534     Need char = 'c' (caseless)
535 nigel 41
536 nigel 93 /(a|(?m)a)/I
537 nigel 43 Capturing subpattern count = 1
538 nigel 41 No options
539     First char = 'a'
540 nigel 43 No need char
541 nigel 41
542 nigel 93 /(?i)^1234/I
543 nigel 43 Capturing subpattern count = 0
544 nigel 41 Options: anchored caseless
545     No first char
546 nigel 65 No need char
547 nigel 41
548 nigel 93 /(^b|(?i)^d)/I
549 nigel 43 Capturing subpattern count = 1
550 nigel 41 Options: anchored
551     No first char
552 nigel 43 No need char
553 nigel 41
554 nigel 93 /(?s).*/I
555 nigel 43 Capturing subpattern count = 0
556 nigel 41 Options: anchored dotall
557     No first char
558 nigel 43 No need char
559 nigel 41
560 nigel 93 /[abcd]/IS
561 nigel 43 Capturing subpattern count = 0
562 nigel 41 No options
563     No first char
564 nigel 43 No need char
565 ph10 455 Subject length lower bound = 1
566 nigel 75 Starting byte set: a b c d
567 nigel 41
568 nigel 93 /(?i)[abcd]/IS
569 nigel 43 Capturing subpattern count = 0
570 nigel 41 Options: caseless
571     No first char
572 nigel 43 No need char
573 ph10 455 Subject length lower bound = 1
574 nigel 75 Starting byte set: A B C D a b c d
575 nigel 41
576 nigel 93 /(?m)[xy]|(b|c)/IS
577 nigel 43 Capturing subpattern count = 1
578 nigel 41 Options: multiline
579     No first char
580 nigel 43 No need char
581 ph10 455 Subject length lower bound = 1
582 nigel 75 Starting byte set: b c x y
583 nigel 41
584 nigel 93 /(^a|^b)/Im
585 nigel 43 Capturing subpattern count = 1
586 nigel 41 Options: multiline
587 nigel 91 First char at start or follows newline
588 nigel 43 No need char
589 nigel 41
590 nigel 93 /(?i)(^a|^b)/Im
591 nigel 43 Capturing subpattern count = 1
592 nigel 41 Options: caseless multiline
593 nigel 91 First char at start or follows newline
594 nigel 43 No need char
595 nigel 41
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 nigel 93 Failed: missing ) at offset 6
604    
605     /(?(1a))/
606 nigel 91 Failed: reference to non-existent subpattern at offset 6
607 nigel 41
608     /(?(?i))/
609     Failed: assertion expected after (?( at offset 3
610    
611     /(?(abc))/
612 nigel 91 Failed: reference to non-existent subpattern at offset 7
613 nigel 41
614     /(?(?<ab))/
615 nigel 93 Failed: syntax error in subpattern name (missing terminator) at offset 7
616 nigel 41
617 nigel 93 /((?s)blah)\s+\1/I
618 nigel 43 Capturing subpattern count = 1
619     Max back reference = 1
620 nigel 41 No options
621     First char = 'b'
622 nigel 43 Need char = 'h'
623 nigel 41
624 nigel 93 /((?i)blah)\s+\1/I
625 nigel 43 Capturing subpattern count = 1
626     Max back reference = 1
627 nigel 41 No options
628 nigel 63 First char = 'b' (caseless)
629     Need char = 'h' (caseless)
630 nigel 41
631 ph10 161 /((?i)b)/IDZS
632 nigel 41 ------------------------------------------------------------------
633 ph10 192 Bra
634     CBra 1
635 ph10 161 01 Opt
636     NC b
637     Ket
638     00 Opt
639     Ket
640     End
641 nigel 41 ------------------------------------------------------------------
642 nigel 43 Capturing subpattern count = 1
643 nigel 41 No options
644 nigel 63 First char = 'b' (caseless)
645     No need char
646 ph10 455 Subject length lower bound = 1
647     No set of starting bytes
648 nigel 41
649 nigel 93 /(a*b|(?i:c*(?-i)d))/IS
650 nigel 43 Capturing subpattern count = 1
651 nigel 41 No options
652     No first char
653 nigel 43 No need char
654 ph10 455 Subject length lower bound = 1
655 nigel 75 Starting byte set: C a b c d
656 nigel 41
657 nigel 93 /a$/I
658 nigel 43 Capturing subpattern count = 0
659 nigel 41 No options
660     First char = 'a'
661 nigel 43 No need char
662 nigel 41 a
663     0: a
664     a\n
665     0: a
666 ph10 102 *** Failers
667 nigel 41 No match
668     \Za
669     No match
670 ph10 102 \Za\n
671 nigel 41 No match
672    
673 nigel 93 /a$/Im
674 nigel 43 Capturing subpattern count = 0
675 nigel 41 Options: multiline
676     First char = 'a'
677 nigel 43 No need char
678 nigel 41 a
679     0: a
680     a\n
681     0: a
682 ph10 102 \Za\n
683 nigel 41 0: a
684 ph10 102 *** Failers
685 nigel 41 No match
686     \Za
687     No match
688 ph10 102
689 nigel 93 /\Aabc/Im
690 nigel 43 Capturing subpattern count = 0
691 nigel 41 Options: anchored multiline
692     No first char
693 nigel 65 No need char
694 nigel 41
695 ph10 102 /^abc/Im
696 nigel 43 Capturing subpattern count = 0
697 nigel 41 Options: multiline
698 nigel 91 First char at start or follows newline
699 nigel 43 Need char = 'c'
700 nigel 41
701 nigel 93 /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
702 nigel 43 Capturing subpattern count = 5
703 nigel 41 Options: anchored
704     No first char
705 nigel 65 No need char
706 nigel 41 aaaaabbbbbcccccdef
707     0: aaaaabbbbbcccccdef
708     1: aaaaabbbbbcccccdef
709     2: aaaaa
710     3: b
711     4: bbbbccccc
712     5: def
713    
714 nigel 93 /(?<=foo)[ab]/IS
715 nigel 43 Capturing subpattern count = 0
716 nigel 41 No options
717     No first char
718 nigel 43 No need char
719 ph10 455 Subject length lower bound = 1
720 nigel 75 Starting byte set: a b
721 nigel 41
722 nigel 93 /(?<!foo)(alpha|omega)/IS
723 nigel 43 Capturing subpattern count = 1
724 nigel 41 No options
725     No first char
726 nigel 43 Need char = 'a'
727 ph10 455 Subject length lower bound = 5
728 nigel 75 Starting byte set: a o
729 nigel 41
730 nigel 93 /(?!alphabet)[ab]/IS
731 nigel 43 Capturing subpattern count = 0
732 nigel 41 No options
733     No first char
734 nigel 43 No need char
735 ph10 455 Subject length lower bound = 1
736 nigel 75 Starting byte set: a b
737 nigel 41
738 nigel 93 /(?<=foo\n)^bar/Im
739 nigel 43 Capturing subpattern count = 0
740 ph10 226 Contains explicit CR or LF match
741 nigel 41 Options: multiline
742 nigel 75 No first char
743     Need char = 'r'
744 ph10 102 foo\nbarbar
745 nigel 75 0: bar
746     ***Failers
747     No match
748 ph10 102 rhubarb
749 nigel 75 No match
750     barbell
751     No match
752 ph10 102 abc\nbarton
753 nigel 75 No match
754    
755 nigel 93 /^(?<=foo\n)bar/Im
756 nigel 75 Capturing subpattern count = 0
757 ph10 226 Contains explicit CR or LF match
758 nigel 75 Options: multiline
759 nigel 91 First char at start or follows newline
760 nigel 43 Need char = 'r'
761 ph10 102 foo\nbarbar
762 nigel 75 0: bar
763     ***Failers
764     No match
765 ph10 102 rhubarb
766 nigel 75 No match
767     barbell
768     No match
769 ph10 102 abc\nbarton
770 nigel 75 No match
771 nigel 41
772 nigel 93 /(?>^abc)/Im
773 nigel 43 Capturing subpattern count = 0
774 nigel 41 Options: multiline
775 nigel 91 First char at start or follows newline
776 nigel 43 Need char = 'c'
777 nigel 41 abc
778     0: abc
779     def\nabc
780     0: abc
781     *** Failers
782     No match
783 ph10 102 defabc
784 nigel 41 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 nigel 93 /(?<=bullock|donkey)-cart/I
798 nigel 43 Capturing subpattern count = 0
799 nigel 41 No options
800     First char = '-'
801 nigel 43 Need char = 't'
802 nigel 41 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 ph10 102 horse-and-cart
811 nigel 41 No match
812 ph10 102
813 nigel 93 /(?<=ab(?i)x|y|z)/I
814 nigel 43 Capturing subpattern count = 0
815 nigel 41 No options
816     No first char
817 nigel 43 No need char
818 nigel 41
819 nigel 93 /(?>.*)(?<=(abcd)|(xyz))/I
820 nigel 43 Capturing subpattern count = 2
821 nigel 41 No options
822 nigel 91 First char at start or follows newline
823 nigel 43 No need char
824 nigel 41 alphabetabcd
825     0: alphabetabcd
826     1: abcd
827     endingxyz
828     0: endingxyz
829     1: <unset>
830     2: xyz
831    
832 nigel 93 /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
833 nigel 43 Capturing subpattern count = 0
834 nigel 41 No options
835     First char = 'Z'
836 nigel 43 Need char = 'Z'
837 nigel 41 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 ph10 102 BZZ
848 nigel 41 0: ZZ
849     *** Failers
850     No match
851 ph10 102 ZZ
852 nigel 41 No match
853 ph10 102 abXYZZ
854 nigel 41 No match
855     zzz
856     No match
857 ph10 102 bzz
858 nigel 41 No match
859    
860 nigel 93 /(?<!(foo)a)bar/I
861 nigel 43 Capturing subpattern count = 1
862 nigel 41 No options
863     First char = 'b'
864 nigel 43 Need char = 'r'
865 nigel 41 bar
866     0: bar
867 ph10 102 foobbar
868 nigel 41 0: bar
869     *** Failers
870     No match
871 ph10 102 fooabar
872 nigel 41 No match
873    
874 nigel 93 /This one is here because Perl 5.005_02 doesn't fail it/I
875 nigel 43 Capturing subpattern count = 0
876 nigel 41 No options
877     First char = 'T'
878 nigel 43 Need char = 't'
879 nigel 41
880 nigel 93 /^(a)?(?(1)a|b)+$/I
881 nigel 43 Capturing subpattern count = 1
882 nigel 41 Options: anchored
883     No first char
884 nigel 43 No need char
885 nigel 41 *** Failers
886     No match
887 ph10 102 a
888 nigel 41 No match
889    
890 ph10 488 /This one is here because Perl behaves differently; see also the following/I
891 nigel 43 Capturing subpattern count = 0
892 nigel 41 No options
893     First char = 'T'
894 nigel 43 Need char = 'g'
895 nigel 41
896 nigel 93 /^(a\1?){4}$/I
897 nigel 43 Capturing subpattern count = 1
898     Max back reference = 1
899 nigel 41 Options: anchored
900     No first char
901 nigel 65 No need char
902 ph10 488 aaaa
903     No match
904 nigel 41 aaaaaa
905 ph10 488 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 ph10 102
913 ph10 488 /^(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 nigel 93 /These are syntax tests from Perl 5.005/I
932 nigel 43 Capturing subpattern count = 0
933 nigel 41 No options
934     First char = 'T'
935 nigel 43 Need char = '5'
936 nigel 41
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 nigel 63 Failed: reference to non-existent subpattern at offset 2
966 nigel 41
967     /\2/
968 nigel 63 Failed: reference to non-existent subpattern at offset 2
969 nigel 41
970     /(a)|\2/
971 nigel 63 Failed: reference to non-existent subpattern at offset 6
972 nigel 41
973 nigel 93 /a[b-a]/Ii
974 nigel 41 Failed: range out of order in character class at offset 4
975    
976 nigel 93 /a[]b/Ii
977 nigel 41 Failed: missing terminating ] for character class at offset 4
978    
979 nigel 93 /a[/Ii
980 nigel 41 Failed: missing terminating ] for character class at offset 2
981    
982 nigel 93 /*a/Ii
983 nigel 41 Failed: nothing to repeat at offset 0
984    
985 nigel 93 /(*)b/Ii
986 nigel 41 Failed: nothing to repeat at offset 1
987    
988 nigel 93 /abc)/Ii
989 nigel 41 Failed: unmatched parentheses at offset 3
990    
991 nigel 93 /(abc/Ii
992 nigel 41 Failed: missing ) at offset 4
993    
994 nigel 93 /a**/Ii
995 nigel 41 Failed: nothing to repeat at offset 2
996    
997 nigel 93 /)(/Ii
998 nigel 41 Failed: unmatched parentheses at offset 0
999    
1000     /:(?:/
1001     Failed: missing ) at offset 4
1002    
1003     /(?<%)b/
1004 nigel 63 Failed: unrecognized character after (?< at offset 3
1005 nigel 41
1006     /a(?{)b/
1007 ph10 269 Failed: unrecognized character after (? or (?- at offset 3
1008 nigel 41
1009     /a(?{{})b/
1010 ph10 269 Failed: unrecognized character after (? or (?- at offset 3
1011 nigel 41
1012     /a(?{}})b/
1013 ph10 269 Failed: unrecognized character after (? or (?- at offset 3
1014 nigel 41
1015     /a(?{"{"})b/
1016 ph10 269 Failed: unrecognized character after (? or (?- at offset 3
1017 nigel 41
1018     /a(?{"{"}})b/
1019 ph10 269 Failed: unrecognized character after (? or (?- at offset 3
1020 nigel 41
1021     /(?(1?)a|b)/
1022 nigel 91 Failed: malformed number or name after (?( at offset 4
1023 nigel 41
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 nigel 93 /(a)bc(d)/I
1043 nigel 43 Capturing subpattern count = 2
1044 nigel 41 No options
1045     First char = 'a'
1046 nigel 43 Need char = 'd'
1047 nigel 41 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 ph10 102
1062 nigel 93 /(.{20})/I
1063 nigel 43 Capturing subpattern count = 1
1064 nigel 41 No options
1065     No first char
1066 nigel 43 No need char
1067 nigel 41 abcdefghijklmnopqrstuvwxyz
1068     0: abcdefghijklmnopqrst
1069     1: abcdefghijklmnopqrst
1070     abcdefghijklmnopqrstuvwxyz\C1
1071     0: abcdefghijklmnopqrst
1072     1: abcdefghijklmnopqrst
1073 nigel 91 1C abcdefghijklmnopqrst (20)
1074 nigel 41 abcdefghijklmnopqrstuvwxyz\G1
1075     0: abcdefghijklmnopqrst
1076     1: abcdefghijklmnopqrst
1077     1G abcdefghijklmnopqrst (20)
1078 ph10 102
1079 nigel 93 /(.{15})/I
1080 nigel 43 Capturing subpattern count = 1
1081 nigel 41 No options
1082     No first char
1083 nigel 43 No need char
1084 nigel 41 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 nigel 93 /(.{16})/I
1094 nigel 43 Capturing subpattern count = 1
1095 nigel 41 No options
1096     No first char
1097 nigel 43 No need char
1098 nigel 41 abcdefghijklmnopqrstuvwxyz
1099     0: abcdefghijklmnop
1100     1: abcdefghijklmnop
1101     abcdefghijklmnopqrstuvwxyz\C1\G1\L
1102     0: abcdefghijklmnop
1103     1: abcdefghijklmnop
1104 nigel 91 1C abcdefghijklmnop (16)
1105 nigel 41 1G abcdefghijklmnop (16)
1106     0L abcdefghijklmnop
1107     1L abcdefghijklmnop
1108 ph10 102
1109 nigel 93 /^(a|(bc))de(f)/I
1110 nigel 43 Capturing subpattern count = 3
1111 nigel 41 Options: anchored
1112     No first char
1113 nigel 65 No need char
1114 ph10 102 adef\G1\G2\G3\G4\L
1115 nigel 41 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 ph10 102 bcdef\G1\G2\G3\G4\L
1128 nigel 41 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 ph10 102 adefghijk\C0
1141 nigel 41 0: adef
1142     1: a
1143     2: <unset>
1144     3: f
1145     0C adef (4)
1146 ph10 102
1147 nigel 93 /^abc\00def/I
1148 nigel 43 Capturing subpattern count = 0
1149 nigel 41 Options: anchored
1150     No first char
1151 nigel 65 No need char
1152 ph10 102 abc\00def\L\C0
1153 nigel 41 0: abc\x00def
1154     0C abc (7)
1155     0L abc
1156 ph10 102
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 ph10 162 )?)?)?)?)?)?)?)?)?otherword/I
1160 nigel 43 Capturing subpattern count = 8
1161 ph10 226 Contains explicit CR or LF match
1162 nigel 41 No options
1163     First char = 'w'
1164 nigel 43 Need char = 'd'
1165 nigel 41
1166 ph10 161 /.*X/IDZ
1167 nigel 41 ------------------------------------------------------------------
1168 ph10 192 Bra
1169 ph10 161 Any*
1170     X
1171     Ket
1172     End
1173 nigel 41 ------------------------------------------------------------------
1174 nigel 43 Capturing subpattern count = 0
1175 nigel 41 No options
1176 nigel 91 First char at start or follows newline
1177 nigel 43 Need char = 'X'
1178 nigel 41
1179 ph10 161 /.*X/IDZs
1180 nigel 41 ------------------------------------------------------------------
1181 ph10 192 Bra
1182 ph10 342 AllAny*
1183 ph10 161 X
1184     Ket
1185     End
1186 nigel 41 ------------------------------------------------------------------
1187 nigel 43 Capturing subpattern count = 0
1188 nigel 41 Options: anchored dotall
1189     No first char
1190 nigel 43 Need char = 'X'
1191 nigel 41
1192 ph10 161 /(.*X|^B)/IDZ
1193 nigel 41 ------------------------------------------------------------------
1194 ph10 192 Bra
1195     CBra 1
1196 ph10 161 Any*
1197     X
1198     Alt
1199     ^
1200     B
1201     Ket
1202     Ket
1203     End
1204 nigel 41 ------------------------------------------------------------------
1205 nigel 43 Capturing subpattern count = 1
1206 nigel 41 No options
1207 nigel 91 First char at start or follows newline
1208 nigel 43 No need char
1209 nigel 41
1210 ph10 161 /(.*X|^B)/IDZs
1211 nigel 41 ------------------------------------------------------------------
1212 ph10 192 Bra
1213     CBra 1
1214 ph10 342 AllAny*
1215 ph10 161 X
1216     Alt
1217     ^
1218     B
1219     Ket
1220     Ket
1221     End
1222 nigel 41 ------------------------------------------------------------------
1223 nigel 43 Capturing subpattern count = 1
1224 nigel 41 Options: anchored dotall
1225     No first char
1226 nigel 43 No need char
1227 ph10 102
1228 ph10 161 /(?s)(.*X|^B)/IDZ
1229 nigel 41 ------------------------------------------------------------------
1230 ph10 192 Bra
1231     CBra 1
1232 ph10 342 AllAny*
1233 ph10 161 X
1234     Alt
1235     ^
1236     B
1237     Ket
1238     Ket
1239     End
1240 nigel 41 ------------------------------------------------------------------
1241 nigel 43 Capturing subpattern count = 1
1242 nigel 41 Options: anchored dotall
1243     No first char
1244 nigel 43 No need char
1245 nigel 41
1246 ph10 161 /(?s:.*X|^B)/IDZ
1247 nigel 41 ------------------------------------------------------------------
1248 ph10 192 Bra
1249     Bra
1250 ph10 161 04 Opt
1251 ph10 342 AllAny*
1252 ph10 161 X
1253     Alt
1254     04 Opt
1255     ^
1256     B
1257     Ket
1258     00 Opt
1259     Ket
1260     End
1261 nigel 41 ------------------------------------------------------------------
1262 nigel 43 Capturing subpattern count = 0
1263 ph10 342 Options: anchored
1264     No first char
1265 nigel 43 No need char
1266 nigel 41
1267 nigel 93 /\Biss\B/I+
1268 nigel 43 Capturing subpattern count = 0
1269 nigel 41 No options
1270     First char = 'i'
1271 nigel 43 Need char = 's'
1272 nigel 41 Mississippi
1273     0: iss
1274     0+ issippi
1275    
1276 nigel 93 /\Biss\B/I+P
1277 nigel 41 Mississippi
1278     0: iss
1279     0+ issippi
1280    
1281 nigel 93 /iss/IG+
1282 nigel 43 Capturing subpattern count = 0
1283 nigel 41 No options
1284     First char = 'i'
1285 nigel 43 Need char = 's'
1286 nigel 41 Mississippi
1287     0: iss
1288     0+ issippi
1289     0: iss
1290     0+ ippi
1291    
1292 nigel 93 /\Biss\B/IG+
1293 nigel 43 Capturing subpattern count = 0
1294 nigel 41 No options
1295     First char = 'i'
1296 nigel 43 Need char = 's'
1297 nigel 41 Mississippi
1298     0: iss
1299     0+ issippi
1300    
1301 nigel 93 /\Biss\B/Ig+
1302 nigel 43 Capturing subpattern count = 0
1303 nigel 41 No options
1304     First char = 'i'
1305 nigel 43 Need char = 's'
1306 nigel 41 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 nigel 93 /(?<=[Ms])iss/Ig+
1317 nigel 43 Capturing subpattern count = 0
1318 nigel 41 No options
1319     First char = 'i'
1320 nigel 43 Need char = 's'
1321 nigel 41 Mississippi
1322     0: iss
1323     0+ issippi
1324     0: iss
1325     0+ ippi
1326    
1327 nigel 93 /(?<=[Ms])iss/IG+
1328 nigel 43 Capturing subpattern count = 0
1329 nigel 41 No options
1330     First char = 'i'
1331 nigel 43 Need char = 's'
1332 nigel 41 Mississippi
1333     0: iss
1334     0+ issippi
1335    
1336 nigel 93 /^iss/Ig+
1337 nigel 43 Capturing subpattern count = 0
1338 nigel 41 Options: anchored
1339     No first char
1340 nigel 65 No need char
1341 nigel 41 ississippi
1342     0: iss
1343     0+ issippi
1344 ph10 102
1345 nigel 93 /.*iss/Ig+
1346 nigel 43 Capturing subpattern count = 0
1347 nigel 41 No options
1348 nigel 91 First char at start or follows newline
1349 nigel 43 Need char = 's'
1350 ph10 102 abciss\nxyzisspqr
1351 nigel 41 0: abciss
1352     0+ \x0axyzisspqr
1353     0: xyziss
1354     0+ pqr
1355    
1356 nigel 93 /.i./I+g
1357 nigel 43 Capturing subpattern count = 0
1358 nigel 41 No options
1359     No first char
1360 nigel 43 Need char = 'i'
1361 nigel 41 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 ph10 102 Missouri river\A
1383 nigel 41 0: Mis
1384     0+ souri river
1385    
1386 nigel 93 /^.is/I+g
1387 nigel 43 Capturing subpattern count = 0
1388 nigel 41 Options: anchored
1389     No first char
1390 nigel 65 No need char
1391 nigel 41 Mississippi
1392     0: Mis
1393     0+ sissippi
1394    
1395 nigel 93 /^ab\n/Ig+
1396 nigel 43 Capturing subpattern count = 0
1397 ph10 226 Contains explicit CR or LF match
1398 nigel 41 Options: anchored
1399     No first char
1400 nigel 65 No need char
1401 nigel 41 ab\nab\ncd
1402     0: ab\x0a
1403     0+ ab\x0acd
1404    
1405 nigel 93 /^ab\n/Img+
1406 nigel 43 Capturing subpattern count = 0
1407 ph10 226 Contains explicit CR or LF match
1408 nigel 41 Options: multiline
1409 nigel 91 First char at start or follows newline
1410 nigel 43 Need char = 10
1411 nigel 41 ab\nab\ncd
1412     0: ab\x0a
1413     0+ ab\x0acd
1414     0: ab\x0a
1415     0+ cd
1416    
1417 nigel 93 /abc/I
1418 nigel 43 Capturing subpattern count = 0
1419 nigel 41 No options
1420     First char = 'a'
1421 nigel 43 Need char = 'c'
1422 nigel 41
1423 nigel 93 /abc|bac/I
1424 nigel 43 Capturing subpattern count = 0
1425 nigel 41 No options
1426     No first char
1427 nigel 43 Need char = 'c'
1428 nigel 41
1429 nigel 93 /(abc|bac)/I
1430 nigel 43 Capturing subpattern count = 1
1431 nigel 41 No options
1432     No first char
1433 nigel 43 Need char = 'c'
1434 nigel 41
1435 nigel 93 /(abc|(c|dc))/I
1436 nigel 43 Capturing subpattern count = 2
1437 nigel 41 No options
1438     No first char
1439 nigel 43 Need char = 'c'
1440 nigel 41
1441 nigel 93 /(abc|(d|de)c)/I
1442 nigel 43 Capturing subpattern count = 2
1443 nigel 41 No options
1444     No first char
1445 nigel 43 Need char = 'c'
1446 nigel 41
1447 nigel 93 /a*/I
1448 nigel 43 Capturing subpattern count = 0
1449 nigel 41 No options
1450     No first char
1451 nigel 43 No need char
1452 nigel 41
1453 nigel 93 /a+/I
1454 nigel 43 Capturing subpattern count = 0
1455 nigel 41 No options
1456     First char = 'a'
1457 nigel 43 No need char
1458 nigel 41
1459 nigel 93 /(baa|a+)/I
1460 nigel 43 Capturing subpattern count = 1
1461 nigel 41 No options
1462     No first char
1463 nigel 43 Need char = 'a'
1464 nigel 41
1465 nigel 93 /a{0,3}/I
1466 nigel 43 Capturing subpattern count = 0
1467 nigel 41 No options
1468     No first char
1469 nigel 43 No need char
1470 nigel 41
1471 nigel 93 /baa{3,}/I
1472 nigel 43 Capturing subpattern count = 0
1473 nigel 41 No options
1474     First char = 'b'
1475 nigel 43 Need char = 'a'
1476 nigel 41
1477 nigel 93 /"([^\\"]+|\\.)*"/I
1478 nigel 43 Capturing subpattern count = 1
1479 nigel 41 No options
1480     First char = '"'
1481 nigel 43 Need char = '"'
1482 nigel 41
1483 nigel 93 /(abc|ab[cd])/I
1484 nigel 43 Capturing subpattern count = 1
1485 nigel 41 No options
1486     First char = 'a'
1487 nigel 43 No need char
1488 nigel 41
1489 nigel 93 /(a|.)/I
1490 nigel 43 Capturing subpattern count = 1
1491 nigel 41 No options
1492     No first char
1493 nigel 43 No need char
1494 nigel 41
1495 nigel 93 /a|ba|\w/I
1496 nigel 43 Capturing subpattern count = 0
1497 nigel 41 No options
1498     No first char
1499 nigel 43 No need char
1500 nigel 41
1501 nigel 93 /abc(?=pqr)/I
1502 nigel 43 Capturing subpattern count = 0
1503 nigel 41 No options
1504     First char = 'a'
1505 nigel 43 Need char = 'r'
1506 nigel 41
1507 nigel 93 /...(?<=abc)/I
1508 nigel 43 Capturing subpattern count = 0
1509 nigel 41 No options
1510     No first char
1511 nigel 43 No need char
1512 nigel 41
1513 nigel 93 /abc(?!pqr)/I
1514 nigel 43 Capturing subpattern count = 0
1515 nigel 41 No options
1516     First char = 'a'
1517 nigel 43 Need char = 'c'
1518 nigel 41
1519 nigel 93 /ab./I
1520 nigel 43 Capturing subpattern count = 0
1521 nigel 41 No options
1522     First char = 'a'
1523 nigel 43 Need char = 'b'
1524 nigel 41
1525 nigel 93 /ab[xyz]/I
1526 nigel 43 Capturing subpattern count = 0
1527 nigel 41 No options
1528     First char = 'a'
1529 nigel 43 Need char = 'b'
1530 nigel 41
1531 nigel 93 /abc*/I
1532 nigel 43 Capturing subpattern count = 0
1533 nigel 41 No options
1534     First char = 'a'
1535 nigel 43 Need char = 'b'
1536 nigel 41
1537 nigel 93 /ab.c*/I
1538 nigel 43 Capturing subpattern count = 0
1539 nigel 41 No options
1540     First char = 'a'
1541 nigel 43 Need char = 'b'
1542 nigel 41
1543 nigel 93 /a.c*/I
1544 nigel 43 Capturing subpattern count = 0
1545 nigel 41 No options
1546     First char = 'a'
1547 nigel 43 No need char
1548 nigel 41
1549 nigel 93 /.c*/I
1550 nigel 43 Capturing subpattern count = 0
1551 nigel 41 No options
1552     No first char
1553 nigel 43 No need char
1554 nigel 41
1555 nigel 93 /ac*/I
1556 nigel 43 Capturing subpattern count = 0
1557 nigel 41 No options
1558     First char = 'a'
1559 nigel 43 No need char
1560 nigel 41
1561 nigel 93 /(a.c*|b.c*)/I
1562 nigel 43 Capturing subpattern count = 1
1563 nigel 41 No options
1564     No first char
1565 nigel 43 No need char
1566 nigel 41
1567 nigel 93 /a.c*|aba/I
1568 nigel 43 Capturing subpattern count = 0
1569 nigel 41 No options
1570     First char = 'a'
1571 nigel 43 No need char
1572 nigel 41
1573 nigel 93 /.+a/I
1574 nigel 43 Capturing subpattern count = 0
1575 nigel 41 No options
1576     No first char
1577 nigel 43 Need char = 'a'
1578 nigel 41
1579 nigel 93 /(?=abcda)a.*/I
1580 nigel 43 Capturing subpattern count = 0
1581 nigel 41 No options
1582     First char = 'a'
1583 nigel 63 Need char = 'a'
1584 nigel 41
1585 nigel 93 /(?=a)a.*/I
1586 nigel 43 Capturing subpattern count = 0
1587 nigel 41 No options
1588     First char = 'a'
1589 nigel 43 No need char
1590 nigel 41
1591 nigel 93 /a(b)*/I
1592 nigel 43 Capturing subpattern count = 1
1593 nigel 41 No options
1594     First char = 'a'
1595 nigel 43 No need char
1596 nigel 41
1597 nigel 93 /a\d*/I
1598 nigel 43 Capturing subpattern count = 0
1599 nigel 41 No options
1600     First char = 'a'
1601 nigel 43 No need char
1602 nigel 41
1603 nigel 93 /ab\d*/I
1604 nigel 43 Capturing subpattern count = 0
1605 nigel 41 No options
1606     First char = 'a'
1607 nigel 43 Need char = 'b'
1608 nigel 41
1609 nigel 93 /a(\d)*/I
1610 nigel 43 Capturing subpattern count = 1
1611 nigel 41 No options
1612     First char = 'a'
1613 nigel 43 No need char
1614 nigel 41
1615 nigel 93 /abcde{0,0}/I
1616 nigel 43 Capturing subpattern count = 0
1617 nigel 41 No options
1618     First char = 'a'
1619 nigel 43 Need char = 'd'
1620 nigel 41
1621 nigel 93 /ab\d+/I
1622 nigel 43 Capturing subpattern count = 0
1623 nigel 41 No options
1624     First char = 'a'
1625 nigel 43 Need char = 'b'
1626 nigel 41
1627 ph10 270 /a(?(1)b)(.)/I
1628     Capturing subpattern count = 1
1629 nigel 41 No options
1630     First char = 'a'
1631 nigel 43 No need char
1632 nigel 41
1633 ph10 270 /a(?(1)bag|big)(.)/I
1634     Capturing subpattern count = 1
1635 nigel 41 No options
1636     First char = 'a'
1637 nigel 43 Need char = 'g'
1638 nigel 41
1639 ph10 270 /a(?(1)bag|big)*(.)/I
1640     Capturing subpattern count = 1
1641 nigel 41 No options
1642     First char = 'a'
1643 nigel 43 No need char
1644 nigel 41
1645 ph10 270 /a(?(1)bag|big)+(.)/I
1646     Capturing subpattern count = 1
1647 nigel 41 No options
1648     First char = 'a'
1649 nigel 43 Need char = 'g'
1650 nigel 41
1651 ph10 270 /a(?(1)b..|b..)(.)/I
1652     Capturing subpattern count = 1
1653 nigel 41 No options
1654     First char = 'a'
1655 nigel 43 Need char = 'b'
1656 nigel 41
1657 nigel 93 /ab\d{0}e/I
1658 nigel 43 Capturing subpattern count = 0
1659 nigel 41 No options
1660     First char = 'a'
1661 nigel 43 Need char = 'e'
1662 nigel 41
1663 nigel 93 /a?b?/I
1664 nigel 43 Capturing subpattern count = 0
1665 nigel 41 No options
1666     No first char
1667 nigel 43 No need char
1668 nigel 41 a
1669     0: a
1670     b
1671     0: b
1672     ab
1673     0: ab
1674     \
1675     0:
1676     *** Failers
1677     0:
1678 ph10 102 \N
1679 nigel 41 No match
1680 ph10 102
1681 nigel 93 /|-/I
1682 nigel 43 Capturing subpattern count = 0
1683 nigel 41 No options
1684     No first char
1685 nigel 43 No need char
1686 nigel 41 abcd
1687     0:
1688     -abc
1689     0:
1690     \Nab-c
1691     0: -
1692     *** Failers
1693     0:
1694 ph10 102 \Nabc
1695 nigel 41 No match
1696    
1697 ph10 432 /a*(b+)(z)(z)/P
1698 nigel 41 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 ph10 102
1724     /^.?abcd/IS
1725 nigel 43 Capturing subpattern count = 0
1726     Options: anchored
1727     No first char
1728     Need char = 'd'
1729 ph10 455 Subject length lower bound = 4
1730     No set of starting bytes
1731 nigel 41
1732 nigel 43 /\( # ( 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 nigel 93 /Ix
1740 nigel 43 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 ph10 102 (ab(xy)cd)pqr
1751 nigel 43 0: (ab(xy)cd)
1752 ph10 102 (ab(xycd)pqr
1753 nigel 43 0: (xycd)
1754 ph10 102 () abc ()
1755 nigel 43 0: ()
1756     12(abcde(fsh)xyz(foo(bar))lmno)89
1757     0: (abcde(fsh)xyz(foo(bar))lmno)
1758     *** Failers
1759     No match
1760 ph10 102 abcd
1761 nigel 43 No match
1762     abcd)
1763     No match
1764 ph10 102 (abcd
1765 nigel 43 No match
1766    
1767 nigel 93 /\( ( (?>[^()]+) | (?R) )* \) /Ixg
1768 nigel 43 Capturing subpattern count = 1
1769     Options: extended
1770     First char = '('
1771     Need char = ')'
1772 ph10 102 (ab(xy)cd)pqr
1773 nigel 43 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 nigel 93 /\( (?: (?>[^()]+) | (?R) ) \) /Ix
1782 nigel 43 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 ph10 102 (a(b(c)d)e)
1791 nigel 43 0: (c)
1792 ph10 102 ((ab))
1793 nigel 43 0: ((ab))
1794     *** Failers
1795     No match
1796 ph10 102 ()
1797 nigel 43 No match
1798    
1799 nigel 93 /\( (?: (?>[^()]+) | (?R) )? \) /Ix
1800 nigel 43 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 nigel 93 /\( ( (?>[^()]+) | (?R) )* \) /Ix
1810 nigel 43 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 nigel 93 /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
1819 nigel 43 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 nigel 93 /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
1829 nigel 43 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 nigel 93 /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix
1845 nigel 43 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 nigel 93 /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix
1861 nigel 43 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 nigel 93 /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
1880 nigel 43 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 nigel 93 /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
1890 nigel 43 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 ph10 161 /^[[:alnum:]]/DZ
1906 nigel 43 ------------------------------------------------------------------
1907 ph10 192 Bra
1908 ph10 161 ^
1909     [0-9A-Za-z]
1910     Ket
1911     End
1912 nigel 43 ------------------------------------------------------------------
1913     Capturing subpattern count = 0
1914     Options: anchored
1915     No first char
1916     No need char
1917    
1918 ph10 161 /^[[:^alnum:]]/DZ
1919 nigel 75 ------------------------------------------------------------------
1920 ph10 192 Bra
1921 ph10 161 ^
1922 ph10 265 [\x00-/:-@[-`{-\xff] (neg)
1923 ph10 161 Ket
1924     End
1925 nigel 75 ------------------------------------------------------------------
1926     Capturing subpattern count = 0
1927     Options: anchored
1928     No first char
1929     No need char
1930    
1931 ph10 161 /^[[:alpha:]]/DZ
1932 nigel 43 ------------------------------------------------------------------
1933 ph10 192 Bra
1934 ph10 161 ^
1935     [A-Za-z]
1936     Ket
1937     End
1938 nigel 43 ------------------------------------------------------------------
1939     Capturing subpattern count = 0
1940     Options: anchored
1941     No first char
1942     No need char
1943 nigel 75
1944 ph10 161 /^[[:^alpha:]]/DZ
1945 nigel 75 ------------------------------------------------------------------
1946 ph10 192 Bra
1947 ph10 161 ^
1948 ph10 265 [\x00-@[-`{-\xff] (neg)
1949 ph10 161 Ket
1950     End
1951 nigel 75 ------------------------------------------------------------------
1952     Capturing subpattern count = 0
1953     Options: anchored
1954     No first char
1955     No need char
1956 ph10 102
1957 nigel 87 /[_[:alpha:]]/IS
1958     Capturing subpattern count = 0
1959     No options
1960     No first char
1961     No need char
1962 ph10 455 Subject length lower bound = 1
1963 nigel 87 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 ph10 161 /^[[:ascii:]]/DZ
1967 nigel 43 ------------------------------------------------------------------
1968 ph10 192 Bra
1969 ph10 161 ^
1970     [\x00-\x7f]
1971     Ket
1972     End
1973 nigel 43 ------------------------------------------------------------------
1974     Capturing subpattern count = 0
1975     Options: anchored
1976     No first char
1977     No need char
1978    
1979 ph10 161 /^[[:^ascii:]]/DZ
1980 nigel 75 ------------------------------------------------------------------
1981 ph10 192 Bra
1982 ph10 161 ^
1983 ph10 265 [\x80-\xff] (neg)
1984 ph10 161 Ket
1985     End
1986 nigel 75 ------------------------------------------------------------------
1987     Capturing subpattern count = 0
1988     Options: anchored
1989     No first char
1990     No need char
1991    
1992 ph10 161 /^[[:blank:]]/DZ
1993 nigel 63 ------------------------------------------------------------------
1994 ph10 192 Bra
1995 ph10 161 ^
1996     [\x09 ]
1997     Ket
1998     End
1999 nigel 63 ------------------------------------------------------------------
2000     Capturing subpattern count = 0
2001     Options: anchored
2002     No first char
2003     No need char
2004    
2005 ph10 161 /^[[:^blank:]]/DZ
2006 nigel 87 ------------------------------------------------------------------
2007 ph10 192 Bra
2008 ph10 161 ^
2009 ph10 265 [\x00-\x08\x0a-\x1f!-\xff] (neg)
2010 ph10 161 Ket
2011     End
2012 nigel 87 ------------------------------------------------------------------
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 ph10 226 Contains explicit CR or LF match
2021 nigel 87 No options
2022     No first char
2023     No need char
2024 ph10 455 Subject length lower bound = 1
2025 nigel 87 Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20
2026    
2027 ph10 161 /^[[:cntrl:]]/DZ
2028 nigel 43 ------------------------------------------------------------------
2029 ph10 192 Bra
2030 ph10 161 ^
2031     [\x00-\x1f\x7f]
2032     Ket
2033     End
2034 nigel 43 ------------------------------------------------------------------
2035     Capturing subpattern count = 0
2036     Options: anchored
2037     No first char
2038     No need char
2039    
2040 ph10 161 /^[[:digit:]]/DZ
2041 nigel 43 ------------------------------------------------------------------
2042 ph10 192 Bra
2043 ph10 161 ^
2044     [0-9]
2045     Ket
2046     End
2047 nigel 43 ------------------------------------------------------------------
2048     Capturing subpattern count = 0
2049     Options: anchored
2050     No first char
2051     No need char
2052    
2053 ph10 161 /^[[:graph:]]/DZ
2054 nigel 43 ------------------------------------------------------------------
2055 ph10 192 Bra
2056 ph10 161 ^
2057     [!-~]
2058     Ket
2059     End
2060 nigel 43 ------------------------------------------------------------------
2061     Capturing subpattern count = 0
2062     Options: anchored
2063     No first char
2064     No need char
2065    
2066 ph10 161 /^[[:lower:]]/DZ
2067 nigel 43 ------------------------------------------------------------------
2068 ph10 192 Bra
2069 ph10 161 ^
2070     [a-z]
2071     Ket
2072     End
2073 nigel 43 ------------------------------------------------------------------
2074     Capturing subpattern count = 0
2075     Options: anchored
2076     No first char
2077     No need char
2078    
2079 ph10 161 /^[[:print:]]/DZ
2080 nigel 43 ------------------------------------------------------------------
2081 ph10 192 Bra
2082 ph10 161 ^
2083     [ -~]
2084     Ket
2085     End
2086 nigel 43 ------------------------------------------------------------------
2087     Capturing subpattern count = 0
2088     Options: anchored
2089     No first char
2090     No need char
2091    
2092 ph10 161 /^[[:punct:]]/DZ
2093 nigel 43 ------------------------------------------------------------------
2094 ph10 192 Bra
2095 ph10 161 ^
2096     [!-/:-@[-`{-~]
2097     Ket
2098     End
2099 nigel 43 ------------------------------------------------------------------
2100     Capturing subpattern count = 0
2101     Options: anchored
2102     No first char
2103     No need char
2104    
2105 ph10 161 /^[[:space:]]/DZ
2106 nigel 43 ------------------------------------------------------------------
2107 ph10 192 Bra
2108 ph10 161 ^
2109     [\x09-\x0d ]
2110     Ket
2111     End
2112 nigel 43 ------------------------------------------------------------------
2113     Capturing subpattern count = 0
2114     Options: anchored
2115     No first char
2116     No need char
2117    
2118 ph10 161 /^[[:upper:]]/DZ
2119 nigel 43 ------------------------------------------------------------------
2120 ph10 192 Bra
2121 ph10 161 ^
2122     [A-Z]
2123     Ket
2124     End
2125 nigel 43 ------------------------------------------------------------------
2126     Capturing subpattern count = 0
2127     Options: anchored
2128     No first char
2129     No need char
2130    
2131 ph10 161 /^[[:xdigit:]]/DZ
2132 nigel 43 ------------------------------------------------------------------
2133 ph10 192 Bra
2134 ph10 161 ^
2135     [0-9A-Fa-f]
2136     Ket
2137     End
2138 nigel 43 ------------------------------------------------------------------
2139     Capturing subpattern count = 0
2140     Options: anchored
2141     No first char
2142     No need char
2143    
2144 ph10 161 /^[[:word:]]/DZ
2145 nigel 43 ------------------------------------------------------------------
2146 ph10 192 Bra
2147 ph10 161 ^
2148     [0-9A-Z_a-z]
2149     Ket
2150     End
2151 nigel 43 ------------------------------------------------------------------
2152     Capturing subpattern count = 0
2153     Options: anchored
2154     No first char
2155     No need char
2156    
2157 ph10 161 /^[[:^cntrl:]]/DZ
2158 nigel 43 ------------------------------------------------------------------
2159 ph10 192 Bra
2160 ph10 161 ^
2161 ph10 265 [ -~\x80-\xff] (neg)
2162 ph10 161 Ket
2163     End
2164 nigel 43 ------------------------------------------------------------------
2165     Capturing subpattern count = 0
2166     Options: anchored
2167     No first char
2168     No need char
2169    
2170 ph10 161 /^[12[:^digit:]]/DZ
2171 nigel 43 ------------------------------------------------------------------
2172 ph10 192 Bra
2173 ph10 161 ^
2174 ph10 265 [\x00-/12:-\xff] (neg)
2175 ph10 161 Ket
2176     End
2177 nigel 43 ------------------------------------------------------------------
2178     Capturing subpattern count = 0
2179     Options: anchored
2180     No first char
2181     No need char
2182    
2183 ph10 161 /^[[:^blank:]]/DZ
2184 nigel 63 ------------------------------------------------------------------
2185 ph10 192 Bra
2186 ph10 161 ^
2187 ph10 265 [\x00-\x08\x0a-\x1f!-\xff] (neg)
2188 ph10 161 Ket
2189     End
2190 nigel 63 ------------------------------------------------------------------
2191     Capturing subpattern count = 0
2192     Options: anchored
2193     No first char
2194     No need char
2195    
2196 ph10 161 /[01[:alpha:]%]/DZ
2197 nigel 43 ------------------------------------------------------------------
2198 ph10 192 Bra
2199 ph10 161 [%01A-Za-z]
2200     Ket
2201     End
2202 nigel 43 ------------------------------------------------------------------
2203     Capturing subpattern count = 0
2204     No options
2205     No first char
2206     No need char
2207    
2208 nigel 93 /[[.ch.]]/I
2209 nigel 43 Failed: POSIX collating elements are not supported at offset 1
2210    
2211 nigel 93 /[[=ch=]]/I
2212 nigel 43 Failed: POSIX collating elements are not supported at offset 1
2213    
2214 nigel 93 /[[:rhubarb:]]/I
2215 nigel 43 Failed: unknown POSIX class name at offset 3
2216    
2217 nigel 93 /[[:upper:]]/Ii
2218 nigel 43 Capturing subpattern count = 0
2219     Options: caseless
2220     No first char
2221     No need char
2222     A
2223     0: A
2224 ph10 102 a
2225 nigel 43 0: a
2226 ph10 102
2227 nigel 93 /[[:lower:]]/Ii
2228 nigel 43 Capturing subpattern count = 0
2229     Options: caseless
2230     No first char
2231     No need char
2232     A
2233     0: A
2234 ph10 102 a
2235 nigel 43 0: a
2236    
2237 nigel 93 /((?-i)[[:lower:]])[[:lower:]]/Ii
2238 nigel 43 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 ph10 102 AB
2254 nigel 43 No match
2255    
2256 nigel 93 /[\200-\110]/I
2257 nigel 49 Failed: range out of order in character class at offset 9
2258    
2259 nigel 93 /^(?(0)f|b)oo/I
2260 nigel 91 Failed: invalid condition (?(0) at offset 6
2261 nigel 51
2262 nigel 93 /This one's here because of the large output vector needed/I
2263 nigel 53 Capturing subpattern count = 0
2264     No options
2265     First char = 'T'
2266     Need char = 'd'
2267    
2268 nigel 93 /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\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 nigel 53 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 nigel 93 /This one's here because Perl does this differently and PCRE can't at present/I
2549 nigel 53 Capturing subpattern count = 0
2550     No options
2551     First char = 'T'
2552     Need char = 't'
2553    
2554 nigel 93 /(main(O)?)+/I
2555 nigel 53 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 ph10 102
2567 nigel 93 /These are all cases where Perl does it differently (nested captures)/I
2568 nigel 63 Capturing subpattern count = 1
2569     No options
2570     First char = 'T'
2571     Need char = 's'
2572    
2573 nigel 93 /^(a(b)?)+$/I
2574 nigel 63 Capturing subpattern count = 2
2575     Options: anchored
2576     No first char
2577 nigel 65 No need char
2578 nigel 63 aba
2579     0: aba
2580     1: a
2581     2: b
2582 ph10 102
2583 nigel 93 /^(aa(bb)?)+$/I
2584 nigel 63 Capturing subpattern count = 2
2585     Options: anchored
2586     No first char
2587 nigel 65 No need char
2588 ph10 102 aabbaa
2589 nigel 63 0: aabbaa
2590     1: aa
2591     2: bb
2592 ph10 102
2593 nigel 93 /^(aa|aa(bb))+$/I
2594 nigel 63 Capturing subpattern count = 2
2595     Options: anchored
2596     No first char
2597 nigel 65 No need char
2598 ph10 102 aabbaa
2599 nigel 63 0: aabbaa
2600     1: aa
2601     2: bb
2602 ph10 102
2603 nigel 93 /^(aa(bb)??)+$/I
2604 nigel 63 Capturing subpattern count = 2
2605     Options: anchored
2606     No first char
2607 nigel 65 No need char
2608 ph10 102 aabbaa
2609 nigel 63 0: aabbaa
2610     1: aa
2611     2: bb
2612 ph10 102
2613 nigel 93 /^(?:aa(bb)?)+$/I
2614 nigel 63 Capturing subpattern count = 1
2615     Options: anchored
2616     No first char
2617 nigel 65 No need char
2618 ph10 102 aabbaa
2619 nigel 63 0: aabbaa
2620     1: bb
2621 ph10 102
2622 nigel 93 /^(aa(b(b))?)+$/I
2623 nigel 63 Capturing subpattern count = 3
2624     Options: anchored
2625     No first char
2626 nigel 65 No need char
2627 ph10 102 aabbaa
2628 nigel 63 0: aabbaa
2629     1: aa
2630     2: bb
2631     3: b
2632    
2633 nigel 93 /^(?:aa(b(b))?)+$/I
2634 nigel 63 Capturing subpattern count = 2
2635     Options: anchored
2636     No first char
2637 nigel 65 No need char
2638 ph10 102 aabbaa
2639 nigel 63 0: aabbaa
2640     1: bb
2641     2: b
2642    
2643 nigel 93 /^(?:aa(b(?:b))?)+$/I
2644 nigel 63 Capturing subpattern count = 1
2645     Options: anchored
2646     No first char
2647 nigel 65 No need char
2648 ph10 102 aabbaa
2649 nigel 63 0: aabbaa
2650     1: bb
2651    
2652 nigel 93 /^(?:aa(bb(?:b))?)+$/I
2653 nigel 63 Capturing subpattern count = 1
2654     Options: anchored
2655     No first char
2656 nigel 65 No need char
2657 ph10 102 aabbbaa
2658 nigel 63 0: aabbbaa
2659     1: bbb
2660 ph10 102
2661 nigel 93 /^(?:aa(b(?:bb))?)+$/I
2662 nigel 63 Capturing subpattern count = 1
2663     Options: anchored
2664     No first char
2665 nigel 65 No need char
2666 ph10 102 aabbbaa
2667 nigel 63 0: aabbbaa
2668     1: bbb
2669    
2670 nigel 93 /^(?:aa(?:b(b))?)+$/I
2671 nigel 63 Capturing subpattern count = 1
2672     Options: anchored
2673     No first char
2674 nigel 65 No need char
2675 ph10 102 aabbaa
2676 nigel 63 0: aabbaa
2677     1: b
2678    
2679 nigel 93 /^(?:aa(?:b(bb))?)+$/I
2680 nigel 63 Capturing subpattern count = 1
2681     Options: anchored
2682     No first char
2683 nigel 65 No need char
2684 ph10 102 aabbbaa
2685 nigel 63 0: aabbbaa
2686     1: bb
2687    
2688 nigel 93 /^(aa(b(bb))?)+$/I
2689 nigel 63 Capturing subpattern count = 3
2690     Options: anchored
2691     No first char
2692 nigel 65 No need char
2693 ph10 102 aabbbaa
2694 nigel 63 0: aabbbaa
2695     1: aa
2696     2: bbb
2697     3: bb
2698    
2699 nigel 93 /^(aa(bb(bb))?)+$/I
2700 nigel 63 Capturing subpattern count = 3
2701     Options: anchored
2702     No first char
2703 nigel 65 No need char
2704 ph10 102 aabbbbaa
2705 nigel 63 0: aabbbbaa
2706     1: aa
2707     2: bbbb
2708     3: bb
2709    
2710 ph10 102 /--------------------------------------------------------------------/I
2711 nigel 63 Capturing subpattern count = 0
2712     No options
2713     First char = '-'
2714     Need char = '-'
2715 ph10 102
2716 ph10 162 /#/IxDZ
2717 nigel 63 ------------------------------------------------------------------
2718 ph10 192 Bra
2719 ph10 161 Ket
2720     End
2721 nigel 63 ------------------------------------------------------------------
2722     Capturing subpattern count = 0
2723     Options: extended
2724     No first char
2725     No need char
2726    
2727 ph10 162 /a#/IxDZ
2728 nigel 63 ------------------------------------------------------------------
2729 ph10 192 Bra
2730 ph10 161 a
2731     Ket
2732     End
2733 nigel 63 ------------------------------------------------------------------
2734     Capturing subpattern count = 0
2735     Options: extended
2736     First char = 'a'
2737     No need char
2738    
2739 ph10 161 /[\s]/DZ
2740 nigel 63 ------------------------------------------------------------------
2741 ph10 192 Bra
2742 ph10 161 [\x09\x0a\x0c\x0d ]
2743     Ket
2744     End
2745 nigel 63 ------------------------------------------------------------------
2746     Capturing subpattern count = 0
2747     No options
2748     No first char
2749     No need char
2750    
2751 ph10 161 /[\S]/DZ
2752 nigel 63 ------------------------------------------------------------------
2753 ph10 192 Bra
2754 ph10 264 [\x00-\x08\x0b\x0e-\x1f!-\xff] (neg)
2755 ph10 161 Ket
2756     End
2757 nigel 63 ------------------------------------------------------------------
2758     Capturing subpattern count = 0
2759     No options
2760     No first char
2761     No need char
2762    
2763 ph10 161 /a(?i)b/DZ
2764 nigel 63 ------------------------------------------------------------------
2765 ph10 192 Bra
2766 ph10 161 a
2767     01 Opt
2768     NC b
2769     Ket
2770     End
2771 nigel 63 ------------------------------------------------------------------
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 ph10 102 *** Failers
2781 nigel 63 No match
2782 ph10 102 AB
2783 nigel 63 No match
2784    
2785 ph10 161 /(a(?i)b)/DZ
2786 nigel 63 ------------------------------------------------------------------
2787 ph10 192 Bra
2788     CBra 1
2789 ph10 161 a
2790     01 Opt
2791     NC b
2792     Ket
2793     00 Opt
2794     Ket
2795     End
2796 nigel 63 ------------------------------------------------------------------
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 ph10 102 *** Failers
2808 nigel 63 No match
2809 ph10 102 AB
2810 nigel 63 No match
2811 ph10 102
2812 ph10 161 / (?i)abc/IxDZ
2813 nigel 63 ------------------------------------------------------------------
2814 ph10 192 Bra
2815 ph10 161 NC abc
2816     Ket
2817     End
2818 nigel 63 ------------------------------------------------------------------
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 ph10 161 (?i)abc/IxDZ
2826 nigel 63 ------------------------------------------------------------------
2827 ph10 192 Bra
2828 ph10 161 NC abc
2829     Ket
2830     End
2831 nigel 63 ------------------------------------------------------------------
2832     Capturing subpattern count = 0
2833     Options: caseless extended
2834     First char = 'a' (caseless)
2835     Need char = 'c' (caseless)
2836    
2837 ph10 161 /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
2838 nigel 63 ------------------------------------------------------------------
2839 ph10 192 Bra
2840 ph10 161 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
2841     Ket
2842     End
2843 nigel 63 ------------------------------------------------------------------
2844     Capturing subpattern count = 0
2845     No options
2846     First char = '1'
2847     Need char = '0'
2848    
2849 ph10 161 /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
2850 nigel 63 ------------------------------------------------------------------
2851 ph10 192 Bra
2852 ph10 161 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
2853     Ket
2854     End
2855 nigel 63 ------------------------------------------------------------------
2856     Capturing subpattern count = 0
2857     No options
2858     First char = '1'
2859     Need char = '0'
2860    
2861 ph10 161 /\Q\E/DZ
2862 nigel 63 ------------------------------------------------------------------
2863 ph10 192 Bra
2864 ph10 161 Ket
2865     End
2866 nigel 63 ------------------------------------------------------------------
2867     Capturing subpattern count = 0
2868     No options
2869     No first char
2870     No need char
2871     \
2872     0:
2873    
2874 ph10 161 /\Q\Ex/DZ
2875 nigel 63 ------------------------------------------------------------------
2876 ph10 192 Bra
2877 ph10 161 x
2878     Ket
2879     End
2880 nigel 63 ------------------------------------------------------------------
2881     Capturing subpattern count = 0
2882     No options
2883     First char = 'x'
2884     No need char
2885    
2886 ph10 161 / \Q\E/DZ
2887 nigel 63 ------------------------------------------------------------------
2888 ph10 192 Bra
2889 ph10 161
2890     Ket
2891     End
2892 nigel 63 ------------------------------------------------------------------
2893     Capturing subpattern count = 0
2894     No options
2895     First char = ' '
2896     No need char
2897    
2898 ph10 161 /a\Q\E/DZ
2899 nigel 63 ------------------------------------------------------------------
2900 ph10 192 Bra
2901 ph10 161 a
2902     Ket
2903     End
2904 nigel 63 ------------------------------------------------------------------
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 ph10 102 bac
2914 nigel 63 0: a
2915    
2916 ph10 161 /a\Q\Eb/DZ
2917 nigel 63 ------------------------------------------------------------------
2918 ph10 192 Bra
2919 ph10 161 ab
2920     Ket
2921     End
2922 nigel 63 ------------------------------------------------------------------
2923     Capturing subpattern count = 0
2924     No options
2925     First char = 'a'
2926     Need char = 'b'
2927     abc
2928     0: ab
2929    
2930 ph10 161 /\Q\Eabc/DZ
2931 nigel 63 ------------------------------------------------------------------
2932 ph10 192 Bra
2933 ph10 161 abc
2934     Ket
2935     End
2936 nigel 63 ------------------------------------------------------------------
2937     Capturing subpattern count = 0
2938     No options
2939     First char = 'a'
2940     Need char = 'c'
2941    
2942 ph10 161 /x*+\w/DZ
2943 nigel 63 ------------------------------------------------------------------
2944 ph10 192 Bra
2945 ph10 161 x*+
2946     \w
2947     Ket
2948     End
2949 nigel 63 ------------------------------------------------------------------
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 ph10 102
2959 ph10 161 /x?+/DZ
2960 nigel 63 ------------------------------------------------------------------
2961 ph10 192 Bra
2962 ph10 161 x?+
2963     Ket
2964     End
2965 nigel 63 ------------------------------------------------------------------
2966     Capturing subpattern count = 0
2967     No options
2968     No first char
2969     No need char
2970    
2971 ph10 161 /x++/DZ
2972 nigel 63 ------------------------------------------------------------------
2973 ph10 192 Bra
2974 ph10 161 x++
2975     Ket
2976     End
2977 nigel 63 ------------------------------------------------------------------
2978     Capturing subpattern count = 0
2979     No options
2980     First char = 'x'
2981     No need char
2982    
2983 ph10 161 /x{1,3}+/DZ
2984 nigel 63 ------------------------------------------------------------------
2985 ph10 192 Bra
2986 ph10 161 Once
2987     x
2988     x{0,2}
2989     Ket
2990     Ket
2991     End
2992 nigel 63 ------------------------------------------------------------------
2993     Capturing subpattern count = 0
2994     No options
2995     First char = 'x'
2996     No need char
2997    
2998 ph10 161 /(x)*+/DZ
2999 nigel 63 ------------------------------------------------------------------
3000 ph10 192 Bra
3001 ph10 161 Once
3002     Brazero
3003 ph10 192 CBra 1
3004 ph10 161 x
3005     KetRmax
3006     Ket
3007     Ket
3008     End
3009 nigel 63 ------------------------------------------------------------------
3010     Capturing subpattern count = 1
3011     No options
3012     No first char
3013     No need char
3014    
3015 nigel 93 /^(\w++|\s++)*$/I
3016 nigel 63 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 ph10 102
3028 nigel 93 /(\d++)(\w)/I
3029 nigel 63 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 ph10 102 12345+
3040 nigel 63 No match
3041    
3042 nigel 93 /a++b/I
3043 nigel 63 Capturing subpattern count = 0
3044     No options
3045     First char = 'a'
3046     Need char = 'b'
3047     aaab
3048     0: aaab
3049    
3050 nigel 93 /(a++b)/I
3051 nigel 63 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 nigel 93 /(a++)b/I
3060 nigel 63 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 nigel 93 /([^()]++|\([^()]*\))+/I
3069 nigel 63 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 ph10 102
3077     /\(([^()]++|\([^()]+\))+\)/I
3078 nigel 63 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 ph10 102 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3091 nigel 63 No match
3092    
3093 ph10 161 /(abc){1,3}+/DZ
3094 nigel 63 ------------------------------------------------------------------
3095 ph10 192 Bra
3096 ph10 161 Once
3097 ph10 192 CBra 1
3098 ph10 161 abc
3099     Ket
3100     Brazero
3101 ph10 192 Bra
3102     CBra 1
3103 ph10 161 abc
3104     Ket
3105     Brazero
3106 ph10 192 CBra 1
3107 ph10 161 abc
3108     Ket
3109     Ket
3110     Ket
3111     Ket
3112     End
3113 nigel 63 ------------------------------------------------------------------
3114     Capturing subpattern count = 1
3115     No options
3116     First char = 'a'
3117     Need char = 'c'
3118    
3119 nigel 93 /a+?+/I
3120 nigel 63 Failed: nothing to repeat at offset 3
3121    
3122 nigel 93 /a{2,3}?+b/I
3123 nigel 63 Failed: nothing to repeat at offset 7
3124    
3125 nigel 93 /(?U)a+?+/I
3126 nigel 63 Failed: nothing to repeat at offset 7
3127    
3128 nigel 93 /a{2,3}?+b/IU
3129 nigel 63 Failed: nothing to repeat at offset 7
3130    
3131 ph10 161 /x(?U)a++b/DZ
3132 nigel 63 ------------------------------------------------------------------
3133 ph10 192 Bra
3134 ph10 161 x
3135     a++
3136     b
3137     Ket
3138     End
3139 nigel 63 ------------------------------------------------------------------
3140     Capturing subpattern count = 0
3141     No options
3142     First char = 'x'
3143     Need char = 'b'
3144     xaaaab
3145     0: xaaaab
3146    
3147 ph10 161 /(?U)xa++b/DZ
3148 nigel 63 ------------------------------------------------------------------
3149 ph10 192 Bra
3150 ph10 161 x
3151     a++
3152     b
3153     Ket
3154     End
3155 nigel 63 ------------------------------------------------------------------
3156     Capturing subpattern count = 0
3157     Options: ungreedy
3158     First char = 'x'
3159     Need char = 'b'
3160     xaaaab
3161     0: xaaaab
3162    
3163 ph10 161 /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ
3164 nigel 63 ------------------------------------------------------------------
3165 ph10 192 Bra
3166 ph10 161 ^
3167 ph10 192 CBra 1
3168     CBra 2
3169 ph10 161 a+
3170     Ket
3171 ph10 192 CBra 3
3172 ph10 161 [ab]+?
3173     Ket
3174 ph10 192 CBra 4
3175 ph10 161 [bc]+
3176     Ket
3177 ph10 192 CBra 5
3178 ph10 161 \w*
3179     Ket
3180     Ket
3181     Ket
3182     End
3183 nigel 63 ------------------------------------------------------------------
3184     Capturing subpattern count = 5
3185     Options: anchored
3186     No first char
3187 nigel 65 No need char
3188 nigel 63
3189 ph10 161 /^x(?U)a+b/DZ
3190 nigel 63 ------------------------------------------------------------------
3191 ph10 192 Bra
3192 ph10 161 ^
3193     x
3194     a++
3195     b
3196     Ket
3197     End
3198 nigel 63 ------------------------------------------------------------------
3199     Capturing subpattern count = 0
3200     Options: anchored
3201     No first char
3202     Need char = 'b'
3203    
3204 ph10 161 /^x(?U)(a+)b/DZ
3205 nigel 63 ------------------------------------------------------------------
3206 ph10 192 Bra
3207 ph10 161 ^
3208     x
3209 ph10 192 CBra 1
3210 ph10 161 a+?
3211     Ket
3212     b
3213     Ket
3214     End
3215 nigel 63 ------------------------------------------------------------------
3216     Capturing subpattern count = 1
3217     Options: anchored
3218     No first char
3219     Need char = 'b'
3220    
3221 nigel 93 /[.x.]/I
3222 nigel 63 Failed: POSIX collating elements are not supported at offset 0
3223    
3224 nigel 93 /[=x=]/I
3225 nigel 63 Failed: POSIX collating elements are not supported at offset 0
3226    
3227 nigel 93 /[:x:]/I
3228 nigel 63 Failed: POSIX named classes are supported only within a class at offset 0
3229    
3230 nigel 93 /\l/I
3231 ph10 514 Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3232 nigel 63
3233 nigel 93 /\L/I
3234 ph10 514 Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3235 nigel 63
3236 nigel 93 /\N{name}/I
3237 ph10 514 Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3238 nigel 63
3239 nigel 93 /\u/I
3240 ph10 514 Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3241 nigel 63
3242 nigel 93 /\U/I
3243 ph10 514 Failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1
3244 nigel 63
3245 nigel 93 /[/I
3246 nigel 63 Failed: missing terminating ] for character class at offset 1
3247    
3248 nigel 93 /[a-/I
3249 nigel 63 Failed: missing terminating ] for character class at offset 3
3250    
3251 nigel 93 /[[:space:]/I
3252 nigel 63 Failed: missing terminating ] for character class at offset 10
3253    
3254 ph10 162 /[\s]/IDZ
3255 nigel 63 ------------------------------------------------------------------
3256 ph10 192 Bra
3257 ph10 161 [\x09\x0a\x0c\x0d ]
3258     Ket
3259     End
3260 nigel 63 ------------------------------------------------------------------
3261     Capturing subpattern count = 0
3262     No options
3263     No first char
3264     No need char
3265    
3266 ph10 162 /[[:space:]]/IDZ
3267 nigel 63 ------------------------------------------------------------------
3268 ph10 192 Bra
3269 ph10 161 [\x09-\x0d ]
3270     Ket
3271     End
3272 nigel 63 ------------------------------------------------------------------
3273     Capturing subpattern count = 0
3274     No options
3275     No first char
3276     No need char
3277    
3278 ph10 162 /[[:space:]abcde]/IDZ
3279 nigel 63 ------------------------------------------------------------------
3280 ph10 192 Bra
3281 ph10 161 [\x09-\x0d a-e]
3282     Ket
3283     End
3284 nigel 63 ------------------------------------------------------------------
3285     Capturing subpattern count = 0
3286     No options
3287     No first char
3288     No need char
3289    
3290 nigel 93 /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix
3291 nigel 63 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 ph10 102 <abc<>def>
3304 nigel 63 0: <abc<>def>
3305 ph10 102 <abc<>
3306 nigel 63 0: <>
3307     *** Failers
3308     No match
3309     <abc
3310     No match
3311    
3312 ph10 162 |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 nigel 63 ------------------------------------------------------------------
3314 ph10 192 Bra
3315 ph10 161 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 nigel 63 ------------------------------------------------------------------
3320     Capturing subpattern count = 0
3321     No options
3322     First char = '8'
3323     Need char = 'X'
3324    
3325 ph10 162 |\$\<\.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 nigel 63 ------------------------------------------------------------------
3327 ph10 192 Bra
3328 ph10 161 $<.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 nigel 63 ------------------------------------------------------------------
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 nigel 91 First char at start or follows newline
3349 nigel 63 No need char
3350 ph10 102
3351 nigel 63 /(.*)\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 nigel 91 First char at start or follows newline
3369 nigel 63 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 ph10 102
3382 nigel 63 /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 nigel 93 /(?=abc).xyz/IiI
3395 nigel 63 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 ph10 270 /(?(1)ab|ac)(.)/I
3437     Capturing subpattern count = 1
3438 nigel 63 No options
3439     First char = 'a'
3440     No need char
3441    
3442 ph10 270 /(?(1)abz|acz)(.)/I
3443     Capturing subpattern count = 1
3444 nigel 63 No options
3445     First char = 'a'
3446     Need char = 'z'
3447    
3448 ph10 270 /(?(1)abz)(.)/I
3449     Capturing subpattern count = 1
3450 nigel 63 No options
3451     No first char
3452     No need char
3453    
3454 ph10 270 /(?(1)abz)(1)23/I
3455     Capturing subpattern count = 1
3456 nigel 63 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 ph10 455 Subject length lower bound = 1
3496 nigel 75 Starting byte set: a b
3497 nigel 63
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 ph10 455 Subject length lower bound = 4
3516 nigel 75 Starting byte set: 0 1 2 3 4 5 6 7 8 9
3517 nigel 63
3518     /a^b/I
3519     Capturing subpattern count = 0
3520     No options
3521     First char = 'a'
3522     Need char = 'b'
3523    
3524 nigel 93 /^a/Im
3525 nigel 63 Capturing subpattern count = 0
3526     Options: multiline
3527 nigel 91 First char at start or follows newline
3528 nigel 63 Need char = 'a'
3529     abcde
3530     0: a
3531 ph10 102 xy\nabc
3532 nigel 63 0: a
3533 ph10 102 *** Failers
3534 nigel 63 No match
3535 ph10 102 xyabc
3536 nigel 63 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 ph10 455 Subject length lower bound = 1
3550 nigel 75 Starting byte set: A B a b
3551 nigel 63
3552     /[ab](?i)cd/IS
3553     Capturing subpattern count = 0
3554     No options
3555     No first char
3556     Need char = 'd' (caseless)
3557 ph10 455 Subject length lower bound = 3
3558 nigel 75 Starting byte set: a b
3559 nigel 63
3560 nigel 93 /abc(?C)def/I
3561 nigel 63 Capturing subpattern count = 0
3562     No options
3563     First char = 'a'
3564     Need char = 'f'
3565     abcdef
3566     --->abcdef
3567 nigel 75 0 ^ ^ d
3568 nigel 63 0: abcdef
3569 ph10 102 1234abcdef
3570 nigel 63 --->1234abcdef
3571 nigel 75 0 ^ ^ d
3572 nigel 63 0: abcdef
3573     *** Failers
3574     No match
3575     abcxyz
3576     No match
3577 ph10 102 abcxyzf
3578 nigel 63 --->abcxyzf
3579 nigel 75 0 ^ ^ d
3580 nigel 63 No match
3581    
3582 nigel 93 /abc(?C)de(?C1)f/I
3583 nigel 63 Capturing subpattern count = 0
3584     No options
3585     First char = 'a'
3586     Need char = 'f'
3587     123abcdef
3588     --->123abcdef
3589 nigel 75 0 ^ ^ d
3590     1 ^ ^ f
3591 nigel 63 0: abcdef
3592 ph10 102
3593     /(?C1)\dabc(?C2)def/I
3594 nigel 63 Capturing subpattern count = 0
3595     No options
3596     No first char
3597     Need char = 'f'
3598     1234abcdef
3599     --->1234abcdef
3600 nigel 75 1 ^ \d
3601     1 ^ \d
3602     1 ^ \d
3603     1 ^ \d
3604     2 ^ ^ d
3605 nigel 63 0: 4abcdef
3606     *** Failers
3607     No match
3608 ph10 102 abcdef
3609 nigel 63 --->abcdef
3610 nigel 75 1 ^ \d
3611     1 ^ \d
3612     1 ^ \d
3613     1 ^ \d
3614     1 ^ \d
3615     1 ^ \d
3616 nigel 63 No match
3617 ph10 102
3618 nigel 93 /(?C255)ab/I
3619 nigel 63 Capturing subpattern count = 0
3620     No options
3621     First char = 'a'
3622     Need char = 'b'
3623    
3624 nigel 93 /(?C256)ab/I
3625 nigel 63 Failed: number after (?C is > 255 at offset 6
3626    
3627 ph10 102 /(?Cab)xx/I
3628 nigel 63 Failed: closing ) for (?C expected at offset 3
3629    
3630 nigel 93 /(?C12vr)x/I
3631 nigel 63 Failed: closing ) for (?C expected at offset 5
3632    
3633 nigel 93 /abc(?C)def/I
3634 nigel 63 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 nigel 75 0 ^ ^ d
3643 nigel 63 0: abcdef
3644    
3645 nigel 93 /(abc)(?C)de(?C1)f/I
3646 nigel 63 Capturing subpattern count = 1
3647     No options
3648     First char = 'a'
3649     Need char = 'f'
3650     123abcdef
3651     --->123abcdef
3652 nigel 75 0 ^ ^ d
3653     1 ^ ^ f
3654 nigel 63 0: abcdef
3655     1: abc
3656 ph10 102 123abcdef\C+
3657 nigel 63 Callout 0: last capture = 1
3658     0: <unset>
3659     1: abc
3660     --->123abcdef
3661 nigel 75 ^ ^ d
3662 nigel 63 Callout 1: last capture = 1
3663     0: <unset>
3664     1: abc
3665     --->123abcdef
3666 nigel 75 ^ ^ f
3667 nigel 63 0: abcdef
3668     1: abc
3669 ph10 102 123abcdef\C-
3670 nigel 63 0: abcdef
3671     1: abc
3672     *** Failers
3673     No match
3674 ph10 102 123abcdef\C!1
3675 nigel 63 --->123abcdef
3676 nigel 75 0 ^ ^ d
3677     1 ^ ^ f
3678 nigel 63 No match
3679 ph10 102
3680 nigel 93 /(?C0)(abc(?C1))*/I
3681 nigel 63 Capturing subpattern count = 1
3682     No options
3683     No first char
3684     No need char
3685     abcabcabc
3686     --->abcabcabc
3687 nigel 75 0 ^ (abc(?C1))*
3688     1 ^ ^ )
3689     1 ^ ^ )
3690     1 ^ ^ )
3691 nigel 63 0: abcabcabc
3692     1: abc
3693 ph10 102 abcabc\C!1!3
3694 nigel 63 --->abcabc
3695 nigel 75 0 ^ (abc(?C1))*
3696     1 ^ ^ )
3697     1 ^ ^ )
3698 nigel 63 0: abcabc
3699     1: abc
3700     *** Failers
3701     --->*** Failers
3702 nigel 75 0 ^ (abc(?C1))*
3703 nigel 63 0:
3704 ph10 102 abcabcabc\C!1!3
3705 nigel 63 --->abcabcabc
3706 nigel 75 0 ^ (abc(?C1))*
3707     1 ^ ^ )
3708     1 ^ ^ )
3709     1 ^ ^ )
3710 nigel 63 0: abcabc
3711     1: abc
3712    
3713 nigel 93 /(\d{3}(?C))*/I
3714 nigel 63 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 nigel 75 ^ ^ )
3723 nigel 63 0: 123
3724     1: 123
3725     123456\C+
3726     Callout 0: last capture = -1
3727     0: <unset>
3728     --->123456
3729 nigel 75 ^ ^ )
3730 nigel 63 Callout 0: last capture = 1
3731     0: <unset>
3732     1: 123
3733     --->123456
3734 nigel 75 ^ ^ )
3735 nigel 63 0: 123456
3736     1: 456
3737 ph10 102 123456789\C+
3738 nigel 63 Callout 0: last capture = -1
3739     0: <unset>
3740     --->123456789
3741 nigel 75 ^ ^ )
3742 nigel 63 Callout 0: last capture = 1
3743     0: <unset>
3744     1: 123
3745     --->123456789
3746 nigel 75 ^ ^ )
3747 nigel 63 Callout 0: last capture = 1
3748     0: <unset>
3749     1: 456
3750     --->123456789
3751 nigel 75 ^ ^ )
3752 nigel 63 0: 123456789
3753     1: 789
3754    
3755 nigel 93 /((xyz)(?C)p|(?C1)xyzabc)/I
3756 nigel 63 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 nigel 75 ^ ^ p
3767 nigel 63 Callout 1: last capture = -1
3768     0: <unset>
3769     --->xyzabc
3770 nigel 75 ^ x
3771 nigel 63 0: xyzabc
3772     1: xyzabc
3773    
3774 nigel 93 /(X)((xyz)(?C)p|(?C1)xyzabc)/I
3775 nigel 63 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 nigel 75 ^ ^ p
3787 nigel 63 Callout 1: last capture = 1
3788     0: <unset>
3789     1: X
3790     --->Xxyzabc
3791 nigel 75 ^^ x
3792 nigel 63 0: Xxyzabc
3793     1: X
3794     2: xyzabc
3795    
3796 nigel 93 /(?=(abc))(?C)abcdef/I
3797 nigel 63 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 nigel 75 ^ a
3807 nigel 63 0: abcdef
3808     1: abc
3809 ph10 102
3810 nigel 93 /(?!(abc)(?C1)d)(?C2)abcxyz/I
3811 nigel 63 Capturing subpattern count = 1
3812     No options
3813     First char = 'a'
3814     Need char = 'z'
3815 ph10 102 abcxyz\C+
3816 nigel 63 Callout 1: last capture = 1
3817     0: <unset>
3818     1: abc
3819     --->abcxyz
3820 nigel 75 ^ ^ d
3821 nigel 63 Callout 2: last capture = -1
3822     0: <unset>
3823     --->abcxyz
3824 nigel 75 ^ a
3825 nigel 63 0: abcxyz
3826    
3827 nigel 93 /(?<=(abc)(?C))xyz/I
3828 nigel 63 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 nigel 75 ^ )
3838 nigel 63 0: xyz
3839     1: abc
3840 ph10 102
3841 nigel 93 /a(b+)(c*)(?C1)/I
3842 nigel 77 Capturing subpattern count = 2
3843     No options