Annotation of embedaddon/pcre/testdata/testinput2, revision 1.1.1.1
1.1 misho 1: /-- This set of tests is not Perl-compatible. It checks on special features
2: of PCRE's API, error diagnostics, and the compiled code of some patterns.
3: It also checks the non-Perl syntax the PCRE supports (Python, .NET,
4: Oniguruma). Finally, there are some tests where PCRE and Perl differ,
5: either because PCRE can't be compatible, or there is a possible Perl
6: bug.
7:
8: NOTE: This is a non-UTF-8 set of tests. When UTF-8 is needed, use test
9: 5, and if Unicode Property Support is needed, use test 13. --/
10:
11: /-- Originally, the Perl >= 5.10 things were in here too, but now I have
12: separated many (most?) of them out into test 11. However, there may still
13: be some that were overlooked. --/
14:
15: /(a)b|/I
16:
17: /abc/I
18: abc
19: defabc
20: \Aabc
21: *** Failers
22: \Adefabc
23: ABC
24:
25: /^abc/I
26: abc
27: \Aabc
28: *** Failers
29: defabc
30: \Adefabc
31:
32: /a+bc/I
33:
34: /a*bc/I
35:
36: /a{3}bc/I
37:
38: /(abc|a+z)/I
39:
40: /^abc$/I
41: abc
42: *** Failers
43: def\nabc
44:
45: /ab\idef/X
46:
47: /(?X)ab\idef/X
48:
49: /x{5,4}/
50:
51: /z{65536}/
52:
53: /[abcd/
54:
55: /(?X)[\B]/
56:
57: /(?X)[\R]/
58:
59: /(?X)[\X]/
60:
61: /[\B]/BZ
62:
63: /[\R]/BZ
64:
65: /[\X]/BZ
66:
67: /[z-a]/
68:
69: /^*/
70:
71: /(abc/
72:
73: /(?# abc/
74:
75: /(?z)abc/
76:
77: /.*b/I
78:
79: /.*?b/I
80:
81: /cat|dog|elephant/I
82: this sentence eventually mentions a cat
83: this sentences rambles on and on for a while and then reaches elephant
84:
85: /cat|dog|elephant/IS
86: this sentence eventually mentions a cat
87: this sentences rambles on and on for a while and then reaches elephant
88:
89: /cat|dog|elephant/IiS
90: this sentence eventually mentions a CAT cat
91: this sentences rambles on and on for a while to elephant ElePhant
92:
93: /a|[bcd]/IS
94:
95: /(a|[^\dZ])/IS
96:
97: /(a|b)*[\s]/IS
98:
99: /(ab\2)/
100:
101: /{4,5}abc/
102:
103: /(a)(b)(c)\2/I
104: abcb
105: \O0abcb
106: \O3abcb
107: \O6abcb
108: \O9abcb
109: \O12abcb
110:
111: /(a)bc|(a)(b)\2/I
112: abc
113: \O0abc
114: \O3abc
115: \O6abc
116: aba
117: \O0aba
118: \O3aba
119: \O6aba
120: \O9aba
121: \O12aba
122:
123: /abc$/IE
124: abc
125: *** Failers
126: abc\n
127: abc\ndef
128:
129: /(a)(b)(c)(d)(e)\6/
130:
131: /the quick brown fox/I
132: the quick brown fox
133: this is a line with the quick brown fox
134:
135: /the quick brown fox/IA
136: the quick brown fox
137: *** Failers
138: this is a line with the quick brown fox
139:
140: /ab(?z)cd/
141:
142: /^abc|def/I
143: abcdef
144: abcdef\B
145:
146: /.*((abc)$|(def))/I
147: defabc
148: \Zdefabc
149:
150: /abc/P
151: abc
152: *** Failers
153:
154: /^abc|def/P
155: abcdef
156: abcdef\B
157:
158: /.*((abc)$|(def))/P
159: defabc
160: \Zdefabc
161:
162: /the quick brown fox/P
163: the quick brown fox
164: *** Failers
165: The Quick Brown Fox
166:
167: /the quick brown fox/Pi
168: the quick brown fox
169: The Quick Brown Fox
170:
171: /abc.def/P
172: *** Failers
173: abc\ndef
174:
175: /abc$/P
176: abc
177: abc\n
178:
179: /(abc)\2/P
180:
181: /(abc\1)/P
182: abc
183:
184: /)/
185:
186: /a[]b/
187:
188: /[^aeiou ]{3,}/I
189: co-processors, and for
190:
191: /<.*>/I
192: abc<def>ghi<klm>nop
193:
194: /<.*?>/I
195: abc<def>ghi<klm>nop
196:
197: /<.*>/IU
198: abc<def>ghi<klm>nop
199:
200: /(?U)<.*>/I
201: abc<def>ghi<klm>nop
202:
203: /<.*?>/IU
204: abc<def>ghi<klm>nop
205:
206: /={3,}/IU
207: abc========def
208:
209: /(?U)={3,}?/I
210: abc========def
211:
212: /(?<!bar|cattle)foo/I
213: foo
214: catfoo
215: *** Failers
216: the barfoo
217: and cattlefoo
218:
219: /(?<=a+)b/
220:
221: /(?<=aaa|b{0,3})b/
222:
223: /(?<!(foo)a\1)bar/
224:
225: /(?i)abc/I
226:
227: /(a|(?m)a)/I
228:
229: /(?i)^1234/I
230:
231: /(^b|(?i)^d)/I
232:
233: /(?s).*/I
234:
235: /[abcd]/IS
236:
237: /(?i)[abcd]/IS
238:
239: /(?m)[xy]|(b|c)/IS
240:
241: /(^a|^b)/Im
242:
243: /(?i)(^a|^b)/Im
244:
245: /(a)(?(1)a|b|c)/
246:
247: /(?(?=a)a|b|c)/
248:
249: /(?(1a)/
250:
251: /(?(1a))/
252:
253: /(?(?i))/
254:
255: /(?(abc))/
256:
257: /(?(?<ab))/
258:
259: /((?s)blah)\s+\1/I
260:
261: /((?i)blah)\s+\1/I
262:
263: /((?i)b)/IDZS
264:
265: /(a*b|(?i:c*(?-i)d))/IS
266:
267: /a$/I
268: a
269: a\n
270: *** Failers
271: \Za
272: \Za\n
273:
274: /a$/Im
275: a
276: a\n
277: \Za\n
278: *** Failers
279: \Za
280:
281: /\Aabc/Im
282:
283: /^abc/Im
284:
285: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/I
286: aaaaabbbbbcccccdef
287:
288: /(?<=foo)[ab]/IS
289:
290: /(?<!foo)(alpha|omega)/IS
291:
292: /(?!alphabet)[ab]/IS
293:
294: /(?<=foo\n)^bar/Im
295: foo\nbarbar
296: ***Failers
297: rhubarb
298: barbell
299: abc\nbarton
300:
301: /^(?<=foo\n)bar/Im
302: foo\nbarbar
303: ***Failers
304: rhubarb
305: barbell
306: abc\nbarton
307:
308: /(?>^abc)/Im
309: abc
310: def\nabc
311: *** Failers
312: defabc
313:
314: /(?<=ab(c+)d)ef/
315:
316: /(?<=ab(?<=c+)d)ef/
317:
318: /(?<=ab(c|de)f)g/
319:
320: /The next three are in testinput2 because they have variable length branches/
321:
322: /(?<=bullock|donkey)-cart/I
323: the bullock-cart
324: a donkey-cart race
325: *** Failers
326: cart
327: horse-and-cart
328:
329: /(?<=ab(?i)x|y|z)/I
330:
331: /(?>.*)(?<=(abcd)|(xyz))/I
332: alphabetabcd
333: endingxyz
334:
335: /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I
336: abxyZZ
337: abXyZZ
338: ZZZ
339: zZZ
340: bZZ
341: BZZ
342: *** Failers
343: ZZ
344: abXYZZ
345: zzz
346: bzz
347:
348: /(?<!(foo)a)bar/I
349: bar
350: foobbar
351: *** Failers
352: fooabar
353:
354: /This one is here because Perl 5.005_02 doesn't fail it/I
355:
356: /^(a)?(?(1)a|b)+$/I
357: *** Failers
358: a
359:
360: /This one is here because Perl behaves differently; see also the following/I
361:
362: /^(a\1?){4}$/I
363: aaaa
364: aaaaaa
365:
366: /Perl does not fail these two for the final subjects. Neither did PCRE until/
367: /release 8.01. The problem is in backtracking into a subpattern that contains/
368: /a recursive reference to itself. PCRE has now made these into atomic patterns./
369:
370: /^(xa|=?\1a){2}$/
371: xa=xaa
372: ** Failers
373: xa=xaaa
374:
375: /^(xa|=?\1a)+$/
376: xa=xaa
377: ** Failers
378: xa=xaaa
379:
380: /These are syntax tests from Perl 5.005/I
381:
382: /a[b-a]/
383:
384: /a[]b/
385:
386: /a[/
387:
388: /*a/
389:
390: /(*)b/
391:
392: /abc)/
393:
394: /(abc/
395:
396: /a**/
397:
398: /)(/
399:
400: /\1/
401:
402: /\2/
403:
404: /(a)|\2/
405:
406: /a[b-a]/Ii
407:
408: /a[]b/Ii
409:
410: /a[/Ii
411:
412: /*a/Ii
413:
414: /(*)b/Ii
415:
416: /abc)/Ii
417:
418: /(abc/Ii
419:
420: /a**/Ii
421:
422: /)(/Ii
423:
424: /:(?:/
425:
426: /(?<%)b/
427:
428: /a(?{)b/
429:
430: /a(?{{})b/
431:
432: /a(?{}})b/
433:
434: /a(?{"{"})b/
435:
436: /a(?{"{"}})b/
437:
438: /(?(1?)a|b)/
439:
440: /[a[:xyz:/
441:
442: /(?<=x+)y/
443:
444: /a{37,17}/
445:
446: /abc/\
447:
448: /abc/\P
449:
450: /abc/\i
451:
452: /(a)bc(d)/I
453: abcd
454: abcd\C2
455: abcd\C5
456:
457: /(.{20})/I
458: abcdefghijklmnopqrstuvwxyz
459: abcdefghijklmnopqrstuvwxyz\C1
460: abcdefghijklmnopqrstuvwxyz\G1
461:
462: /(.{15})/I
463: abcdefghijklmnopqrstuvwxyz
464: abcdefghijklmnopqrstuvwxyz\C1\G1
465:
466: /(.{16})/I
467: abcdefghijklmnopqrstuvwxyz
468: abcdefghijklmnopqrstuvwxyz\C1\G1\L
469:
470: /^(a|(bc))de(f)/I
471: adef\G1\G2\G3\G4\L
472: bcdef\G1\G2\G3\G4\L
473: adefghijk\C0
474:
475: /^abc\00def/I
476: abc\00def\L\C0
477:
478: /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
479: )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
480: )?)?)?)?)?)?)?)?)?otherword/I
481:
482: /.*X/IDZ
483:
484: /.*X/IDZs
485:
486: /(.*X|^B)/IDZ
487:
488: /(.*X|^B)/IDZs
489:
490: /(?s)(.*X|^B)/IDZ
491:
492: /(?s:.*X|^B)/IDZ
493:
494: /\Biss\B/I+
495: Mississippi
496:
497: /\Biss\B/I+P
498: Mississippi
499:
500: /iss/IG+
501: Mississippi
502:
503: /\Biss\B/IG+
504: Mississippi
505:
506: /\Biss\B/Ig+
507: Mississippi
508: *** Failers
509: Mississippi\A
510:
511: /(?<=[Ms])iss/Ig+
512: Mississippi
513:
514: /(?<=[Ms])iss/IG+
515: Mississippi
516:
517: /^iss/Ig+
518: ississippi
519:
520: /.*iss/Ig+
521: abciss\nxyzisspqr
522:
523: /.i./I+g
524: Mississippi
525: Mississippi\A
526: Missouri river
527: Missouri river\A
528:
529: /^.is/I+g
530: Mississippi
531:
532: /^ab\n/Ig+
533: ab\nab\ncd
534:
535: /^ab\n/Img+
536: ab\nab\ncd
537:
538: /abc/I
539:
540: /abc|bac/I
541:
542: /(abc|bac)/I
543:
544: /(abc|(c|dc))/I
545:
546: /(abc|(d|de)c)/I
547:
548: /a*/I
549:
550: /a+/I
551:
552: /(baa|a+)/I
553:
554: /a{0,3}/I
555:
556: /baa{3,}/I
557:
558: /"([^\\"]+|\\.)*"/I
559:
560: /(abc|ab[cd])/I
561:
562: /(a|.)/I
563:
564: /a|ba|\w/I
565:
566: /abc(?=pqr)/I
567:
568: /...(?<=abc)/I
569:
570: /abc(?!pqr)/I
571:
572: /ab./I
573:
574: /ab[xyz]/I
575:
576: /abc*/I
577:
578: /ab.c*/I
579:
580: /a.c*/I
581:
582: /.c*/I
583:
584: /ac*/I
585:
586: /(a.c*|b.c*)/I
587:
588: /a.c*|aba/I
589:
590: /.+a/I
591:
592: /(?=abcda)a.*/I
593:
594: /(?=a)a.*/I
595:
596: /a(b)*/I
597:
598: /a\d*/I
599:
600: /ab\d*/I
601:
602: /a(\d)*/I
603:
604: /abcde{0,0}/I
605:
606: /ab\d+/I
607:
608: /a(?(1)b)(.)/I
609:
610: /a(?(1)bag|big)(.)/I
611:
612: /a(?(1)bag|big)*(.)/I
613:
614: /a(?(1)bag|big)+(.)/I
615:
616: /a(?(1)b..|b..)(.)/I
617:
618: /ab\d{0}e/I
619:
620: /a?b?/I
621: a
622: b
623: ab
624: \
625: *** Failers
626: \N
627:
628: /|-/I
629: abcd
630: -abc
631: \Nab-c
632: *** Failers
633: \Nabc
634:
635: /a*(b+)(z)(z)/P
636: aaaabbbbzzzz
637: aaaabbbbzzzz\O0
638: aaaabbbbzzzz\O1
639: aaaabbbbzzzz\O2
640: aaaabbbbzzzz\O3
641: aaaabbbbzzzz\O4
642: aaaabbbbzzzz\O5
643:
644: /^.?abcd/IS
645:
646: /\( # ( at start
647: (?: # Non-capturing bracket
648: (?>[^()]+) # Either a sequence of non-brackets (no backtracking)
649: | # Or
650: (?R) # Recurse - i.e. nested bracketed string
651: )* # Zero or more contents
652: \) # Closing )
653: /Ix
654: (abcd)
655: (abcd)xyz
656: xyz(abcd)
657: (ab(xy)cd)pqr
658: (ab(xycd)pqr
659: () abc ()
660: 12(abcde(fsh)xyz(foo(bar))lmno)89
661: *** Failers
662: abcd
663: abcd)
664: (abcd
665:
666: /\( ( (?>[^()]+) | (?R) )* \) /Ixg
667: (ab(xy)cd)pqr
668: 1(abcd)(x(y)z)pqr
669:
670: /\( (?: (?>[^()]+) | (?R) ) \) /Ix
671: (abcd)
672: (ab(xy)cd)
673: (a(b(c)d)e)
674: ((ab))
675: *** Failers
676: ()
677:
678: /\( (?: (?>[^()]+) | (?R) )? \) /Ix
679: ()
680: 12(abcde(fsh)xyz(foo(bar))lmno)89
681:
682: /\( ( (?>[^()]+) | (?R) )* \) /Ix
683: (ab(xy)cd)
684:
685: /\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix
686: (ab(xy)cd)
687:
688: /\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix
689: (ab(xy)cd)
690: (123ab(xy)cd)
691:
692: /\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix
693: (ab(xy)cd)
694: (123ab(xy)cd)
695:
696: /\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix
697: (ab(xy)cd)
698:
699: /\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix
700: (abcd(xyz<p>qrs)123)
701:
702: /\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix
703: (ab(cd)ef)
704: (ab(cd(ef)gh)ij)
705:
706: /^[[:alnum:]]/DZ
707:
708: /^[[:^alnum:]]/DZ
709:
710: /^[[:alpha:]]/DZ
711:
712: /^[[:^alpha:]]/DZ
713:
714: /[_[:alpha:]]/IS
715:
716: /^[[:ascii:]]/DZ
717:
718: /^[[:^ascii:]]/DZ
719:
720: /^[[:blank:]]/DZ
721:
722: /^[[:^blank:]]/DZ
723:
724: /[\n\x0b\x0c\x0d[:blank:]]/IS
725:
726: /^[[:cntrl:]]/DZ
727:
728: /^[[:digit:]]/DZ
729:
730: /^[[:graph:]]/DZ
731:
732: /^[[:lower:]]/DZ
733:
734: /^[[:print:]]/DZ
735:
736: /^[[:punct:]]/DZ
737:
738: /^[[:space:]]/DZ
739:
740: /^[[:upper:]]/DZ
741:
742: /^[[:xdigit:]]/DZ
743:
744: /^[[:word:]]/DZ
745:
746: /^[[:^cntrl:]]/DZ
747:
748: /^[12[:^digit:]]/DZ
749:
750: /^[[:^blank:]]/DZ
751:
752: /[01[:alpha:]%]/DZ
753:
754: /[[.ch.]]/I
755:
756: /[[=ch=]]/I
757:
758: /[[:rhubarb:]]/I
759:
760: /[[:upper:]]/Ii
761: A
762: a
763:
764: /[[:lower:]]/Ii
765: A
766: a
767:
768: /((?-i)[[:lower:]])[[:lower:]]/Ii
769: ab
770: aB
771: *** Failers
772: Ab
773: AB
774:
775: /[\200-\110]/I
776:
777: /^(?(0)f|b)oo/I
778:
779: /This one's here because of the large output vector needed/I
780:
781: /(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\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
782: \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
783:
784: /This one's here because Perl does this differently and PCRE can't at present/I
785:
786: /(main(O)?)+/I
787: mainmain
788: mainOmain
789:
790: /These are all cases where Perl does it differently (nested captures)/I
791:
792: /^(a(b)?)+$/I
793: aba
794:
795: /^(aa(bb)?)+$/I
796: aabbaa
797:
798: /^(aa|aa(bb))+$/I
799: aabbaa
800:
801: /^(aa(bb)??)+$/I
802: aabbaa
803:
804: /^(?:aa(bb)?)+$/I
805: aabbaa
806:
807: /^(aa(b(b))?)+$/I
808: aabbaa
809:
810: /^(?:aa(b(b))?)+$/I
811: aabbaa
812:
813: /^(?:aa(b(?:b))?)+$/I
814: aabbaa
815:
816: /^(?:aa(bb(?:b))?)+$/I
817: aabbbaa
818:
819: /^(?:aa(b(?:bb))?)+$/I
820: aabbbaa
821:
822: /^(?:aa(?:b(b))?)+$/I
823: aabbaa
824:
825: /^(?:aa(?:b(bb))?)+$/I
826: aabbbaa
827:
828: /^(aa(b(bb))?)+$/I
829: aabbbaa
830:
831: /^(aa(bb(bb))?)+$/I
832: aabbbbaa
833:
834: /--------------------------------------------------------------------/I
835:
836: /#/IxDZ
837:
838: /a#/IxDZ
839:
840: /[\s]/DZ
841:
842: /[\S]/DZ
843:
844: /a(?i)b/DZ
845: ab
846: aB
847: *** Failers
848: AB
849:
850: /(a(?i)b)/DZ
851: ab
852: aB
853: *** Failers
854: AB
855:
856: / (?i)abc/IxDZ
857:
858: /#this is a comment
859: (?i)abc/IxDZ
860:
861: /123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
862:
863: /\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ
864:
865: /\Q\E/DZ
866: \
867:
868: /\Q\Ex/DZ
869:
870: / \Q\E/DZ
871:
872: /a\Q\E/DZ
873: abc
874: bca
875: bac
876:
877: /a\Q\Eb/DZ
878: abc
879:
880: /\Q\Eabc/DZ
881:
882: /x*+\w/DZ
883: *** Failers
884: xxxxx
885:
886: /x?+/DZ
887:
888: /x++/DZ
889:
890: /x{1,3}+/DZ
891:
892: /(x)*+/DZ
893:
894: /^(\w++|\s++)*$/I
895: now is the time for all good men to come to the aid of the party
896: *** Failers
897: this is not a line with only words and spaces!
898:
899: /(\d++)(\w)/I
900: 12345a
901: *** Failers
902: 12345+
903:
904: /a++b/I
905: aaab
906:
907: /(a++b)/I
908: aaab
909:
910: /(a++)b/I
911: aaab
912:
913: /([^()]++|\([^()]*\))+/I
914: ((abc(ade)ufh()()x
915:
916: /\(([^()]++|\([^()]+\))+\)/I
917: (abc)
918: (abc(def)xyz)
919: *** Failers
920: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
921:
922: /(abc){1,3}+/DZ
923:
924: /a+?+/I
925:
926: /a{2,3}?+b/I
927:
928: /(?U)a+?+/I
929:
930: /a{2,3}?+b/IU
931:
932: /x(?U)a++b/DZ
933: xaaaab
934:
935: /(?U)xa++b/DZ
936: xaaaab
937:
938: /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ
939:
940: /^x(?U)a+b/DZ
941:
942: /^x(?U)(a+)b/DZ
943:
944: /[.x.]/I
945:
946: /[=x=]/I
947:
948: /[:x:]/I
949:
950: /\l/I
951:
952: /\L/I
953:
954: /\N{name}/I
955:
956: /\u/I
957:
958: /\U/I
959:
960: /[/I
961:
962: /[a-/I
963:
964: /[[:space:]/I
965:
966: /[\s]/IDZ
967:
968: /[[:space:]]/IDZ
969:
970: /[[:space:]abcde]/IDZ
971:
972: /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix
973: <>
974: <abcd>
975: <abc <123> hij>
976: <abc <def> hij>
977: <abc<>def>
978: <abc<>
979: *** Failers
980: <abc
981:
982: |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
983:
984: |\$\<\.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
985:
986: /(.*)\d+\1/I
987:
988: /(.*)\d+/I
989:
990: /(.*)\d+\1/Is
991:
992: /(.*)\d+/Is
993:
994: /(.*(xyz))\d+\2/I
995:
996: /((.*))\d+\1/I
997: abc123bc
998:
999: /a[b]/I
1000:
1001: /(?=a).*/I
1002:
1003: /(?=abc).xyz/IiI
1004:
1005: /(?=abc)(?i).xyz/I
1006:
1007: /(?=a)(?=b)/I
1008:
1009: /(?=.)a/I
1010:
1011: /((?=abcda)a)/I
1012:
1013: /((?=abcda)ab)/I
1014:
1015: /()a/I
1016:
1017: /(?(1)ab|ac)(.)/I
1018:
1019: /(?(1)abz|acz)(.)/I
1020:
1021: /(?(1)abz)(.)/I
1022:
1023: /(?(1)abz)(1)23/I
1024:
1025: /(a)+/I
1026:
1027: /(a){2,3}/I
1028:
1029: /(a)*/I
1030:
1031: /[a]/I
1032:
1033: /[ab]/I
1034:
1035: /[ab]/IS
1036:
1037: /[^a]/I
1038:
1039: /\d456/I
1040:
1041: /\d456/IS
1042:
1043: /a^b/I
1044:
1045: /^a/Im
1046: abcde
1047: xy\nabc
1048: *** Failers
1049: xyabc
1050:
1051: /c|abc/I
1052:
1053: /(?i)[ab]/IS
1054:
1055: /[ab](?i)cd/IS
1056:
1057: /abc(?C)def/I
1058: abcdef
1059: 1234abcdef
1060: *** Failers
1061: abcxyz
1062: abcxyzf
1063:
1064: /abc(?C)de(?C1)f/I
1065: 123abcdef
1066:
1067: /(?C1)\dabc(?C2)def/IS
1068: 1234abcdef
1069: *** Failers
1070: abcdef
1071:
1072: /(?C1)\dabc(?C2)def/ISS
1073: 1234abcdef
1074: *** Failers
1075: abcdef
1076:
1077: /(?C255)ab/I
1078:
1079: /(?C256)ab/I
1080:
1081: /(?Cab)xx/I
1082:
1083: /(?C12vr)x/I
1084:
1085: /abc(?C)def/I
1086: *** Failers
1087: \x83\x0\x61bcdef
1088:
1089: /(abc)(?C)de(?C1)f/I
1090: 123abcdef
1091: 123abcdef\C+
1092: 123abcdef\C-
1093: *** Failers
1094: 123abcdef\C!1
1095:
1096: /(?C0)(abc(?C1))*/I
1097: abcabcabc
1098: abcabc\C!1!3
1099: *** Failers
1100: abcabcabc\C!1!3
1101:
1102: /(\d{3}(?C))*/I
1103: 123\C+
1104: 123456\C+
1105: 123456789\C+
1106:
1107: /((xyz)(?C)p|(?C1)xyzabc)/I
1108: xyzabc\C+
1109:
1110: /(X)((xyz)(?C)p|(?C1)xyzabc)/I
1111: Xxyzabc\C+
1112:
1113: /(?=(abc))(?C)abcdef/I
1114: abcdef\C+
1115:
1116: /(?!(abc)(?C1)d)(?C2)abcxyz/I
1117: abcxyz\C+
1118:
1119: /(?<=(abc)(?C))xyz/I
1120: abcxyz\C+
1121:
1122: /a(b+)(c*)(?C1)/I
1123: abbbbbccc\C*1
1124:
1125: /a(b+?)(c*?)(?C1)/I
1126: abbbbbccc\C*1
1127:
1128: /(?C)abc/I
1129:
1130: /(?C)^abc/I
1131:
1132: /(?C)a|b/IS
1133:
1134: /(?R)/I
1135:
1136: /(a|(?R))/I
1137:
1138: /(ab|(bc|(de|(?R))))/I
1139:
1140: /x(ab|(bc|(de|(?R))))/I
1141: xab
1142: xbc
1143: xde
1144: xxab
1145: xxxab
1146: *** Failers
1147: xyab
1148:
1149: /(ab|(bc|(de|(?1))))/I
1150:
1151: /x(ab|(bc|(de|(?1)x)x)x)/I
1152:
1153: /^([^()]|\((?1)*\))*$/I
1154: abc
1155: a(b)c
1156: a(b(c))d
1157: *** Failers)
1158: a(b(c)d
1159:
1160: /^>abc>([^()]|\((?1)*\))*<xyz<$/I
1161: >abc>123<xyz<
1162: >abc>1(2)3<xyz<
1163: >abc>(1(2)3)<xyz<
1164:
1165: /(a(?1)b)/DZ
1166:
1167: /(a(?1)+b)/DZ
1168:
1169: /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
1170: 12
1171: (((2+2)*-3)-7)
1172: -12
1173: *** Failers
1174: ((2+2)*-3)-7)
1175:
1176: /^(x(y|(?1){2})z)/I
1177: xyz
1178: xxyzxyzz
1179: *** Failers
1180: xxyzz
1181: xxyzxyzxyzz
1182:
1183: /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix
1184: <>
1185: <abcd>
1186: <abc <123> hij>
1187: <abc <def> hij>
1188: <abc<>def>
1189: <abc<>
1190: *** Failers
1191: <abc
1192:
1193: /(?1)/I
1194:
1195: /((?2)(abc)/I
1196:
1197: /^(abc)def(?1)/I
1198: abcdefabc
1199:
1200: /^(a|b|c)=(?1)+/I
1201: a=a
1202: a=b
1203: a=bc
1204:
1205: /^(a|b|c)=((?1))+/I
1206: a=a
1207: a=b
1208: a=bc
1209:
1210: /a(?P<name1>b|c)d(?P<longername2>e)/DZ
1211: abde
1212: acde
1213:
1214: /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/DZ
1215:
1216: /(?P<a>a)...(?P=a)bbb(?P>a)d/DZ
1217:
1218: /^\W*(?:(?P<one>(?P<two>.)\W*(?P>one)\W*(?P=two)|)|(?P<three>(?P<four>.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii
1219: 1221
1220: Satan, oscillate my metallic sonatas!
1221: A man, a plan, a canal: Panama!
1222: Able was I ere I saw Elba.
1223: *** Failers
1224: The quick brown fox
1225:
1226: /((?(R)a|b))\1(?1)?/I
1227: bb
1228: bbaa
1229:
1230: /(.*)a/Is
1231:
1232: /(.*)a\1/Is
1233:
1234: /(.*)a(b)\2/Is
1235:
1236: /((.*)a|(.*)b)z/Is
1237:
1238: /((.*)a|(.*)b)z\1/Is
1239:
1240: /((.*)a|(.*)b)z\2/Is
1241:
1242: /((.*)a|(.*)b)z\3/Is
1243:
1244: /((.*)a|^(.*)b)z\3/Is
1245:
1246: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a/Is
1247:
1248: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31/Is
1249:
1250: /(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32/Is
1251:
1252: /(a)(bc)/INDZ
1253: abc
1254:
1255: /(?P<one>a)(bc)/INDZ
1256: abc
1257:
1258: /(a)(?P<named>bc)/INDZ
1259:
1260: /(a+)*zz/I
1261: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
1262: aaaaaaaaaaaaaz\M
1263:
1264: /(aaa(?C1)bbb|ab)/I
1265: aaabbb
1266: aaabbb\C*0
1267: aaabbb\C*1
1268: aaabbb\C*-1
1269:
1270: /ab(?P<one>cd)ef(?P<two>gh)/I
1271: abcdefgh
1272: abcdefgh\C1\Gtwo
1273: abcdefgh\Cone\Ctwo
1274: abcdefgh\Cthree
1275:
1276: /(?P<Tes>)(?P<Test>)/DZ
1277:
1278: /(?P<Test>)(?P<Tes>)/DZ
1279:
1280: /(?P<Z>zz)(?P<A>aa)/I
1281: zzaa\CZ
1282: zzaa\CA
1283:
1284: /(?P<x>eks)(?P<x>eccs)/I
1285:
1286: /(?P<abc>abc(?P<def>def)(?P<abc>xyz))/I
1287:
1288: "\[((?P<elem>\d+)(,(?P>elem))*)\]"I
1289: [10,20,30,5,5,4,4,2,43,23,4234]
1290: *** Failers
1291: []
1292:
1293: "\[((?P<elem>\d+)(,(?P>elem))*)?\]"I
1294: [10,20,30,5,5,4,4,2,43,23,4234]
1295: []
1296:
1297: /(a(b(?2)c))?/DZ
1298:
1299: /(a(b(?2)c))*/DZ
1300:
1301: /(a(b(?2)c)){0,2}/DZ
1302:
1303: /[ab]{1}+/DZ
1304:
1305: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/Ii
1306: Baby Bjorn Active Carrier - With free SHIPPING!!
1307:
1308: /((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)/IiS
1309: Baby Bjorn Active Carrier - With free SHIPPING!!
1310:
1311: /a*.*b/ISDZ
1312:
1313: /(a|b)*.?c/ISDZ
1314:
1315: /abc(?C255)de(?C)f/DZ
1316:
1317: /abcde/ICDZ
1318: abcde
1319: abcdfe
1320:
1321: /a*b/ICDZS
1322: ab
1323: aaaab
1324: aaaacb
1325:
1326: /a*b/ICDZSS
1327: ab
1328: aaaab
1329: aaaacb
1330:
1331: /a+b/ICDZ
1332: ab
1333: aaaab
1334: aaaacb
1335:
1336: /(abc|def)x/ICDZS
1337: abcx
1338: defx
1339: ** Failers
1340: abcdefzx
1341:
1342: /(abc|def)x/ICDZSS
1343: abcx
1344: defx
1345: ** Failers
1346: abcdefzx
1347:
1348: /(ab|cd){3,4}/IC
1349: ababab
1350: abcdabcd
1351: abcdcdcdcdcd
1352:
1353: /([ab]{,4}c|xy)/ICDZS
1354: Note: that { does NOT introduce a quantifier
1355:
1356: /([ab]{,4}c|xy)/ICDZSS
1357: Note: that { does NOT introduce a quantifier
1358:
1359: /([ab]{1,4}c|xy){4,5}?123/ICDZ
1360: aacaacaacaacaac123
1361:
1362: /\b.*/I
1363: ab cd\>1
1364:
1365: /\b.*/Is
1366: ab cd\>1
1367:
1368: /(?!.bcd).*/I
1369: Xbcd12345
1370:
1371: /abcde/I
1372: ab\P
1373: abc\P
1374: abcd\P
1375: abcde\P
1376: the quick brown abc\P
1377: ** Failers\P
1378: the quick brown abxyz fox\P
1379:
1380: "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I
1381: 13/05/04\P
1382: 13/5/2004\P
1383: 02/05/09\P
1384: 1\P
1385: 1/2\P
1386: 1/2/0\P
1387: 1/2/04\P
1388: 0\P
1389: 02/\P
1390: 02/0\P
1391: 02/1\P
1392: ** Failers\P
1393: \P
1394: 123\P
1395: 33/4/04\P
1396: 3/13/04\P
1397: 0/1/2003\P
1398: 0/\P
1399: 02/0/\P
1400: 02/13\P
1401:
1402: /0{0,2}ABC/I
1403:
1404: /\d{3,}ABC/I
1405:
1406: /\d*ABC/I
1407:
1408: /[abc]+DE/I
1409:
1410: /[abc]?123/I
1411: 123\P
1412: a\P
1413: b\P
1414: c\P
1415: c12\P
1416: c123\P
1417:
1418: /^(?:\d){3,5}X/I
1419: 1\P
1420: 123\P
1421: 123X
1422: 1234\P
1423: 1234X
1424: 12345\P
1425: 12345X
1426: *** Failers
1427: 1X
1428: 123456\P
1429:
1430: /abc/IS>testsavedregex
1431: <testsavedregex
1432: abc
1433: ** Failers
1434: bca
1435:
1436: /abc/ISS>testsavedregex
1437: <testsavedregex
1438: abc
1439: ** Failers
1440: bca
1441:
1442: /abc/IFS>testsavedregex
1443: <testsavedregex
1444: abc
1445: ** Failers
1446: bca
1447:
1448: /abc/IFSS>testsavedregex
1449: <testsavedregex
1450: abc
1451: ** Failers
1452: bca
1453:
1454: /(a|b)/IS>testsavedregex
1455: <testsavedregex
1456: abc
1457: ** Failers
1458: def
1459:
1460: /(a|b)/ISS>testsavedregex
1461: <testsavedregex
1462: abc
1463: ** Failers
1464: def
1465:
1466: /(a|b)/ISF>testsavedregex
1467: <testsavedregex
1468: abc
1469: ** Failers
1470: def
1471:
1472: /(a|b)/ISSF>testsavedregex
1473: <testsavedregex
1474: abc
1475: ** Failers
1476: def
1477:
1478: ~<(\w+)/?>(.)*</(\1)>~smgI
1479: \J1024<!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
1480:
1481: /^a/IF
1482:
1483: /line\nbreak/I
1484: this is a line\nbreak
1485: line one\nthis is a line\nbreak in the second line
1486:
1487: /line\nbreak/If
1488: this is a line\nbreak
1489: ** Failers
1490: line one\nthis is a line\nbreak in the second line
1491:
1492: /line\nbreak/Imf
1493: this is a line\nbreak
1494: ** Failers
1495: line one\nthis is a line\nbreak in the second line
1496:
1497: /ab.cd/P
1498: ab-cd
1499: ab=cd
1500: ** Failers
1501: ab\ncd
1502:
1503: /ab.cd/Ps
1504: ab-cd
1505: ab=cd
1506: ab\ncd
1507:
1508: /(?i)(?-i)AbCd/I
1509: AbCd
1510: ** Failers
1511: abcd
1512:
1513: /a{11111111111111111111}/I
1514:
1515: /(){64294967295}/I
1516:
1517: /(){2,4294967295}/I
1518:
1519: "(?i:a)(?i:b)(?i:c)(?i:d)(?i:e)(?i:f)(?i:g)(?i:h)(?i:i)(?i:j)(k)(?i:l)A\1B"I
1520: abcdefghijklAkB
1521:
1522: "(?P<n0>a)(?P<n1>b)(?P<n2>c)(?P<n3>d)(?P<n4>e)(?P<n5>f)(?P<n6>g)(?P<n7>h)(?P<n8>i)(?P<n9>j)(?P<n10>k)(?P<n11>l)A\11B"I
1523: abcdefghijklAkB
1524:
1525: "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)A\11B"I
1526: abcdefghijklAkB
1527:
1528: "(?P<name0>a)(?P<name1>a)(?P<name2>a)(?P<name3>a)(?P<name4>a)(?P<name5>a)(?P<name6>a)(?P<name7>a)(?P<name8>a)(?P<name9>a)(?P<name10>a)(?P<name11>a)(?P<name12>a)(?P<name13>a)(?P<name14>a)(?P<name15>a)(?P<name16>a)(?P<name17>a)(?P<name18>a)(?P<name19>a)(?P<name20>a)(?P<name21>a)(?P<name22>a)(?P<name23>a)(?P<name24>a)(?P<name25>a)(?P<name26>a)(?P<name27>a)(?P<name28>a)(?P<name29>a)(?P<name30>a)(?P<name31>a)(?P<name32>a)(?P<name33>a)(?P<name34>a)(?P<name35>a)(?P<name36>a)(?P<name37>a)(?P<name38>a)(?P<name39>a)(?P<name40>a)(?P<name41>a)(?P<name42>a)(?P<name43>a)(?P<name44>a)(?P<name45>a)(?P<name46>a)(?P<name47>a)(?P<name48>a)(?P<name49>a)(?P<name50>a)(?P<name51>a)(?P<name52>a)(?P<name53>a)(?P<name54>a)(?P<name55>a)(?P<name56>a)(?P<name57>a)(?P<name58>a)(?P<name59>a)(?P<name60>a)(?P<name61>a)(?P<name62>a)(?P<name63>a)(?P<name64>a)(?P<name65>a)(?P<name66>a)(?P<name67>a)(?P<name68>a)(?P<name69>a)(?P<name70>a)(?P<name71>a)(?P<name72>a)(?P<name73>a)(?P<name74>a)(?P<name75>a)(?P<name76>a)(?P<name77>a)(?P<name78>a)(?P<name79>a)(?P<name80>a)(?P<name81>a)(?P<name82>a)(?P<name83>a)(?P<name84>a)(?P<name85>a)(?P<name86>a)(?P<name87>a)(?P<name88>a)(?P<name89>a)(?P<name90>a)(?P<name91>a)(?P<name92>a)(?P<name93>a)(?P<name94>a)(?P<name95>a)(?P<name96>a)(?P<name97>a)(?P<name98>a)(?P<name99>a)(?P<name100>a)"I
1529: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1530:
1531: "(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)(a)"I
1532: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1533:
1534: /[^()]*(?:\((?R)\)[^()]*)*/I
1535: (this(and)that
1536: (this(and)that)
1537: (this(and)that)stuff
1538:
1539: /[^()]*(?:\((?>(?R))\)[^()]*)*/I
1540: (this(and)that
1541: (this(and)that)
1542:
1543: /[^()]*(?:\((?R)\))*[^()]*/I
1544: (this(and)that
1545: (this(and)that)
1546:
1547: /(?:\((?R)\))*[^()]*/I
1548: (this(and)that
1549: (this(and)that)
1550: ((this))
1551:
1552: /(?:\((?R)\))|[^()]*/I
1553: (this(and)that
1554: (this(and)that)
1555: (this)
1556: ((this))
1557:
1558: /a(b)c/PN
1559: abc
1560:
1561: /a(?P<name>b)c/PN
1562: abc
1563:
1564: /\x{100}/I
1565:
1566: /\x{0000ff}/I
1567:
1568: /^((?P<A>a1)|(?P<A>a2)b)/I
1569:
1570: /^((?P<A>a1)|(?P<A>a2)b)/IJ
1571: a1b\CA
1572: a2b\CA
1573: ** Failers
1574: a1b\CZ\CA
1575:
1576: /^(?P<A>a)(?P<A>b)/IJ
1577: ab\CA
1578:
1579: /^(?P<A>a)(?P<A>b)|cd/IJ
1580: ab\CA
1581: cd\CA
1582:
1583: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
1584: cdefgh\CA
1585:
1586: /^((?P<A>a1)|(?P<A>a2)b)/IJ
1587: a1b\GA
1588: a2b\GA
1589: ** Failers
1590: a1b\GZ\GA
1591:
1592: /^(?P<A>a)(?P<A>b)/IJ
1593: ab\GA
1594:
1595: /^(?P<A>a)(?P<A>b)|cd/IJ
1596: ab\GA
1597: cd\GA
1598:
1599: /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
1600: cdefgh\GA
1601:
1602: /(?J)^((?P<A>a1)|(?P<A>a2)b)/I
1603: a1b\CA
1604: a2b\CA
1605:
1606: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<A>d)/I
1607:
1608: / In this next test, J is not set at the outer level; consequently it isn't
1609: set in the pattern's options; consequently pcre_get_named_substring() produces
1610: a random value. /Ix
1611:
1612: /^(?P<A>a) (?J:(?P<B>b)(?P<B>c)) (?P<C>d)/I
1613: a bc d\CA\CB\CC
1614:
1615: /^(?P<A>a)?(?(A)a|b)/I
1616: aabc
1617: bc
1618: ** Failers
1619: abc
1620:
1621: /(?:(?(ZZ)a|b)(?P<ZZ>X))+/I
1622: bXaX
1623:
1624: /(?:(?(2y)a|b)(X))+/I
1625:
1626: /(?:(?(ZA)a|b)(?P<ZZ>X))+/I
1627:
1628: /(?:(?(ZZ)a|b)(?(ZZ)a|b)(?P<ZZ>X))+/I
1629: bbXaaX
1630:
1631: /(?:(?(ZZ)a|\(b\))\\(?P<ZZ>X))+/I
1632: (b)\\Xa\\X
1633:
1634: /(?P<ABC/I
1635:
1636: /(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
1637: bXXaYYaY
1638: bXYaXXaX
1639:
1640: /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
1641: bXXaYYaY
1642:
1643: /\777/I
1644:
1645: /\s*,\s*/IS
1646: \x0b,\x0b
1647: \x0c,\x0d
1648:
1649: /^abc/Im
1650: xyz\nabc
1651: xyz\nabc\<lf>
1652: xyz\r\nabc\<lf>
1653: xyz\rabc\<cr>
1654: xyz\r\nabc\<crlf>
1655: ** Failers
1656: xyz\nabc\<cr>
1657: xyz\r\nabc\<cr>
1658: xyz\nabc\<crlf>
1659: xyz\rabc\<crlf>
1660: xyz\rabc\<lf>
1661:
1662: /abc$/Im<lf>
1663: xyzabc
1664: xyzabc\n
1665: xyzabc\npqr
1666: xyzabc\r\<cr>
1667: xyzabc\rpqr\<cr>
1668: xyzabc\r\n\<crlf>
1669: xyzabc\r\npqr\<crlf>
1670: ** Failers
1671: xyzabc\r
1672: xyzabc\rpqr
1673: xyzabc\r\n
1674: xyzabc\r\npqr
1675:
1676: /^abc/Im<cr>
1677: xyz\rabcdef
1678: xyz\nabcdef\<lf>
1679: ** Failers
1680: xyz\nabcdef
1681:
1682: /^abc/Im<lf>
1683: xyz\nabcdef
1684: xyz\rabcdef\<cr>
1685: ** Failers
1686: xyz\rabcdef
1687:
1688: /^abc/Im<crlf>
1689: xyz\r\nabcdef
1690: xyz\rabcdef\<cr>
1691: ** Failers
1692: xyz\rabcdef
1693:
1694: /^abc/Im<bad>
1695:
1696: /abc/I
1697: xyz\rabc\<bad>
1698: abc
1699:
1700: /.*/I<lf>
1701: abc\ndef
1702: abc\rdef
1703: abc\r\ndef
1704: \<cr>abc\ndef
1705: \<cr>abc\rdef
1706: \<cr>abc\r\ndef
1707: \<crlf>abc\ndef
1708: \<crlf>abc\rdef
1709: \<crlf>abc\r\ndef
1710:
1711: /\w+(.)(.)?def/Is
1712: abc\ndef
1713: abc\rdef
1714: abc\r\ndef
1715:
1716: +((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)+I
1717: /* this is a C style comment */\M
1718:
1719: /(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
1720:
1721: /()()()()()()()()()()()()()()()()()()()()
1722: ()()()()()()()()()()()()()()()()()()()()
1723: ()()()()()()()()()()()()()()()()()()()()
1724: ()()()()()()()()()()()()()()()()()()()()
1725: ()()()()()()()()()()()()()()()()()()()()
1726: (.(.))/Ix
1727: XY\O400
1728:
1729: /(a*b|(?i:c*(?-i)d))/IS
1730:
1731: /()[ab]xyz/IS
1732:
1733: /(|)[ab]xyz/IS
1734:
1735: /(|c)[ab]xyz/IS
1736:
1737: /(|c?)[ab]xyz/IS
1738:
1739: /(d?|c?)[ab]xyz/IS
1740:
1741: /(d?|c)[ab]xyz/IS
1742:
1743: /^a*b\d/DZ
1744:
1745: /^a*+b\d/DZ
1746:
1747: /^a*?b\d/DZ
1748:
1749: /^a+A\d/DZ
1750: aaaA5
1751: ** Failers
1752: aaaa5
1753:
1754: /^a*A\d/IiDZ
1755: aaaA5
1756: aaaa5
1757:
1758: /(a*|b*)[cd]/IS
1759:
1760: /(a+|b*)[cd]/IS
1761:
1762: /(a*|b+)[cd]/IS
1763:
1764: /(a+|b+)[cd]/IS
1765:
1766: /((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1767: ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
1768: (((
1769: a
1770: ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
1771: ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
1772: )))
1773: /Ix
1774: large nest
1775:
1776: /a*\d/BZ
1777:
1778: /a*\D/BZ
1779:
1780: /0*\d/BZ
1781:
1782: /0*\D/BZ
1783:
1784: /a*\s/BZ
1785:
1786: /a*\S/BZ
1787:
1788: / *\s/BZ
1789:
1790: / *\S/BZ
1791:
1792: /a*\w/BZ
1793:
1794: /a*\W/BZ
1795:
1796: /=*\w/BZ
1797:
1798: /=*\W/BZ
1799:
1800: /\d*a/BZ
1801:
1802: /\d*2/BZ
1803:
1804: /\d*\d/BZ
1805:
1806: /\d*\D/BZ
1807:
1808: /\d*\s/BZ
1809:
1810: /\d*\S/BZ
1811:
1812: /\d*\w/BZ
1813:
1814: /\d*\W/BZ
1815:
1816: /\D*a/BZ
1817:
1818: /\D*2/BZ
1819:
1820: /\D*\d/BZ
1821:
1822: /\D*\D/BZ
1823:
1824: /\D*\s/BZ
1825:
1826: /\D*\S/BZ
1827:
1828: /\D*\w/BZ
1829:
1830: /\D*\W/BZ
1831:
1832: /\s*a/BZ
1833:
1834: /\s*2/BZ
1835:
1836: /\s*\d/BZ
1837:
1838: /\s*\D/BZ
1839:
1840: /\s*\s/BZ
1841:
1842: /\s*\S/BZ
1843:
1844: /\s*\w/BZ
1845:
1846: /\s*\W/BZ
1847:
1848: /\S*a/BZ
1849:
1850: /\S*2/BZ
1851:
1852: /\S*\d/BZ
1853:
1854: /\S*\D/BZ
1855:
1856: /\S*\s/BZ
1857:
1858: /\S*\S/BZ
1859:
1860: /\S*\w/BZ
1861:
1862: /\S*\W/BZ
1863:
1864: /\w*a/BZ
1865:
1866: /\w*2/BZ
1867:
1868: /\w*\d/BZ
1869:
1870: /\w*\D/BZ
1871:
1872: /\w*\s/BZ
1873:
1874: /\w*\S/BZ
1875:
1876: /\w*\w/BZ
1877:
1878: /\w*\W/BZ
1879:
1880: /\W*a/BZ
1881:
1882: /\W*2/BZ
1883:
1884: /\W*\d/BZ
1885:
1886: /\W*\D/BZ
1887:
1888: /\W*\s/BZ
1889:
1890: /\W*\S/BZ
1891:
1892: /\W*\w/BZ
1893:
1894: /\W*\W/BZ
1895:
1896: /[^a]+a/BZ
1897:
1898: /[^a]+a/BZi
1899:
1900: /[^a]+A/BZi
1901:
1902: /[^a]+b/BZ
1903:
1904: /[^a]+\d/BZ
1905:
1906: /a*[^a]/BZ
1907:
1908: /(?P<abc>x)(?P<xyz>y)/I
1909: xy\Cabc\Cxyz
1910:
1911: /(?<abc>x)(?'xyz'y)/I
1912: xy\Cabc\Cxyz
1913:
1914: /(?<abc'x)(?'xyz'y)/I
1915:
1916: /(?<abc>x)(?'xyz>y)/I
1917:
1918: /(?P'abc'x)(?P<xyz>y)/I
1919:
1920: /^(?:(?(ZZ)a|b)(?<ZZ>X))+/
1921: bXaX
1922: bXbX
1923: ** Failers
1924: aXaX
1925: aXbX
1926:
1927: /^(?P>abc)(?<abcd>xxx)/
1928:
1929: /^(?P>abc)(?<abc>x|y)/
1930: xx
1931: xy
1932: yy
1933: yx
1934:
1935: /^(?P>abc)(?P<abc>x|y)/
1936: xx
1937: xy
1938: yy
1939: yx
1940:
1941: /^((?(abc)a|b)(?<abc>x|y))+/
1942: bxay
1943: bxby
1944: ** Failers
1945: axby
1946:
1947: /^(((?P=abc)|X)(?<abc>x|y))+/
1948: XxXxxx
1949: XxXyyx
1950: XxXyxx
1951: ** Failers
1952: x
1953:
1954: /^(?1)(abc)/
1955: abcabc
1956:
1957: /^(?:(?:\1|X)(a|b))+/
1958: Xaaa
1959: Xaba
1960:
1961: /^[\E\Qa\E-\Qz\E]+/BZ
1962:
1963: /^[a\Q]bc\E]/BZ
1964:
1965: /^[a-\Q\E]/BZ
1966:
1967: /^(?P>abc)[()](?<abc>)/BZ
1968:
1969: /^((?(abc)y)[()](?P<abc>x))+/BZ
1970: (xy)x
1971:
1972: /^(?P>abc)\Q()\E(?<abc>)/BZ
1973:
1974: /^(?P>abc)[a\Q(]\E(](?<abc>)/BZ
1975:
1976: /^(?P>abc) # this is (a comment)
1977: (?<abc>)/BZx
1978:
1979: /^\W*(?:(?<one>(?<two>.)\W*(?&one)\W*\k<two>|)|(?<three>(?<four>.)\W*(?&three)\W*\k'four'|\W*.\W*))\W*$/Ii
1980: 1221
1981: Satan, oscillate my metallic sonatas!
1982: A man, a plan, a canal: Panama!
1983: Able was I ere I saw Elba.
1984: *** Failers
1985: The quick brown fox
1986:
1987: /(?=(\w+))\1:/I
1988: abcd:
1989:
1990: /(?=(?'abc'\w+))\k<abc>:/I
1991: abcd:
1992:
1993: /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
1994: adaa
1995: ** Failers
1996: addd
1997: adbb
1998:
1999: /(?'abc'a|b)(?<abc>d|e)(?&abc){2}/J
2000: bdaa
2001: bdab
2002: ** Failers
2003: bddd
2004:
2005: /(?(<bc))/
2006:
2007: /(?(''))/
2008:
2009: /(?('R')stuff)/
2010:
2011: /((abc (?(R) (?(R1)1) (?(R2)2) X | (?1) (?2) (?R) ))) /x
2012: abcabc1Xabc2XabcXabcabc
2013:
2014: /(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x
2015: abcabc1Xabc2XabcXabcabc
2016:
2017: /(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x
2018:
2019: /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x
2020: abcabc1Xabc2XabcXabcabc
2021:
2022: /^(?(DEFINE) abc | xyz ) /x
2023:
2024: /(?(DEFINE) abc) xyz/xI
2025:
2026: /(a|)*\d/
2027: \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2028: \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
2029:
2030: /^a.b/<lf>
2031: a\rb
2032: a\nb\<cr>
2033: a\x85b\<anycrlf>
2034: ** Failers
2035: a\nb
2036: a\nb\<any>
2037: a\rb\<cr>
2038: a\rb\<any>
2039: a\x85b\<any>
2040: a\rb\<anycrlf>
2041:
2042: /^abc./mgx<any>
2043: abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
2044:
2045: /abc.$/mgx<any>
2046: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
2047:
2048: /a/<cr><any>
2049:
2050: /a/<any><crlf>
2051:
2052: /^a\Rb/<bsr_unicode>
2053: a\nb
2054: a\rb
2055: a\r\nb
2056: a\x0bb
2057: a\x0cb
2058: a\x85b
2059: ** Failers
2060: a\n\rb
2061:
2062: /^a\R*b/<bsr_unicode>
2063: ab
2064: a\nb
2065: a\rb
2066: a\r\nb
2067: a\x0bb
2068: a\x0cb
2069: a\x85b
2070: a\n\rb
2071: a\n\r\x85\x0cb
2072:
2073: /^a\R+b/<bsr_unicode>
2074: a\nb
2075: a\rb
2076: a\r\nb
2077: a\x0bb
2078: a\x0cb
2079: a\x85b
2080: a\n\rb
2081: a\n\r\x85\x0cb
2082: ** Failers
2083: ab
2084:
2085: /^a\R{1,3}b/<bsr_unicode>
2086: a\nb
2087: a\n\rb
2088: a\n\r\x85b
2089: a\r\n\r\nb
2090: a\r\n\r\n\r\nb
2091: a\n\r\n\rb
2092: a\n\n\r\nb
2093: ** Failers
2094: a\n\n\n\rb
2095: a\r
2096:
2097: /^a[\R]b/<bsr_unicode>
2098: aRb
2099: ** Failers
2100: a\nb
2101:
2102: /(?&abc)X(?<abc>P)/I
2103: abcPXP123
2104:
2105: /(?1)X(?<abc>P)/I
2106: abcPXP123
2107:
2108: /(?:a(?&abc)b)*(?<abc>x)/
2109: 123axbaxbaxbx456
2110: 123axbaxbaxb456
2111:
2112: /(?:a(?&abc)b){1,5}(?<abc>x)/
2113: 123axbaxbaxbx456
2114:
2115: /(?:a(?&abc)b){2,5}(?<abc>x)/
2116: 123axbaxbaxbx456
2117:
2118: /(?:a(?&abc)b){2,}(?<abc>x)/
2119: 123axbaxbaxbx456
2120:
2121: /(abc)(?i:(?1))/
2122: defabcabcxyz
2123: DEFabcABCXYZ
2124:
2125: /(abc)(?:(?i)(?1))/
2126: defabcabcxyz
2127: DEFabcABCXYZ
2128:
2129: /^(a)\g-2/
2130:
2131: /^(a)\g/
2132:
2133: /^(a)\g{0}/
2134:
2135: /^(a)\g{3/
2136:
2137: /^(a)\g{4a}/
2138:
2139: /^a.b/<lf>
2140: a\rb
2141: *** Failers
2142: a\nb
2143:
2144: /.+foo/
2145: afoo
2146: ** Failers
2147: \r\nfoo
2148: \nfoo
2149:
2150: /.+foo/<crlf>
2151: afoo
2152: \nfoo
2153: ** Failers
2154: \r\nfoo
2155:
2156: /.+foo/<any>
2157: afoo
2158: ** Failers
2159: \nfoo
2160: \r\nfoo
2161:
2162: /.+foo/s
2163: afoo
2164: \r\nfoo
2165: \nfoo
2166:
2167: /^$/mg<any>
2168: abc\r\rxyz
2169: abc\n\rxyz
2170: ** Failers
2171: abc\r\nxyz
2172:
2173: /(?m)^$/<any>g+
2174: abc\r\n\r\n
2175:
2176: /(?m)^$|^\r\n/<any>g+
2177: abc\r\n\r\n
2178:
2179: /(?m)$/<any>g+
2180: abc\r\n\r\n
2181:
2182: /abc.$/mgx<anycrlf>
2183: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
2184:
2185: /^X/m
2186: XABC
2187: ** Failers
2188: XABC\B
2189:
2190: /(ab|c)(?-1)/BZ
2191: abc
2192:
2193: /xy(?+1)(abc)/BZ
2194: xyabcabc
2195: ** Failers
2196: xyabc
2197:
2198: /x(?-0)y/
2199:
2200: /x(?-1)y/
2201:
2202: /x(?+0)y/
2203:
2204: /x(?+1)y/
2205:
2206: /^(abc)?(?(-1)X|Y)/BZ
2207: abcX
2208: Y
2209: ** Failers
2210: abcY
2211:
2212: /^((?(+1)X|Y)(abc))+/BZ
2213: YabcXabc
2214: YabcXabcXabc
2215: ** Failers
2216: XabcXabc
2217:
2218: /(?(-1)a)/BZ
2219:
2220: /((?(-1)a))/BZ
2221:
2222: /((?(-2)a))/BZ
2223:
2224: /^(?(+1)X|Y)(.)/BZ
2225: Y!
2226:
2227: /(?<A>tom|bon)-\k{A}/
2228: tom-tom
2229: bon-bon
2230: ** Failers
2231: tom-bon
2232:
2233: /\g{A/
2234:
2235: /(?|(abc)|(xyz))/BZ
2236: >abc<
2237: >xyz<
2238:
2239: /(x)(?|(abc)|(xyz))(x)/BZ
2240: xabcx
2241: xxyzx
2242:
2243: /(x)(?|(abc)(pqr)|(xyz))(x)/BZ
2244: xabcpqrx
2245: xxyzx
2246:
2247: /[\h]/BZ
2248: >\x09<
2249:
2250: /[\h]+/BZ
2251: >\x09\x20\xa0<
2252:
2253: /[\v]/BZ
2254:
2255: /[\H]/BZ
2256:
2257: /[^\h]/BZ
2258:
2259: /[\V]/BZ
2260:
2261: /[\x0a\V]/BZ
2262:
2263: /\H++X/BZ
2264: ** Failers
2265: XXXX
2266:
2267: /\H+\hY/BZ
2268: XXXX Y
2269:
2270: /\H+ Y/BZ
2271:
2272: /\h+A/BZ
2273:
2274: /\v*B/BZ
2275:
2276: /\V+\x0a/BZ
2277:
2278: /A+\h/BZ
2279:
2280: / *\H/BZ
2281:
2282: /A*\v/BZ
2283:
2284: /\x0b*\V/BZ
2285:
2286: /\d+\h/BZ
2287:
2288: /\d*\v/BZ
2289:
2290: /S+\h\S+\v/BZ
2291:
2292: /\w{3,}\h\w+\v/BZ
2293:
2294: /\h+\d\h+\w\h+\S\h+\H/BZ
2295:
2296: /\v+\d\v+\w\v+\S\v+\V/BZ
2297:
2298: /\H+\h\H+\d/BZ
2299:
2300: /\V+\v\V+\w/BZ
2301:
2302: /\( (?: [^()]* | (?R) )* \)/x
2303: \J1024(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
2304:
2305: /[\E]AAA/
2306:
2307: /[\Q\E]AAA/
2308:
2309: /[^\E]AAA/
2310:
2311: /[^\Q\E]AAA/
2312:
2313: /[\E^]AAA/
2314:
2315: /[\Q\E^]AAA/
2316:
2317: /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
2318:
2319: /^a+(*FAIL)/C
2320: aaaaaa
2321:
2322: /a+b?c+(*FAIL)/C
2323: aaabccc
2324:
2325: /a+b?(*PRUNE)c+(*FAIL)/C
2326: aaabccc
2327:
2328: /a+b?(*COMMIT)c+(*FAIL)/C
2329: aaabccc
2330:
2331: /a+b?(*SKIP)c+(*FAIL)/C
2332: aaabcccaaabccc
2333:
2334: /a+b?(*THEN)c+(*FAIL)/C
2335: aaabccc
2336:
2337: /a(*MARK)b/
2338:
2339: /(?i:A{1,}\6666666666)/
2340:
2341: /\g6666666666/
2342:
2343: /[\g6666666666]/BZ
2344:
2345: /(?1)\c[/
2346:
2347: /.+A/<crlf>
2348: \r\nA
2349:
2350: /\nA/<crlf>
2351: \r\nA
2352:
2353: /[\r\n]A/<crlf>
2354: \r\nA
2355:
2356: /(\r|\n)A/<crlf>
2357: \r\nA
2358:
2359: /a(*CR)b/
2360:
2361: /(*CR)a.b/
2362: a\nb
2363: ** Failers
2364: a\rb
2365:
2366: /(*CR)a.b/<lf>
2367: a\nb
2368: ** Failers
2369: a\rb
2370:
2371: /(*LF)a.b/<CRLF>
2372: a\rb
2373: ** Failers
2374: a\nb
2375:
2376: /(*CRLF)a.b/
2377: a\rb
2378: a\nb
2379: ** Failers
2380: a\r\nb
2381:
2382: /(*ANYCRLF)a.b/<CR>
2383: ** Failers
2384: a\rb
2385: a\nb
2386: a\r\nb
2387:
2388: /(*ANY)a.b/<cr>
2389: ** Failers
2390: a\rb
2391: a\nb
2392: a\r\nb
2393: a\x85b
2394:
2395: /(*ANY).*/g
2396: abc\r\ndef
2397:
2398: /(*ANYCRLF).*/g
2399: abc\r\ndef
2400:
2401: /(*CRLF).*/g
2402: abc\r\ndef
2403:
2404: /a\Rb/I<bsr_anycrlf>
2405: a\rb
2406: a\nb
2407: a\r\nb
2408: ** Failers
2409: a\x85b
2410: a\x0bb
2411:
2412: /a\Rb/I<bsr_unicode>
2413: a\rb
2414: a\nb
2415: a\r\nb
2416: a\x85b
2417: a\x0bb
2418: ** Failers
2419: a\x85b\<bsr_anycrlf>
2420: a\x0bb\<bsr_anycrlf>
2421:
2422: /a\R?b/I<bsr_anycrlf>
2423: a\rb
2424: a\nb
2425: a\r\nb
2426: ** Failers
2427: a\x85b
2428: a\x0bb
2429:
2430: /a\R?b/I<bsr_unicode>
2431: a\rb
2432: a\nb
2433: a\r\nb
2434: a\x85b
2435: a\x0bb
2436: ** Failers
2437: a\x85b\<bsr_anycrlf>
2438: a\x0bb\<bsr_anycrlf>
2439:
2440: /a\R{2,4}b/I<bsr_anycrlf>
2441: a\r\n\nb
2442: a\n\r\rb
2443: a\r\n\r\n\r\n\r\nb
2444: ** Failers
2445: a\x85\85b
2446: a\x0b\0bb
2447:
2448: /a\R{2,4}b/I<bsr_unicode>
2449: a\r\rb
2450: a\n\n\nb
2451: a\r\n\n\r\rb
2452: a\x85\85b
2453: a\x0b\0bb
2454: ** Failers
2455: a\r\r\r\r\rb
2456: a\x85\85b\<bsr_anycrlf>
2457: a\x0b\0bb\<bsr_anycrlf>
2458:
2459: /(*BSR_ANYCRLF)a\Rb/I
2460: a\nb
2461: a\rb
2462:
2463: /(*BSR_UNICODE)a\Rb/I
2464: a\x85b
2465:
2466: /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
2467: a\nb
2468: a\rb
2469:
2470: /(*CRLF)(*BSR_UNICODE)a\Rb/I
2471: a\x85b
2472:
2473: /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
2474:
2475: /(?<a>)(?&)/
2476:
2477: /(?<abc>)(?&a)/
2478:
2479: /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
2480:
2481: /(?+-a)/
2482:
2483: /(?-+a)/
2484:
2485: /(?(-1))/
2486:
2487: /(?(+10))/
2488:
2489: /(?(10))/
2490:
2491: /(?(+2))()()/
2492:
2493: /(?(2))()()/
2494:
2495: /\k''/
2496:
2497: /\k<>/
2498:
2499: /\k{}/
2500:
2501: /\k/
2502:
2503: /\kabc/
2504:
2505: /(?P=)/
2506:
2507: /(?P>)/
2508:
2509: /(?!\w)(?R)/
2510:
2511: /(?=\w)(?R)/
2512:
2513: /(?<!\w)(?R)/
2514:
2515: /(?<=\w)(?R)/
2516:
2517: /[[:foo:]]/
2518:
2519: /[[:1234:]]/
2520:
2521: /[[:f\oo:]]/
2522:
2523: /[[: :]]/
2524:
2525: /[[:...:]]/
2526:
2527: /[[:l\ower:]]/
2528:
2529: /[[:abc\:]]/
2530:
2531: /[abc[:x\]pqr:]]/
2532:
2533: /[[:a\dz:]]/
2534:
2535: /(^(a|b\g<-1'c))/
2536:
2537: /^(?+1)(?<a>x|y){0}z/
2538: xzxx
2539: yzyy
2540: ** Failers
2541: xxz
2542:
2543: /(\3)(\1)(a)/
2544: cat
2545:
2546: /(\3)(\1)(a)/<JS>
2547: cat
2548:
2549: /TA]/
2550: The ACTA] comes
2551:
2552: /TA]/<JS>
2553: The ACTA] comes
2554:
2555: /(?2)[]a()b](abc)/
2556: abcbabc
2557:
2558: /(?2)[^]a()b](abc)/
2559: abcbabc
2560:
2561: /(?1)[]a()b](abc)/
2562: abcbabc
2563: ** Failers
2564: abcXabc
2565:
2566: /(?1)[^]a()b](abc)/
2567: abcXabc
2568: ** Failers
2569: abcbabc
2570:
2571: /(?2)[]a()b](abc)(xyz)/
2572: xyzbabcxyz
2573:
2574: /(?&N)[]a(?<N>)](?<M>abc)/
2575: abc<abc
2576:
2577: /(?&N)[]a(?<N>)](abc)/
2578: abc<abc
2579:
2580: /a[]b/
2581:
2582: /a[^]b/
2583:
2584: /a[]b/<JS>
2585: ** Failers
2586: ab
2587:
2588: /a[]+b/<JS>
2589: ** Failers
2590: ab
2591:
2592: /a[]*+b/<JS>
2593: ** Failers
2594: ab
2595:
2596: /a[^]b/<JS>
2597: aXb
2598: a\nb
2599: ** Failers
2600: ab
2601:
2602: /a[^]+b/<JS>
2603: aXb
2604: a\nX\nXb
2605: ** Failers
2606: ab
2607:
2608: /a(?!)+b/
2609:
2610: /a(*FAIL)+b/
2611:
2612: /(abc|pqr|123){0}[xyz]/SI
2613:
2614: /(?(?=.*b)b|^)/CI
2615: adc
2616: abc
2617:
2618: /(?(?=b).*b|^d)/I
2619:
2620: /(?(?=.*b).*b|^d)/I
2621:
2622: /a?|b?/P
2623: abc
2624: ** Failers
2625: ddd\N
2626:
2627: /xyz/C
2628: xyz
2629: abcxyz
2630: abcxyz\Y
2631: ** Failers
2632: abc
2633: abc\Y
2634: abcxypqr
2635: abcxypqr\Y
2636:
2637: /(*NO_START_OPT)xyz/C
2638: abcxyz
2639:
2640: /xyz/CY
2641: abcxyz
2642:
2643: /^"((?(?=[a])[^"])|b)*"$/C
2644: "ab"
2645:
2646: /^"((?(?=[a])[^"])|b)*"$/
2647: "ab"
2648:
2649: /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2650: XYabcdY
2651:
2652: /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2653: XYabcdY
2654:
2655: /Xa{2,4}b/
2656: X\P
2657: Xa\P
2658: Xaa\P
2659: Xaaa\P
2660: Xaaaa\P
2661:
2662: /Xa{2,4}?b/
2663: X\P
2664: Xa\P
2665: Xaa\P
2666: Xaaa\P
2667: Xaaaa\P
2668:
2669: /Xa{2,4}+b/
2670: X\P
2671: Xa\P
2672: Xaa\P
2673: Xaaa\P
2674: Xaaaa\P
2675:
2676: /X\d{2,4}b/
2677: X\P
2678: X3\P
2679: X33\P
2680: X333\P
2681: X3333\P
2682:
2683: /X\d{2,4}?b/
2684: X\P
2685: X3\P
2686: X33\P
2687: X333\P
2688: X3333\P
2689:
2690: /X\d{2,4}+b/
2691: X\P
2692: X3\P
2693: X33\P
2694: X333\P
2695: X3333\P
2696:
2697: /X\D{2,4}b/
2698: X\P
2699: Xa\P
2700: Xaa\P
2701: Xaaa\P
2702: Xaaaa\P
2703:
2704: /X\D{2,4}?b/
2705: X\P
2706: Xa\P
2707: Xaa\P
2708: Xaaa\P
2709: Xaaaa\P
2710:
2711: /X\D{2,4}+b/
2712: X\P
2713: Xa\P
2714: Xaa\P
2715: Xaaa\P
2716: Xaaaa\P
2717:
2718: /X[abc]{2,4}b/
2719: X\P
2720: Xa\P
2721: Xaa\P
2722: Xaaa\P
2723: Xaaaa\P
2724:
2725: /X[abc]{2,4}?b/
2726: X\P
2727: Xa\P
2728: Xaa\P
2729: Xaaa\P
2730: Xaaaa\P
2731:
2732: /X[abc]{2,4}+b/
2733: X\P
2734: Xa\P
2735: Xaa\P
2736: Xaaa\P
2737: Xaaaa\P
2738:
2739: /X[^a]{2,4}b/
2740: X\P
2741: Xz\P
2742: Xzz\P
2743: Xzzz\P
2744: Xzzzz\P
2745:
2746: /X[^a]{2,4}?b/
2747: X\P
2748: Xz\P
2749: Xzz\P
2750: Xzzz\P
2751: Xzzzz\P
2752:
2753: /X[^a]{2,4}+b/
2754: X\P
2755: Xz\P
2756: Xzz\P
2757: Xzzz\P
2758: Xzzzz\P
2759:
2760: /(Y)X\1{2,4}b/
2761: YX\P
2762: YXY\P
2763: YXYY\P
2764: YXYYY\P
2765: YXYYYY\P
2766:
2767: /(Y)X\1{2,4}?b/
2768: YX\P
2769: YXY\P
2770: YXYY\P
2771: YXYYY\P
2772: YXYYYY\P
2773:
2774: /(Y)X\1{2,4}+b/
2775: YX\P
2776: YXY\P
2777: YXYY\P
2778: YXYYY\P
2779: YXYYYY\P
2780:
2781: /\++\KZ|\d+X|9+Y/
2782: ++++123999\P
2783: ++++123999Y\P
2784: ++++Z1234\P
2785:
2786: /Z(*F)/
2787: Z\P
2788: ZA\P
2789:
2790: /Z(?!)/
2791: Z\P
2792: ZA\P
2793:
2794: /dog(sbody)?/
2795: dogs\P
2796: dogs\P\P
2797:
2798: /dog(sbody)??/
2799: dogs\P
2800: dogs\P\P
2801:
2802: /dog|dogsbody/
2803: dogs\P
2804: dogs\P\P
2805:
2806: /dogsbody|dog/
2807: dogs\P
2808: dogs\P\P
2809:
2810: /\bthe cat\b/
2811: the cat\P
2812: the cat\P\P
2813:
2814: /abc/
2815: abc\P
2816: abc\P\P
2817:
2818: /\w+A/P
2819: CDAAAAB
2820:
2821: /\w+A/PU
2822: CDAAAAB
2823:
2824: /abc\K123/
2825: xyzabc123pqr
2826: xyzabc12\P
2827: xyzabc12\P\P
2828:
2829: /(?<=abc)123/
2830: xyzabc123pqr
2831: xyzabc12\P
2832: xyzabc12\P\P
2833:
2834: /\babc\b/
2835: +++abc+++
2836: +++ab\P
2837: +++ab\P\P
2838:
2839: /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2840:
2841: /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2842:
2843: /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2844:
2845: /abc\K/+
2846: abcdef
2847: abcdef\N\N
2848: xyzabcdef\N\N
2849: ** Failers
2850: abcdef\N
2851: xyzabcdef\N
2852:
2853: /^(?:(?=abc)|abc\K)/+
2854: abcdef
2855: abcdef\N\N
2856: ** Failers
2857: abcdef\N
2858:
2859: /a?b?/+
2860: xyz
2861: xyzabc
2862: xyzabc\N
2863: xyzabc\N\N
2864: xyz\N\N
2865: ** Failers
2866: xyz\N
2867:
2868: /^a?b?/+
2869: xyz
2870: xyzabc
2871: ** Failers
2872: xyzabc\N
2873: xyzabc\N\N
2874: xyz\N\N
2875: xyz\N
2876:
2877: /^(?<name>a|b\g<name>c)/
2878: aaaa
2879: bacxxx
2880: bbaccxxx
2881: bbbacccxx
2882:
2883: /^(?<name>a|b\g'name'c)/
2884: aaaa
2885: bacxxx
2886: bbaccxxx
2887: bbbacccxx
2888:
2889: /^(a|b\g<1>c)/
2890: aaaa
2891: bacxxx
2892: bbaccxxx
2893: bbbacccxx
2894:
2895: /^(a|b\g'1'c)/
2896: aaaa
2897: bacxxx
2898: bbaccxxx
2899: bbbacccxx
2900:
2901: /^(a|b\g'-1'c)/
2902: aaaa
2903: bacxxx
2904: bbaccxxx
2905: bbbacccxx
2906:
2907: /(^(a|b\g<-1>c))/
2908: aaaa
2909: bacxxx
2910: bbaccxxx
2911: bbbacccxx
2912:
2913: /(?-i:\g<name>)(?i:(?<name>a))/
2914: XaaX
2915: XAAX
2916:
2917: /(?i:\g<name>)(?-i:(?<name>a))/
2918: XaaX
2919: ** Failers
2920: XAAX
2921:
2922: /(?-i:\g<+1>)(?i:(a))/
2923: XaaX
2924: XAAX
2925:
2926: /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
2927:
2928: /(?<n>a|b|c)\g<n>*/
2929: abc
2930: accccbbb
2931:
2932: /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2933: XYabcdY
2934:
2935: /(?<=b(?1)|zzz)(a)/
2936: xbaax
2937: xzzzax
2938:
2939: /(a)(?<=b\1)/
2940:
2941: /(a)(?<=b+(?1))/
2942:
2943: /(a+)(?<=b(?1))/
2944:
2945: /(a(?<=b(?1)))/
2946:
2947: /(?<=b(?1))xyz/
2948:
2949: /(?<=b(?1))xyz(b+)pqrstuvew/
2950:
2951: /(a|bc)\1/SI
2952:
2953: /(a|bc)\1{2,3}/SI
2954:
2955: /(a|bc)(?1)/SI
2956:
2957: /(a|b\1)(a|b\1)/SI
2958:
2959: /(a|b\1){2}/SI
2960:
2961: /(a|bbbb\1)(a|bbbb\1)/SI
2962:
2963: /(a|bbbb\1){2}/SI
2964:
2965: /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI
2966:
2967: / (?: [\040\t] | \(
2968: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2969: \) )* # optional leading comment
2970: (?: (?:
2971: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2972: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2973: |
2974: " (?: # opening quote...
2975: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
2976: | # or
2977: \\ [^\x80-\xff] # Escaped something (something != CR)
2978: )* " # closing quote
2979: ) # initial word
2980: (?: (?: [\040\t] | \(
2981: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2982: \) )* \. (?: [\040\t] | \(
2983: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2984: \) )* (?:
2985: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
2986: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2987: |
2988: " (?: # opening quote...
2989: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
2990: | # or
2991: \\ [^\x80-\xff] # Escaped something (something != CR)
2992: )* " # closing quote
2993: ) )* # further okay, if led by a period
2994: (?: [\040\t] | \(
2995: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2996: \) )* @ (?: [\040\t] | \(
2997: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
2998: \) )* (?:
2999: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3000: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3001: | \[ # [
3002: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3003: \] # ]
3004: ) # initial subdomain
3005: (?: #
3006: (?: [\040\t] | \(
3007: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3008: \) )* \. # if led by a period...
3009: (?: [\040\t] | \(
3010: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3011: \) )* (?:
3012: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3013: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3014: | \[ # [
3015: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3016: \] # ]
3017: ) # ...further okay
3018: )*
3019: # address
3020: | # or
3021: (?:
3022: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3023: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3024: |
3025: " (?: # opening quote...
3026: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
3027: | # or
3028: \\ [^\x80-\xff] # Escaped something (something != CR)
3029: )* " # closing quote
3030: ) # one word, optionally followed by....
3031: (?:
3032: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
3033: \(
3034: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3035: \) | # comments, or...
3036:
3037: " (?: # opening quote...
3038: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
3039: | # or
3040: \\ [^\x80-\xff] # Escaped something (something != CR)
3041: )* " # closing quote
3042: # quoted strings
3043: )*
3044: < (?: [\040\t] | \(
3045: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3046: \) )* # leading <
3047: (?: @ (?: [\040\t] | \(
3048: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3049: \) )* (?:
3050: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3051: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3052: | \[ # [
3053: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3054: \] # ]
3055: ) # initial subdomain
3056: (?: #
3057: (?: [\040\t] | \(
3058: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3059: \) )* \. # if led by a period...
3060: (?: [\040\t] | \(
3061: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3062: \) )* (?:
3063: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3064: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3065: | \[ # [
3066: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3067: \] # ]
3068: ) # ...further okay
3069: )*
3070:
3071: (?: (?: [\040\t] | \(
3072: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3073: \) )* , (?: [\040\t] | \(
3074: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3075: \) )* @ (?: [\040\t] | \(
3076: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3077: \) )* (?:
3078: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3079: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3080: | \[ # [
3081: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3082: \] # ]
3083: ) # initial subdomain
3084: (?: #
3085: (?: [\040\t] | \(
3086: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3087: \) )* \. # if led by a period...
3088: (?: [\040\t] | \(
3089: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3090: \) )* (?:
3091: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3092: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3093: | \[ # [
3094: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3095: \] # ]
3096: ) # ...further okay
3097: )*
3098: )* # further okay, if led by comma
3099: : # closing colon
3100: (?: [\040\t] | \(
3101: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3102: \) )* )? # optional route
3103: (?:
3104: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3105: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3106: |
3107: " (?: # opening quote...
3108: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
3109: | # or
3110: \\ [^\x80-\xff] # Escaped something (something != CR)
3111: )* " # closing quote
3112: ) # initial word
3113: (?: (?: [\040\t] | \(
3114: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3115: \) )* \. (?: [\040\t] | \(
3116: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3117: \) )* (?:
3118: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3119: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3120: |
3121: " (?: # opening quote...
3122: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
3123: | # or
3124: \\ [^\x80-\xff] # Escaped something (something != CR)
3125: )* " # closing quote
3126: ) )* # further okay, if led by a period
3127: (?: [\040\t] | \(
3128: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3129: \) )* @ (?: [\040\t] | \(
3130: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3131: \) )* (?:
3132: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3133: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3134: | \[ # [
3135: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3136: \] # ]
3137: ) # initial subdomain
3138: (?: #
3139: (?: [\040\t] | \(
3140: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3141: \) )* \. # if led by a period...
3142: (?: [\040\t] | \(
3143: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3144: \) )* (?:
3145: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
3146: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3147: | \[ # [
3148: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
3149: \] # ]
3150: ) # ...further okay
3151: )*
3152: # address spec
3153: (?: [\040\t] | \(
3154: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3155: \) )* > # trailing >
3156: # name and address
3157: ) (?: [\040\t] | \(
3158: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
3159: \) )* # optional trailing comment
3160: /xSI
3161:
3162: /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS
3163:
3164: "(?>.*/)foo"SI
3165:
3166: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /xSI
3167:
3168: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3169:
3170: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3171:
3172: /<a[\s]+href[\s]*=[\s]* # find <a href=
3173: ([\"\'])? # find single or double quote
3174: (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
3175: # quote, otherwise match up to next space
3176: /isxSI
3177:
3178: /^(?!:) # colon disallowed at start
3179: (?: # start of item
3180: (?: [0-9a-f]{1,4} | # 1-4 hex digits or
3181: (?(1)0 | () ) ) # if null previously matched, fail; else null
3182: : # followed by colon
3183: ){1,7} # end item; 1-7 of them required
3184: [0-9a-f]{1,4} $ # final hex number at end of string
3185: (?(1)|.) # check that there was an empty component
3186: /xiIS
3187:
3188: /(?|(?<a>A)|(?<a>B))/I
3189: AB\Ca
3190: BA\Ca
3191:
3192: /(?|(?<a>A)|(?<b>B))/
3193:
3194: /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3195: b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3196: (?('quote')[a-z]+|[0-9]+)/JIx
3197: a"aaaaa
3198: b"aaaaa
3199: ** Failers
3200: b"11111
3201: a"11111
3202:
3203: /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3204: abcdX
3205: eX
3206: ** Failers
3207: abcdY
3208: ey
3209:
3210: /(?<A>a) (b)(c) (?<A>d (?(R&A)$ | (?4)) )/JDZx
3211: abcdd
3212: ** Failers
3213: abcdde
3214:
3215: /abcd*/
3216: xxxxabcd\P
3217: xxxxabcd\P\P
3218:
3219: /abcd*/i
3220: xxxxabcd\P
3221: xxxxabcd\P\P
3222: XXXXABCD\P
3223: XXXXABCD\P\P
3224:
3225: /abc\d*/
3226: xxxxabc1\P
3227: xxxxabc1\P\P
3228:
3229: /(a)bc\1*/
3230: xxxxabca\P
3231: xxxxabca\P\P
3232:
3233: /abc[de]*/
3234: xxxxabcde\P
3235: xxxxabcde\P\P
3236:
3237: /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
3238: broken and not behaving as specified in that it *does* bumpalong after
3239: hitting (*COMMIT). --/
3240:
3241: /(?1)(A(*COMMIT)|B)D/
3242: ABD
3243: XABD
3244: BAD
3245: ABXABD
3246: ** Failers
3247: ABX
3248: BAXBAD
3249:
3250: /(\3)(\1)(a)/<JS>
3251: cat
3252:
3253: /(\3)(\1)(a)/SI<JS>
3254: cat
3255:
3256: /(\3)(\1)(a)/SI
3257: cat
3258:
3259: /i(?(DEFINE)(?<s>a))/SI
3260: i
3261:
3262: /()i(?(1)a)/SI
3263: ia
3264:
3265: /(?i)a(?-i)b|c/BZ
3266: XabX
3267: XAbX
3268: CcC
3269: ** Failers
3270: XABX
3271:
3272: /(?i)a(?s)b|c/BZ
3273:
3274: /(?i)a(?s-i)b|c/BZ
3275:
3276: /^(ab(c\1)d|x){2}$/BZ
3277: xabcxd
3278:
3279: /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
3280:
3281: /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
3282:
3283: / -- The first four of these are not in the Perl >= 5.10 test because Perl
3284: documents that the use of \K in assertions is "not well defined". The
3285: last is here because Perl gives the match as "b" rather than "ab". I
3286: believe this to be a Perl bug. --/
3287:
3288: /(?=a\Kb)ab/
3289: ab
3290:
3291: /(?!a\Kb)ac/
3292: ac
3293:
3294: /^abc(?<=b\Kc)d/
3295: abcd
3296:
3297: /^abc(?<!b\Kq)d/
3298: abcd
3299:
3300: /(?>a\Kb)z|(ab)/
3301: ab
3302:
3303: /----------------------/
3304:
3305: /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3306:
3307: /abc(*MARK:)pqr/
3308:
3309: /abc(*:)pqr/
3310:
3311: /abc(*FAIL:123)xyz/
3312:
3313: /--- This should, and does, fail. In Perl, it does not, which I think is a
3314: bug because replacing the B in the pattern by (B|D) does make it fail. ---/
3315:
3316: /A(*COMMIT)B/+K
3317: ACABX
3318:
3319: /--- These should be different, but in Perl 5.11 are not, which I think
3320: is a bug in Perl. ---/
3321:
3322: /A(*THEN)B|A(*THEN)C/K
3323: AC
3324:
3325: /A(*PRUNE)B|A(*PRUNE)C/K
3326: AC
3327:
3328: /--- This should fail; the SKIP advances by one, but when we get to AC, the
3329: PRUNE kills it. Perl behaves differently. ---/
3330:
3331: /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3332: AAAC
3333:
3334: /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
3335: though PCRE does. ---/
3336:
3337: /^A(*:A)B|^X(*:A)Y/K
3338: ** Failers
3339: XAQQ
3340:
3341: /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3342: optimizations defeat this. So does the PCRE optimization unless we disable it
3343: with \Y. ---/
3344:
3345: /(*COMMIT)ABC/
3346: ABCDEFG
3347: ** Failers
3348: DEFGABC\Y
3349:
3350: /^(ab (c+(*THEN)cd) | xyz)/x
3351: abcccd
3352:
3353: /^(ab (c+(*PRUNE)cd) | xyz)/x
3354: abcccd
3355:
3356: /^(ab (c+(*FAIL)cd) | xyz)/x
3357: abcccd
3358:
3359: /--- Perl 5.11 gets some of these wrong ---/
3360:
3361: /(?>.(*ACCEPT))*?5/
3362: abcde
3363:
3364: /(.(*ACCEPT))*?5/
3365: abcde
3366:
3367: /(.(*ACCEPT))5/
3368: abcde
3369:
3370: /(.(*ACCEPT))*5/
3371: abcde
3372:
3373: /A\NB./BZ
3374: ACBD
3375: *** Failers
3376: A\nB
3377: ACB\n
3378:
3379: /A\NB./sBZ
3380: ACBD
3381: ACB\n
3382: *** Failers
3383: A\nB
3384:
3385: /A\NB/<crlf>
3386: A\nB
3387: A\rB
3388: ** Failers
3389: A\r\nB
3390:
3391: /\R+b/BZ
3392:
3393: /\R+\n/BZ
3394:
3395: /\R+\d/BZ
3396:
3397: /\d*\R/BZ
3398:
3399: /\s*\R/BZ
3400:
3401: /-- Perl treats this one differently, not failing the second string. I believe
3402: that is a bug in Perl. --/
3403:
3404: /^((abc|abcx)(*THEN)y|abcd)/
3405: abcd
3406: *** Failers
3407: abcxy
3408:
3409: /(?<=abc)def/
3410: abc\P\P
3411:
3412: /abc$/
3413: abc
3414: abc\P
3415: abc\P\P
3416:
3417: /abc$/m
3418: abc
3419: abc\n
3420: abc\P\P
3421: abc\n\P\P
3422: abc\P
3423: abc\n\P
3424:
3425: /abc\z/
3426: abc
3427: abc\P
3428: abc\P\P
3429:
3430: /abc\Z/
3431: abc
3432: abc\P
3433: abc\P\P
3434:
3435: /abc\b/
3436: abc
3437: abc\P
3438: abc\P\P
3439:
3440: /abc\B/
3441: abc
3442: abc\P
3443: abc\P\P
3444:
3445: /.+/
3446: abc\>0
3447: abc\>1
3448: abc\>2
3449: abc\>3
3450: abc\>4
3451: abc\>-4
3452:
3453: /^\cģ/
3454:
3455: /(?P<abn>(?P=abn)xxx)/BZ
3456:
3457: /(a\1z)/BZ
3458:
3459: /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
3460:
3461: /(?P<abn>(?P=axn)xxx)/BZ
3462:
3463: /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
3464:
3465: /-- These tests are here because Perl gets the first one wrong. --/
3466:
3467: /(\R*)(.)/s
3468: \r\n
3469: \r\r\n\n\r
3470: \r\r\n\n\r\n
3471:
3472: /(\R)*(.)/s
3473: \r\n
3474: \r\r\n\n\r
3475: \r\r\n\n\r\n
3476:
3477: /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
3478: \r\n
3479: \r\r\n\n\r
3480: \r\r\n\n\r\n
3481:
3482: /-- --/
3483:
3484: /^abc$/BZ
3485:
3486: /^abc$/BZm
3487:
3488: /^(a)*+(\w)/S
3489: aaaaX
3490: ** Failers
3491: aaaa
3492:
3493: /^(?:a)*+(\w)/S
3494: aaaaX
3495: ** Failers
3496: aaaa
3497:
3498: /(a)++1234/SDZ
3499:
3500: /([abc])++1234/SI
3501:
3502: /(?<=(abc)+)X/
3503:
3504: /(^ab)/I
3505:
3506: /(^ab)++/I
3507:
3508: /(^ab|^)+/I
3509:
3510: /(^ab|^)++/I
3511:
3512: /(?:^ab)/I
3513:
3514: /(?:^ab)++/I
3515:
3516: /(?:^ab|^)+/I
3517:
3518: /(?:^ab|^)++/I
3519:
3520: /(.*ab)/I
3521:
3522: /(.*ab)++/I
3523:
3524: /(.*ab|.*)+/I
3525:
3526: /(.*ab|.*)++/I
3527:
3528: /(?:.*ab)/I
3529:
3530: /(?:.*ab)++/I
3531:
3532: /(?:.*ab|.*)+/I
3533:
3534: /(?:.*ab|.*)++/I
3535:
3536: /(?=a)[bcd]/I
3537:
3538: /((?=a))[bcd]/I
3539:
3540: /((?=a))+[bcd]/I
3541:
3542: /((?=a))++[bcd]/I
3543:
3544: /(?=a+)[bcd]/iI
3545:
3546: /(?=a+?)[bcd]/iI
3547:
3548: /(?=a++)[bcd]/iI
3549:
3550: /(?=a{3})[bcd]/iI
3551:
3552: /(abc)\1+/S
3553:
3554: /-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
3555:
3556: /(?1)(?:(b(*ACCEPT))){0}/
3557: b
3558:
3559: /(?1)(?:(b(*ACCEPT))){0}c/
3560: bc
3561: ** Failers
3562: b
3563:
3564: /(?1)(?:((*ACCEPT))){0}c/
3565: c
3566: c\N
3567:
3568: /^.*?(?(?=a)a|b(*THEN)c)/
3569: ba
3570:
3571: /^.*?(?(?=a)a|bc)/
3572: ba
3573:
3574: /^.*?(?(?=a)a(*THEN)b|c)/
3575: ac
3576:
3577: /^.*?(?(?=a)a(*THEN)b)c/
3578: ac
3579:
3580: /^.*?(a(*THEN)b)c/
3581: aabc
3582:
3583: /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
3584: aabc
3585:
3586: /^.*?(a(*THEN)b|z)c/
3587: aabc
3588:
3589: /^.*?(z|a(*THEN)b)c/
3590: aabc
3591:
3592: /-- --/
3593:
3594: /-- These studied versions are here because they are not Perl-compatible; the
3595: studying means the mark is not seen. --/
3596:
3597: /(*MARK:A)(*SKIP:B)(C|X)/KS
3598: C
3599: D
3600:
3601: /(*:A)A+(*SKIP:A)(B|Z)/KS
3602: AAAC
3603:
3604: /-- --/
3605:
3606: "(?=a*(*ACCEPT)b)c"
3607: c
3608: c\N
3609:
3610: /(?1)c(?(DEFINE)((*ACCEPT)b))/
3611: c
3612: c\N
3613:
3614: /(?>(*ACCEPT)b)c/
3615: c
3616: c\N
3617:
3618: /(?:(?>(a)))+a%/++
3619: %aa%
3620:
3621: /(a)b|ac/++SS
3622: ac\O3
3623:
3624: /(a)(b)x|abc/++
3625: abc\O6
3626:
3627: /(a)bc|(a)(b)\2/
3628: \O3abc
3629: \O4abc
3630:
3631: /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
3632:
3633: /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
3634:
3635: /(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
3636:
3637: /(abc)(?1)/SI
3638:
3639: /^(?>a)++/
3640: aa\M
3641: aaaaaaaaa\M
3642:
3643: /(a)(?1)++/
3644: aa\M
3645: aaaaaaaaa\M
3646:
3647: /(?:(foo)|(bar)|(baz))X/SS=
3648: bazfooX
3649: foobazbarX
3650: barfooX
3651: bazX
3652: foobarbazX
3653: bazfooX\O0
3654: bazfooX\O2
3655: bazfooX\O4
3656: bazfooX\O6
3657: bazfooX\O8
3658: bazfooX\O10
3659:
3660: /(?=abc){3}abc/BZ
3661:
3662: /(?=abc)+abc/BZ
3663:
3664: /(?=abc)++abc/BZ
3665:
3666: /(?=abc){0}xyz/BZ
3667:
3668: /(?=(a))?./BZ
3669:
3670: /(?=(a))??./BZ
3671:
3672: /^(?=(a)){0}b(?1)/BZ
3673:
3674: /(?(DEFINE)(a))?b(?1)/BZ
3675:
3676: /^(?=(?1))?[az]([abc])d/BZ
3677:
3678: /^(?!a){0}\w+/BZ
3679:
3680: /(?<=(abc))?xyz/BZ
3681:
3682: /[:a[:abc]b:]/BZ
3683:
3684: /((?2))((?1))/SS
3685: abc
3686:
3687: /((?(R2)a+|(?1)b))/SS
3688: aaaabcde
3689:
3690: /(?(R)a*(?1)|((?R))b)/SS
3691: aaaabcde
3692:
3693: /(a+|(?R)b)/
3694:
3695: /^(a(*:A)(d|e(*:B))z|aeq)/C
3696: adz
3697: aez
3698: aeqwerty
3699:
3700: /.(*F)/
3701: \P\Pabc
3702:
3703: /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
3704:
3705: /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
3706:
3707: /a(*SKIP)c|b(*ACCEPT)|/+SI
3708: a
3709:
3710: /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
3711: ax
3712:
3713: 'a*(*ACCEPT)b'+
3714: \N\N
3715: abc\N\N
3716: bbb\N\N
3717:
3718: /(*ACCEPT)a/+I
3719: bax
3720:
3721: /z(*ACCEPT)a/+I
3722: baxzbx
3723:
3724: /a(?:.)*?a/ims
3725: \Mabbbbbbbbbbbbbbbbbbbbba
3726:
3727: /a(?:.(*THEN))*?a/ims
3728: \Mabbbbbbbbbbbbbbbbbbbbba
3729:
3730: /a(?:.(*THEN:ABC))*?a/ims
3731: \Mabbbbbbbbbbbbbbbbbbbbba
3732:
3733: /-- These tests are in agreement with development Perl 5.015, which has fixed
3734: some things, but they don't all work with 5.012, so they aren't in the
3735: Perl-compatible tests. Those after the first come from Perl's own test
3736: files. --/
3737:
3738: /^((yes|no)(*THEN)(*F))?/
3739: yes
3740:
3741: /(A (.*) C? (*THEN) | A D) (*FAIL)/x
3742: AbcdCBefgBhiBqz
3743:
3744: /(A (.*) C? (*THEN) | A D) z/x
3745: AbcdCBefgBhiBqz
3746:
3747: /(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
3748: AbcdCBefgBhiBqz
3749:
3750: /(A (.*) C? (*THEN) | A D) \s* z/x
3751: AbcdCBefgBhiBqz
3752:
3753: /(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
3754: AbcdCBefgBhiBqz
3755:
3756: /(A (.*) (?:C|) (*THEN) | A D) z/x
3757: AbcdCBefgBhiBqz
3758:
3759: /(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
3760: AbcdCBefgBhiBqz
3761:
3762: /(A (.*) C{0,6} (*THEN) | A D) z/x
3763: AbcdCBefgBhiBqz
3764:
3765: /(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
3766: AbcdCEBefgBhiBqz
3767:
3768: /(A (.*) (CE){0,6} (*THEN) | A D) z/x
3769: AbcdCEBefgBhiBqz
3770:
3771: /(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
3772: AbcdCBefgBhiBqz
3773:
3774: /(A (.*) (CE*){0,6} (*THEN) | A D) z/x
3775: AbcdCBefgBhiBqz
3776:
3777: /-----------------------------------------------/
3778:
3779: /^(?>a+)(?>(z+))\w/BZ
3780: aaaazzzzb
3781: ** Failers
3782: aazz
3783:
3784: /(.)(\1|a(?2))/
3785: bab
3786:
3787: /\1|(.)(?R)\1/
3788: cbbbc
3789:
3790: /(.)((?(1)c|a)|a(?2))/
3791: baa
3792:
3793: /(?P<abn>(?P=abn)xxx)/BZ
3794:
3795: /(a\1z)/BZ
3796:
3797: /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
3798: \Maabbccddee
3799:
3800: /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
3801: \Maabbccddee
3802:
3803: /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
3804: \Maabbccddee
3805:
3806: /^a\x41z/<JS>
3807: aAz
3808: *** Failers
3809: ax41z
3810:
3811: /^a[m\x41]z/<JS>
3812: aAz
3813:
3814: /^a\x1z/<JS>
3815: ax1z
3816:
3817: /^a\u0041z/<JS>
3818: aAz
3819: *** Failers
3820: au0041z
3821:
3822: /^a[m\u0041]z/<JS>
3823: aAz
3824:
3825: /^a\u041z/<JS>
3826: au041z
3827: *** Failers
3828: aAz
3829:
3830: /^a\U0041z/<JS>
3831: aU0041z
3832: *** Failers
3833: aAz
3834:
3835: /(?(?=c)c|d)++Y/BZ
3836:
3837: /(?(?=c)c|d)*+Y/BZ
3838:
3839: /a[\NB]c/
3840: aNc
3841:
3842: /a[B-\Nc]/
3843:
3844: /(a)(?2){0,1999}?(b)/
3845:
3846: /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
3847:
3848: /--- This test, with something more complicated than individual letters, causes
3849: different behaviour in Perl. Perhaps it disables some optimization; no tag is
3850: passed back for the failures, whereas in PCRE there is a tag. ---/
3851:
3852: /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
3853: AABC
3854: XXYZ
3855: ** Failers
3856: XAQQ
3857: XAQQXZZ
3858: AXQQQ
3859: AXXQQQ
3860:
3861: /-- Perl doesn't give marks for these, though it does if the alternatives are
3862: replaced by single letters. --/
3863:
3864: /(b|q)(*:m)f|a(*:n)w/K
3865: aw
3866: ** Failers
3867: abc
3868:
3869: /(q|b)(*:m)f|a(*:n)w/K
3870: aw
3871: ** Failers
3872: abc
3873:
3874: /-- After a partial match, the behaviour is as for a failure. --/
3875:
3876: /^a(*:X)bcde/K
3877: abc\P
3878:
3879: /-- End of testinput2 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>