Annotation of embedaddon/pcre/testdata/testoutput1, revision 1.1.1.1
1.1 misho 1: /-- This set of tests is for features that are compatible with all versions of
2: Perl 5, in non-UTF-8 mode. --/
3:
4: /the quick brown fox/
5: the quick brown fox
6: 0: the quick brown fox
7: The quick brown FOX
8: No match
9: What do you know about the quick brown fox?
10: 0: the quick brown fox
11: What do you know about THE QUICK BROWN FOX?
12: No match
13:
14: /The quick brown fox/i
15: the quick brown fox
16: 0: the quick brown fox
17: The quick brown FOX
18: 0: The quick brown FOX
19: What do you know about the quick brown fox?
20: 0: the quick brown fox
21: What do you know about THE QUICK BROWN FOX?
22: 0: THE QUICK BROWN FOX
23:
24: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
25: abcd\t\n\r\f\a\e9;\$\\?caxyz
26: 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
27:
28: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
29: abxyzpqrrrabbxyyyypqAzz
30: 0: abxyzpqrrrabbxyyyypqAzz
31: abxyzpqrrrabbxyyyypqAzz
32: 0: abxyzpqrrrabbxyyyypqAzz
33: aabxyzpqrrrabbxyyyypqAzz
34: 0: aabxyzpqrrrabbxyyyypqAzz
35: aaabxyzpqrrrabbxyyyypqAzz
36: 0: aaabxyzpqrrrabbxyyyypqAzz
37: aaaabxyzpqrrrabbxyyyypqAzz
38: 0: aaaabxyzpqrrrabbxyyyypqAzz
39: abcxyzpqrrrabbxyyyypqAzz
40: 0: abcxyzpqrrrabbxyyyypqAzz
41: aabcxyzpqrrrabbxyyyypqAzz
42: 0: aabcxyzpqrrrabbxyyyypqAzz
43: aaabcxyzpqrrrabbxyyyypAzz
44: 0: aaabcxyzpqrrrabbxyyyypAzz
45: aaabcxyzpqrrrabbxyyyypqAzz
46: 0: aaabcxyzpqrrrabbxyyyypqAzz
47: aaabcxyzpqrrrabbxyyyypqqAzz
48: 0: aaabcxyzpqrrrabbxyyyypqqAzz
49: aaabcxyzpqrrrabbxyyyypqqqAzz
50: 0: aaabcxyzpqrrrabbxyyyypqqqAzz
51: aaabcxyzpqrrrabbxyyyypqqqqAzz
52: 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
53: aaabcxyzpqrrrabbxyyyypqqqqqAzz
54: 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
55: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
56: 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
57: aaaabcxyzpqrrrabbxyyyypqAzz
58: 0: aaaabcxyzpqrrrabbxyyyypqAzz
59: abxyzzpqrrrabbxyyyypqAzz
60: 0: abxyzzpqrrrabbxyyyypqAzz
61: aabxyzzzpqrrrabbxyyyypqAzz
62: 0: aabxyzzzpqrrrabbxyyyypqAzz
63: aaabxyzzzzpqrrrabbxyyyypqAzz
64: 0: aaabxyzzzzpqrrrabbxyyyypqAzz
65: aaaabxyzzzzpqrrrabbxyyyypqAzz
66: 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
67: abcxyzzpqrrrabbxyyyypqAzz
68: 0: abcxyzzpqrrrabbxyyyypqAzz
69: aabcxyzzzpqrrrabbxyyyypqAzz
70: 0: aabcxyzzzpqrrrabbxyyyypqAzz
71: aaabcxyzzzzpqrrrabbxyyyypqAzz
72: 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
73: aaaabcxyzzzzpqrrrabbxyyyypqAzz
74: 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
75: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
76: 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
77: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
78: 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
79: aaabcxyzpqrrrabbxyyyypABzz
80: 0: aaabcxyzpqrrrabbxyyyypABzz
81: aaabcxyzpqrrrabbxyyyypABBzz
82: 0: aaabcxyzpqrrrabbxyyyypABBzz
83: >>>aaabxyzpqrrrabbxyyyypqAzz
84: 0: aaabxyzpqrrrabbxyyyypqAzz
85: >aaaabxyzpqrrrabbxyyyypqAzz
86: 0: aaaabxyzpqrrrabbxyyyypqAzz
87: >>>>abcxyzpqrrrabbxyyyypqAzz
88: 0: abcxyzpqrrrabbxyyyypqAzz
89: *** Failers
90: No match
91: abxyzpqrrabbxyyyypqAzz
92: No match
93: abxyzpqrrrrabbxyyyypqAzz
94: No match
95: abxyzpqrrrabxyyyypqAzz
96: No match
97: aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
98: No match
99: aaaabcxyzzzzpqrrrabbbxyyypqAzz
100: No match
101: aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
102: No match
103:
104: /^(abc){1,2}zz/
105: abczz
106: 0: abczz
107: 1: abc
108: abcabczz
109: 0: abcabczz
110: 1: abc
111: *** Failers
112: No match
113: zz
114: No match
115: abcabcabczz
116: No match
117: >>abczz
118: No match
119:
120: /^(b+?|a){1,2}?c/
121: bc
122: 0: bc
123: 1: b
124: bbc
125: 0: bbc
126: 1: b
127: bbbc
128: 0: bbbc
129: 1: bb
130: bac
131: 0: bac
132: 1: a
133: bbac
134: 0: bbac
135: 1: a
136: aac
137: 0: aac
138: 1: a
139: abbbbbbbbbbbc
140: 0: abbbbbbbbbbbc
141: 1: bbbbbbbbbbb
142: bbbbbbbbbbbac
143: 0: bbbbbbbbbbbac
144: 1: a
145: *** Failers
146: No match
147: aaac
148: No match
149: abbbbbbbbbbbac
150: No match
151:
152: /^(b+|a){1,2}c/
153: bc
154: 0: bc
155: 1: b
156: bbc
157: 0: bbc
158: 1: bb
159: bbbc
160: 0: bbbc
161: 1: bbb
162: bac
163: 0: bac
164: 1: a
165: bbac
166: 0: bbac
167: 1: a
168: aac
169: 0: aac
170: 1: a
171: abbbbbbbbbbbc
172: 0: abbbbbbbbbbbc
173: 1: bbbbbbbbbbb
174: bbbbbbbbbbbac
175: 0: bbbbbbbbbbbac
176: 1: a
177: *** Failers
178: No match
179: aaac
180: No match
181: abbbbbbbbbbbac
182: No match
183:
184: /^(b+|a){1,2}?bc/
185: bbc
186: 0: bbc
187: 1: b
188:
189: /^(b*|ba){1,2}?bc/
190: babc
191: 0: babc
192: 1: ba
193: bbabc
194: 0: bbabc
195: 1: ba
196: bababc
197: 0: bababc
198: 1: ba
199: *** Failers
200: No match
201: bababbc
202: No match
203: babababc
204: No match
205:
206: /^(ba|b*){1,2}?bc/
207: babc
208: 0: babc
209: 1: ba
210: bbabc
211: 0: bbabc
212: 1: ba
213: bababc
214: 0: bababc
215: 1: ba
216: *** Failers
217: No match
218: bababbc
219: No match
220: babababc
221: No match
222:
223: /^\ca\cA\c[\c{\c:/
224: \x01\x01\e;z
225: 0: \x01\x01\x1b;z
226:
227: /^[ab\]cde]/
228: athing
229: 0: a
230: bthing
231: 0: b
232: ]thing
233: 0: ]
234: cthing
235: 0: c
236: dthing
237: 0: d
238: ething
239: 0: e
240: *** Failers
241: No match
242: fthing
243: No match
244: [thing
245: No match
246: \\thing
247: No match
248:
249: /^[]cde]/
250: ]thing
251: 0: ]
252: cthing
253: 0: c
254: dthing
255: 0: d
256: ething
257: 0: e
258: *** Failers
259: No match
260: athing
261: No match
262: fthing
263: No match
264:
265: /^[^ab\]cde]/
266: fthing
267: 0: f
268: [thing
269: 0: [
270: \\thing
271: 0: \
272: *** Failers
273: 0: *
274: athing
275: No match
276: bthing
277: No match
278: ]thing
279: No match
280: cthing
281: No match
282: dthing
283: No match
284: ething
285: No match
286:
287: /^[^]cde]/
288: athing
289: 0: a
290: fthing
291: 0: f
292: *** Failers
293: 0: *
294: ]thing
295: No match
296: cthing
297: No match
298: dthing
299: No match
300: ething
301: No match
302:
303: /^\/
304:
305: 0: \x81
306:
307: /^/
308:
309: 0: \xff
310:
311: /^[0-9]+$/
312: 0
313: 0: 0
314: 1
315: 0: 1
316: 2
317: 0: 2
318: 3
319: 0: 3
320: 4
321: 0: 4
322: 5
323: 0: 5
324: 6
325: 0: 6
326: 7
327: 0: 7
328: 8
329: 0: 8
330: 9
331: 0: 9
332: 10
333: 0: 10
334: 100
335: 0: 100
336: *** Failers
337: No match
338: abc
339: No match
340:
341: /^.*nter/
342: enter
343: 0: enter
344: inter
345: 0: inter
346: uponter
347: 0: uponter
348:
349: /^xxx[0-9]+$/
350: xxx0
351: 0: xxx0
352: xxx1234
353: 0: xxx1234
354: *** Failers
355: No match
356: xxx
357: No match
358:
359: /^.+[0-9][0-9][0-9]$/
360: x123
361: 0: x123
362: xx123
363: 0: xx123
364: 123456
365: 0: 123456
366: *** Failers
367: No match
368: 123
369: No match
370: x1234
371: 0: x1234
372:
373: /^.+?[0-9][0-9][0-9]$/
374: x123
375: 0: x123
376: xx123
377: 0: xx123
378: 123456
379: 0: 123456
380: *** Failers
381: No match
382: 123
383: No match
384: x1234
385: 0: x1234
386:
387: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
388: abc!pqr=apquxz.ixr.zzz.ac.uk
389: 0: abc!pqr=apquxz.ixr.zzz.ac.uk
390: 1: abc
391: 2: pqr
392: *** Failers
393: No match
394: !pqr=apquxz.ixr.zzz.ac.uk
395: No match
396: abc!=apquxz.ixr.zzz.ac.uk
397: No match
398: abc!pqr=apquxz:ixr.zzz.ac.uk
399: No match
400: abc!pqr=apquxz.ixr.zzz.ac.ukk
401: No match
402:
403: /:/
404: Well, we need a colon: somewhere
405: 0: :
406: *** Fail if we don't
407: No match
408:
409: /([\da-f:]+)$/i
410: 0abc
411: 0: 0abc
412: 1: 0abc
413: abc
414: 0: abc
415: 1: abc
416: fed
417: 0: fed
418: 1: fed
419: E
420: 0: E
421: 1: E
422: ::
423: 0: ::
424: 1: ::
425: 5f03:12C0::932e
426: 0: 5f03:12C0::932e
427: 1: 5f03:12C0::932e
428: fed def
429: 0: def
430: 1: def
431: Any old stuff
432: 0: ff
433: 1: ff
434: *** Failers
435: No match
436: 0zzz
437: No match
438: gzzz
439: No match
440: fed\x20
441: No match
442: Any old rubbish
443: No match
444:
445: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
446: .1.2.3
447: 0: .1.2.3
448: 1: 1
449: 2: 2
450: 3: 3
451: A.12.123.0
452: 0: A.12.123.0
453: 1: 12
454: 2: 123
455: 3: 0
456: *** Failers
457: No match
458: .1.2.3333
459: No match
460: 1.2.3
461: No match
462: 1234.2.3
463: No match
464:
465: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
466: 1 IN SOA non-sp1 non-sp2(
467: 0: 1 IN SOA non-sp1 non-sp2(
468: 1: 1
469: 2: non-sp1
470: 3: non-sp2
471: 1 IN SOA non-sp1 non-sp2 (
472: 0: 1 IN SOA non-sp1 non-sp2 (
473: 1: 1
474: 2: non-sp1
475: 3: non-sp2
476: *** Failers
477: No match
478: 1IN SOA non-sp1 non-sp2(
479: No match
480:
481: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
482: a.
483: 0: a.
484: Z.
485: 0: Z.
486: 2.
487: 0: 2.
488: ab-c.pq-r.
489: 0: ab-c.pq-r.
490: 1: .pq-r
491: sxk.zzz.ac.uk.
492: 0: sxk.zzz.ac.uk.
493: 1: .uk
494: x-.y-.
495: 0: x-.y-.
496: 1: .y-
497: *** Failers
498: No match
499: -abc.peq.
500: No match
501:
502: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
503: *.a
504: 0: *.a
505: *.b0-a
506: 0: *.b0-a
507: 1: 0-a
508: *.c3-b.c
509: 0: *.c3-b.c
510: 1: 3-b
511: 2: .c
512: *.c-a.b-c
513: 0: *.c-a.b-c
514: 1: -a
515: 2: .b-c
516: 3: -c
517: *** Failers
518: No match
519: *.0
520: No match
521: *.a-
522: No match
523: *.a-b.c-
524: No match
525: *.c-a.0-c
526: No match
527:
528: /^(?=ab(de))(abd)(e)/
529: abde
530: 0: abde
531: 1: de
532: 2: abd
533: 3: e
534:
535: /^(?!(ab)de|x)(abd)(f)/
536: abdf
537: 0: abdf
538: 1: <unset>
539: 2: abd
540: 3: f
541:
542: /^(?=(ab(cd)))(ab)/
543: abcd
544: 0: ab
545: 1: abcd
546: 2: cd
547: 3: ab
548:
549: /^[\da-f](\.[\da-f])*$/i
550: a.b.c.d
551: 0: a.b.c.d
552: 1: .d
553: A.B.C.D
554: 0: A.B.C.D
555: 1: .D
556: a.b.c.1.2.3.C
557: 0: a.b.c.1.2.3.C
558: 1: .C
559:
560: /^\".*\"\s*(;.*)?$/
561: \"1234\"
562: 0: "1234"
563: \"abcd\" ;
564: 0: "abcd" ;
565: 1: ;
566: \"\" ; rhubarb
567: 0: "" ; rhubarb
568: 1: ; rhubarb
569: *** Failers
570: No match
571: \"1234\" : things
572: No match
573:
574: /^$/
575: \
576: 0:
577: *** Failers
578: No match
579:
580: / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
581: ab c
582: 0: ab c
583: *** Failers
584: No match
585: abc
586: No match
587: ab cde
588: No match
589:
590: /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
591: ab c
592: 0: ab c
593: *** Failers
594: No match
595: abc
596: No match
597: ab cde
598: No match
599:
600: /^ a\ b[c ]d $/x
601: a bcd
602: 0: a bcd
603: a b d
604: 0: a b d
605: *** Failers
606: No match
607: abcd
608: No match
609: ab d
610: No match
611:
612: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
613: abcdefhijklm
614: 0: abcdefhijklm
615: 1: abc
616: 2: bc
617: 3: c
618: 4: def
619: 5: ef
620: 6: f
621: 7: hij
622: 8: ij
623: 9: j
624: 10: klm
625: 11: lm
626: 12: m
627:
628: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
629: abcdefhijklm
630: 0: abcdefhijklm
631: 1: bc
632: 2: c
633: 3: ef
634: 4: f
635: 5: ij
636: 6: j
637: 7: lm
638: 8: m
639:
640: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
641: a+ Z0+\x08\n\x1d\x12
642: 0: a+ Z0+\x08\x0a\x1d\x12
643:
644: /^[.^$|()*+?{,}]+/
645: .^\$(*+)|{?,?}
646: 0: .^$(*+)|{?,?}
647:
648: /^a*\w/
649: z
650: 0: z
651: az
652: 0: az
653: aaaz
654: 0: aaaz
655: a
656: 0: a
657: aa
658: 0: aa
659: aaaa
660: 0: aaaa
661: a+
662: 0: a
663: aa+
664: 0: aa
665:
666: /^a*?\w/
667: z
668: 0: z
669: az
670: 0: a
671: aaaz
672: 0: a
673: a
674: 0: a
675: aa
676: 0: a
677: aaaa
678: 0: a
679: a+
680: 0: a
681: aa+
682: 0: a
683:
684: /^a+\w/
685: az
686: 0: az
687: aaaz
688: 0: aaaz
689: aa
690: 0: aa
691: aaaa
692: 0: aaaa
693: aa+
694: 0: aa
695:
696: /^a+?\w/
697: az
698: 0: az
699: aaaz
700: 0: aa
701: aa
702: 0: aa
703: aaaa
704: 0: aa
705: aa+
706: 0: aa
707:
708: /^\d{8}\w{2,}/
709: 1234567890
710: 0: 1234567890
711: 12345678ab
712: 0: 12345678ab
713: 12345678__
714: 0: 12345678__
715: *** Failers
716: No match
717: 1234567
718: No match
719:
720: /^[aeiou\d]{4,5}$/
721: uoie
722: 0: uoie
723: 1234
724: 0: 1234
725: 12345
726: 0: 12345
727: aaaaa
728: 0: aaaaa
729: *** Failers
730: No match
731: 123456
732: No match
733:
734: /^[aeiou\d]{4,5}?/
735: uoie
736: 0: uoie
737: 1234
738: 0: 1234
739: 12345
740: 0: 1234
741: aaaaa
742: 0: aaaa
743: 123456
744: 0: 1234
745:
746: /\A(abc|def)=(\1){2,3}\Z/
747: abc=abcabc
748: 0: abc=abcabc
749: 1: abc
750: 2: abc
751: def=defdefdef
752: 0: def=defdefdef
753: 1: def
754: 2: def
755: *** Failers
756: No match
757: abc=defdef
758: No match
759:
760: /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
761: abcdefghijkcda2
762: 0: abcdefghijkcda2
763: 1: a
764: 2: b
765: 3: c
766: 4: d
767: 5: e
768: 6: f
769: 7: g
770: 8: h
771: 9: i
772: 10: j
773: 11: k
774: 12: cd
775: abcdefghijkkkkcda2
776: 0: abcdefghijkkkkcda2
777: 1: a
778: 2: b
779: 3: c
780: 4: d
781: 5: e
782: 6: f
783: 7: g
784: 8: h
785: 9: i
786: 10: j
787: 11: k
788: 12: cd
789:
790: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
791: cataract cataract23
792: 0: cataract cataract23
793: 1: cataract
794: 2: aract
795: 3: ract
796: 4:
797: 5: 3
798: catatonic catatonic23
799: 0: catatonic catatonic23
800: 1: catatonic
801: 2: atonic
802: 3: tonic
803: 4:
804: 5: 3
805: caterpillar caterpillar23
806: 0: caterpillar caterpillar23
807: 1: caterpillar
808: 2: erpillar
809: 3: <unset>
810: 4:
811: 5: 3
812:
813:
814: /^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]/
815: From abcd Mon Sep 01 12:33:02 1997
816: 0: From abcd Mon Sep 01 12:33
817: 1: abcd
818:
819: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
820: From abcd Mon Sep 01 12:33:02 1997
821: 0: From abcd Mon Sep 01 12:33
822: 1: Sep
823: From abcd Mon Sep 1 12:33:02 1997
824: 0: From abcd Mon Sep 1 12:33
825: 1: Sep
826: *** Failers
827: No match
828: From abcd Sep 01 12:33:02 1997
829: No match
830:
831: /^12.34/s
832: 12\n34
833: 0: 12\x0a34
834: 12\r34
835: 0: 12\x0d34
836:
837: /\w+(?=\t)/
838: the quick brown\t fox
839: 0: brown
840:
841: /foo(?!bar)(.*)/
842: foobar is foolish see?
843: 0: foolish see?
844: 1: lish see?
845:
846: /(?:(?!foo)...|^.{0,2})bar(.*)/
847: foobar crowbar etc
848: 0: rowbar etc
849: 1: etc
850: barrel
851: 0: barrel
852: 1: rel
853: 2barrel
854: 0: 2barrel
855: 1: rel
856: A barrel
857: 0: A barrel
858: 1: rel
859:
860: /^(\D*)(?=\d)(?!123)/
861: abc456
862: 0: abc
863: 1: abc
864: *** Failers
865: No match
866: abc123
867: No match
868:
869: /^1234(?# test newlines
870: inside)/
871: 1234
872: 0: 1234
873:
874: /^1234 #comment in extended re
875: /x
876: 1234
877: 0: 1234
878:
879: /#rhubarb
880: abcd/x
881: abcd
882: 0: abcd
883:
884: /^abcd#rhubarb/x
885: abcd
886: 0: abcd
887:
888: /^(a)\1{2,3}(.)/
889: aaab
890: 0: aaab
891: 1: a
892: 2: b
893: aaaab
894: 0: aaaab
895: 1: a
896: 2: b
897: aaaaab
898: 0: aaaaa
899: 1: a
900: 2: a
901: aaaaaab
902: 0: aaaaa
903: 1: a
904: 2: a
905:
906: /(?!^)abc/
907: the abc
908: 0: abc
909: *** Failers
910: No match
911: abc
912: No match
913:
914: /(?=^)abc/
915: abc
916: 0: abc
917: *** Failers
918: No match
919: the abc
920: No match
921:
922: /^[ab]{1,3}(ab*|b)/
923: aabbbbb
924: 0: aabb
925: 1: b
926:
927: /^[ab]{1,3}?(ab*|b)/
928: aabbbbb
929: 0: aabbbbb
930: 1: abbbbb
931:
932: /^[ab]{1,3}?(ab*?|b)/
933: aabbbbb
934: 0: aa
935: 1: a
936:
937: /^[ab]{1,3}(ab*?|b)/
938: aabbbbb
939: 0: aabb
940: 1: b
941:
942: / (?: [\040\t] | \(
943: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
944: \) )* # optional leading comment
945: (?: (?:
946: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
947: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
948: |
949: " (?: # opening quote...
950: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
951: | # or
952: \\ [^\x80-\xff] # Escaped something (something != CR)
953: )* " # closing quote
954: ) # initial word
955: (?: (?: [\040\t] | \(
956: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
957: \) )* \. (?: [\040\t] | \(
958: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
959: \) )* (?:
960: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
961: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
962: |
963: " (?: # opening quote...
964: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
965: | # or
966: \\ [^\x80-\xff] # Escaped something (something != CR)
967: )* " # closing quote
968: ) )* # further okay, if led by a period
969: (?: [\040\t] | \(
970: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
971: \) )* @ (?: [\040\t] | \(
972: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
973: \) )* (?:
974: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
975: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
976: | \[ # [
977: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
978: \] # ]
979: ) # initial subdomain
980: (?: #
981: (?: [\040\t] | \(
982: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
983: \) )* \. # if led by a period...
984: (?: [\040\t] | \(
985: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
986: \) )* (?:
987: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
988: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
989: | \[ # [
990: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
991: \] # ]
992: ) # ...further okay
993: )*
994: # address
995: | # or
996: (?:
997: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
998: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
999: |
1000: " (?: # opening quote...
1001: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1002: | # or
1003: \\ [^\x80-\xff] # Escaped something (something != CR)
1004: )* " # closing quote
1005: ) # one word, optionally followed by....
1006: (?:
1007: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1008: \(
1009: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1010: \) | # comments, or...
1011:
1012: " (?: # opening quote...
1013: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1014: | # or
1015: \\ [^\x80-\xff] # Escaped something (something != CR)
1016: )* " # closing quote
1017: # quoted strings
1018: )*
1019: < (?: [\040\t] | \(
1020: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1021: \) )* # leading <
1022: (?: @ (?: [\040\t] | \(
1023: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1024: \) )* (?:
1025: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1026: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1027: | \[ # [
1028: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1029: \] # ]
1030: ) # initial subdomain
1031: (?: #
1032: (?: [\040\t] | \(
1033: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1034: \) )* \. # if led by a period...
1035: (?: [\040\t] | \(
1036: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1037: \) )* (?:
1038: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1039: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1040: | \[ # [
1041: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1042: \] # ]
1043: ) # ...further okay
1044: )*
1045:
1046: (?: (?: [\040\t] | \(
1047: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1048: \) )* , (?: [\040\t] | \(
1049: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1050: \) )* @ (?: [\040\t] | \(
1051: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1052: \) )* (?:
1053: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1054: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1055: | \[ # [
1056: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1057: \] # ]
1058: ) # initial subdomain
1059: (?: #
1060: (?: [\040\t] | \(
1061: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1062: \) )* \. # if led by a period...
1063: (?: [\040\t] | \(
1064: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1065: \) )* (?:
1066: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1067: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1068: | \[ # [
1069: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1070: \] # ]
1071: ) # ...further okay
1072: )*
1073: )* # further okay, if led by comma
1074: : # closing colon
1075: (?: [\040\t] | \(
1076: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1077: \) )* )? # optional route
1078: (?:
1079: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1080: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1081: |
1082: " (?: # opening quote...
1083: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1084: | # or
1085: \\ [^\x80-\xff] # Escaped something (something != CR)
1086: )* " # closing quote
1087: ) # initial word
1088: (?: (?: [\040\t] | \(
1089: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1090: \) )* \. (?: [\040\t] | \(
1091: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1092: \) )* (?:
1093: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1094: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1095: |
1096: " (?: # opening quote...
1097: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1098: | # or
1099: \\ [^\x80-\xff] # Escaped something (something != CR)
1100: )* " # closing quote
1101: ) )* # further okay, if led by a period
1102: (?: [\040\t] | \(
1103: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1104: \) )* @ (?: [\040\t] | \(
1105: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1106: \) )* (?:
1107: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1108: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1109: | \[ # [
1110: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1111: \] # ]
1112: ) # initial subdomain
1113: (?: #
1114: (?: [\040\t] | \(
1115: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1116: \) )* \. # if led by a period...
1117: (?: [\040\t] | \(
1118: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1119: \) )* (?:
1120: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1121: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1122: | \[ # [
1123: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1124: \] # ]
1125: ) # ...further okay
1126: )*
1127: # address spec
1128: (?: [\040\t] | \(
1129: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1130: \) )* > # trailing >
1131: # name and address
1132: ) (?: [\040\t] | \(
1133: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1134: \) )* # optional trailing comment
1135: /x
1136: Alan Other <user\@dom.ain>
1137: 0: Alan Other <user@dom.ain>
1138: <user\@dom.ain>
1139: 0: user@dom.ain
1140: user\@dom.ain
1141: 0: user@dom.ain
1142: \"A. Other\" <user.1234\@dom.ain> (a comment)
1143: 0: "A. Other" <user.1234@dom.ain> (a comment)
1144: A. Other <user.1234\@dom.ain> (a comment)
1145: 0: Other <user.1234@dom.ain> (a comment)
1146: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1147: 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1148: A missing angle <user\@some.where
1149: 0: user@some.where
1150: *** Failers
1151: No match
1152: The quick brown fox
1153: No match
1154:
1155: /[\040\t]* # Nab whitespace.
1156: (?:
1157: \( # (
1158: [^\\\x80-\xff\n\015()] * # normal*
1159: (?: # (
1160: (?: \\ [^\x80-\xff] |
1161: \( # (
1162: [^\\\x80-\xff\n\015()] * # normal*
1163: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1164: \) # )
1165: ) # special
1166: [^\\\x80-\xff\n\015()] * # normal*
1167: )* # )*
1168: \) # )
1169: [\040\t]* )* # If comment found, allow more spaces.
1170: # optional leading comment
1171: (?:
1172: (?:
1173: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1174: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1175: # Atom
1176: | # or
1177: " # "
1178: [^\\\x80-\xff\n\015"] * # normal
1179: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1180: " # "
1181: # Quoted string
1182: )
1183: [\040\t]* # Nab whitespace.
1184: (?:
1185: \( # (
1186: [^\\\x80-\xff\n\015()] * # normal*
1187: (?: # (
1188: (?: \\ [^\x80-\xff] |
1189: \( # (
1190: [^\\\x80-\xff\n\015()] * # normal*
1191: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1192: \) # )
1193: ) # special
1194: [^\\\x80-\xff\n\015()] * # normal*
1195: )* # )*
1196: \) # )
1197: [\040\t]* )* # If comment found, allow more spaces.
1198: (?:
1199: \.
1200: [\040\t]* # Nab whitespace.
1201: (?:
1202: \( # (
1203: [^\\\x80-\xff\n\015()] * # normal*
1204: (?: # (
1205: (?: \\ [^\x80-\xff] |
1206: \( # (
1207: [^\\\x80-\xff\n\015()] * # normal*
1208: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1209: \) # )
1210: ) # special
1211: [^\\\x80-\xff\n\015()] * # normal*
1212: )* # )*
1213: \) # )
1214: [\040\t]* )* # If comment found, allow more spaces.
1215: (?:
1216: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1217: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1218: # Atom
1219: | # or
1220: " # "
1221: [^\\\x80-\xff\n\015"] * # normal
1222: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1223: " # "
1224: # Quoted string
1225: )
1226: [\040\t]* # Nab whitespace.
1227: (?:
1228: \( # (
1229: [^\\\x80-\xff\n\015()] * # normal*
1230: (?: # (
1231: (?: \\ [^\x80-\xff] |
1232: \( # (
1233: [^\\\x80-\xff\n\015()] * # normal*
1234: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1235: \) # )
1236: ) # special
1237: [^\\\x80-\xff\n\015()] * # normal*
1238: )* # )*
1239: \) # )
1240: [\040\t]* )* # If comment found, allow more spaces.
1241: # additional words
1242: )*
1243: @
1244: [\040\t]* # Nab whitespace.
1245: (?:
1246: \( # (
1247: [^\\\x80-\xff\n\015()] * # normal*
1248: (?: # (
1249: (?: \\ [^\x80-\xff] |
1250: \( # (
1251: [^\\\x80-\xff\n\015()] * # normal*
1252: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1253: \) # )
1254: ) # special
1255: [^\\\x80-\xff\n\015()] * # normal*
1256: )* # )*
1257: \) # )
1258: [\040\t]* )* # If comment found, allow more spaces.
1259: (?:
1260: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1261: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1262: |
1263: \[ # [
1264: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1265: \] # ]
1266: )
1267: [\040\t]* # Nab whitespace.
1268: (?:
1269: \( # (
1270: [^\\\x80-\xff\n\015()] * # normal*
1271: (?: # (
1272: (?: \\ [^\x80-\xff] |
1273: \( # (
1274: [^\\\x80-\xff\n\015()] * # normal*
1275: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1276: \) # )
1277: ) # special
1278: [^\\\x80-\xff\n\015()] * # normal*
1279: )* # )*
1280: \) # )
1281: [\040\t]* )* # If comment found, allow more spaces.
1282: # optional trailing comments
1283: (?:
1284: \.
1285: [\040\t]* # Nab whitespace.
1286: (?:
1287: \( # (
1288: [^\\\x80-\xff\n\015()] * # normal*
1289: (?: # (
1290: (?: \\ [^\x80-\xff] |
1291: \( # (
1292: [^\\\x80-\xff\n\015()] * # normal*
1293: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1294: \) # )
1295: ) # special
1296: [^\\\x80-\xff\n\015()] * # normal*
1297: )* # )*
1298: \) # )
1299: [\040\t]* )* # If comment found, allow more spaces.
1300: (?:
1301: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1302: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1303: |
1304: \[ # [
1305: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1306: \] # ]
1307: )
1308: [\040\t]* # Nab whitespace.
1309: (?:
1310: \( # (
1311: [^\\\x80-\xff\n\015()] * # normal*
1312: (?: # (
1313: (?: \\ [^\x80-\xff] |
1314: \( # (
1315: [^\\\x80-\xff\n\015()] * # normal*
1316: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1317: \) # )
1318: ) # special
1319: [^\\\x80-\xff\n\015()] * # normal*
1320: )* # )*
1321: \) # )
1322: [\040\t]* )* # If comment found, allow more spaces.
1323: # optional trailing comments
1324: )*
1325: # address
1326: | # or
1327: (?:
1328: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1329: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1330: # Atom
1331: | # or
1332: " # "
1333: [^\\\x80-\xff\n\015"] * # normal
1334: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1335: " # "
1336: # Quoted string
1337: )
1338: # leading word
1339: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1340: (?:
1341: (?:
1342: \( # (
1343: [^\\\x80-\xff\n\015()] * # normal*
1344: (?: # (
1345: (?: \\ [^\x80-\xff] |
1346: \( # (
1347: [^\\\x80-\xff\n\015()] * # normal*
1348: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1349: \) # )
1350: ) # special
1351: [^\\\x80-\xff\n\015()] * # normal*
1352: )* # )*
1353: \) # )
1354: |
1355: " # "
1356: [^\\\x80-\xff\n\015"] * # normal
1357: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1358: " # "
1359: ) # "special" comment or quoted string
1360: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1361: )*
1362: <
1363: [\040\t]* # Nab whitespace.
1364: (?:
1365: \( # (
1366: [^\\\x80-\xff\n\015()] * # normal*
1367: (?: # (
1368: (?: \\ [^\x80-\xff] |
1369: \( # (
1370: [^\\\x80-\xff\n\015()] * # normal*
1371: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1372: \) # )
1373: ) # special
1374: [^\\\x80-\xff\n\015()] * # normal*
1375: )* # )*
1376: \) # )
1377: [\040\t]* )* # If comment found, allow more spaces.
1378: # <
1379: (?:
1380: @
1381: [\040\t]* # Nab whitespace.
1382: (?:
1383: \( # (
1384: [^\\\x80-\xff\n\015()] * # normal*
1385: (?: # (
1386: (?: \\ [^\x80-\xff] |
1387: \( # (
1388: [^\\\x80-\xff\n\015()] * # normal*
1389: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1390: \) # )
1391: ) # special
1392: [^\\\x80-\xff\n\015()] * # normal*
1393: )* # )*
1394: \) # )
1395: [\040\t]* )* # If comment found, allow more spaces.
1396: (?:
1397: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1398: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1399: |
1400: \[ # [
1401: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1402: \] # ]
1403: )
1404: [\040\t]* # Nab whitespace.
1405: (?:
1406: \( # (
1407: [^\\\x80-\xff\n\015()] * # normal*
1408: (?: # (
1409: (?: \\ [^\x80-\xff] |
1410: \( # (
1411: [^\\\x80-\xff\n\015()] * # normal*
1412: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1413: \) # )
1414: ) # special
1415: [^\\\x80-\xff\n\015()] * # normal*
1416: )* # )*
1417: \) # )
1418: [\040\t]* )* # If comment found, allow more spaces.
1419: # optional trailing comments
1420: (?:
1421: \.
1422: [\040\t]* # Nab whitespace.
1423: (?:
1424: \( # (
1425: [^\\\x80-\xff\n\015()] * # normal*
1426: (?: # (
1427: (?: \\ [^\x80-\xff] |
1428: \( # (
1429: [^\\\x80-\xff\n\015()] * # normal*
1430: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1431: \) # )
1432: ) # special
1433: [^\\\x80-\xff\n\015()] * # normal*
1434: )* # )*
1435: \) # )
1436: [\040\t]* )* # If comment found, allow more spaces.
1437: (?:
1438: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1439: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1440: |
1441: \[ # [
1442: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1443: \] # ]
1444: )
1445: [\040\t]* # Nab whitespace.
1446: (?:
1447: \( # (
1448: [^\\\x80-\xff\n\015()] * # normal*
1449: (?: # (
1450: (?: \\ [^\x80-\xff] |
1451: \( # (
1452: [^\\\x80-\xff\n\015()] * # normal*
1453: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1454: \) # )
1455: ) # special
1456: [^\\\x80-\xff\n\015()] * # normal*
1457: )* # )*
1458: \) # )
1459: [\040\t]* )* # If comment found, allow more spaces.
1460: # optional trailing comments
1461: )*
1462: (?: ,
1463: [\040\t]* # Nab whitespace.
1464: (?:
1465: \( # (
1466: [^\\\x80-\xff\n\015()] * # normal*
1467: (?: # (
1468: (?: \\ [^\x80-\xff] |
1469: \( # (
1470: [^\\\x80-\xff\n\015()] * # normal*
1471: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1472: \) # )
1473: ) # special
1474: [^\\\x80-\xff\n\015()] * # normal*
1475: )* # )*
1476: \) # )
1477: [\040\t]* )* # If comment found, allow more spaces.
1478: @
1479: [\040\t]* # Nab whitespace.
1480: (?:
1481: \( # (
1482: [^\\\x80-\xff\n\015()] * # normal*
1483: (?: # (
1484: (?: \\ [^\x80-\xff] |
1485: \( # (
1486: [^\\\x80-\xff\n\015()] * # normal*
1487: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1488: \) # )
1489: ) # special
1490: [^\\\x80-\xff\n\015()] * # normal*
1491: )* # )*
1492: \) # )
1493: [\040\t]* )* # If comment found, allow more spaces.
1494: (?:
1495: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1496: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1497: |
1498: \[ # [
1499: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1500: \] # ]
1501: )
1502: [\040\t]* # Nab whitespace.
1503: (?:
1504: \( # (
1505: [^\\\x80-\xff\n\015()] * # normal*
1506: (?: # (
1507: (?: \\ [^\x80-\xff] |
1508: \( # (
1509: [^\\\x80-\xff\n\015()] * # normal*
1510: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1511: \) # )
1512: ) # special
1513: [^\\\x80-\xff\n\015()] * # normal*
1514: )* # )*
1515: \) # )
1516: [\040\t]* )* # If comment found, allow more spaces.
1517: # optional trailing comments
1518: (?:
1519: \.
1520: [\040\t]* # Nab whitespace.
1521: (?:
1522: \( # (
1523: [^\\\x80-\xff\n\015()] * # normal*
1524: (?: # (
1525: (?: \\ [^\x80-\xff] |
1526: \( # (
1527: [^\\\x80-\xff\n\015()] * # normal*
1528: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1529: \) # )
1530: ) # special
1531: [^\\\x80-\xff\n\015()] * # normal*
1532: )* # )*
1533: \) # )
1534: [\040\t]* )* # If comment found, allow more spaces.
1535: (?:
1536: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1537: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1538: |
1539: \[ # [
1540: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1541: \] # ]
1542: )
1543: [\040\t]* # Nab whitespace.
1544: (?:
1545: \( # (
1546: [^\\\x80-\xff\n\015()] * # normal*
1547: (?: # (
1548: (?: \\ [^\x80-\xff] |
1549: \( # (
1550: [^\\\x80-\xff\n\015()] * # normal*
1551: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1552: \) # )
1553: ) # special
1554: [^\\\x80-\xff\n\015()] * # normal*
1555: )* # )*
1556: \) # )
1557: [\040\t]* )* # If comment found, allow more spaces.
1558: # optional trailing comments
1559: )*
1560: )* # additional domains
1561: :
1562: [\040\t]* # Nab whitespace.
1563: (?:
1564: \( # (
1565: [^\\\x80-\xff\n\015()] * # normal*
1566: (?: # (
1567: (?: \\ [^\x80-\xff] |
1568: \( # (
1569: [^\\\x80-\xff\n\015()] * # normal*
1570: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1571: \) # )
1572: ) # special
1573: [^\\\x80-\xff\n\015()] * # normal*
1574: )* # )*
1575: \) # )
1576: [\040\t]* )* # If comment found, allow more spaces.
1577: # optional trailing comments
1578: )? # optional route
1579: (?:
1580: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1581: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1582: # Atom
1583: | # or
1584: " # "
1585: [^\\\x80-\xff\n\015"] * # normal
1586: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1587: " # "
1588: # Quoted string
1589: )
1590: [\040\t]* # Nab whitespace.
1591: (?:
1592: \( # (
1593: [^\\\x80-\xff\n\015()] * # normal*
1594: (?: # (
1595: (?: \\ [^\x80-\xff] |
1596: \( # (
1597: [^\\\x80-\xff\n\015()] * # normal*
1598: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1599: \) # )
1600: ) # special
1601: [^\\\x80-\xff\n\015()] * # normal*
1602: )* # )*
1603: \) # )
1604: [\040\t]* )* # If comment found, allow more spaces.
1605: (?:
1606: \.
1607: [\040\t]* # Nab whitespace.
1608: (?:
1609: \( # (
1610: [^\\\x80-\xff\n\015()] * # normal*
1611: (?: # (
1612: (?: \\ [^\x80-\xff] |
1613: \( # (
1614: [^\\\x80-\xff\n\015()] * # normal*
1615: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1616: \) # )
1617: ) # special
1618: [^\\\x80-\xff\n\015()] * # normal*
1619: )* # )*
1620: \) # )
1621: [\040\t]* )* # If comment found, allow more spaces.
1622: (?:
1623: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1624: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1625: # Atom
1626: | # or
1627: " # "
1628: [^\\\x80-\xff\n\015"] * # normal
1629: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1630: " # "
1631: # Quoted string
1632: )
1633: [\040\t]* # Nab whitespace.
1634: (?:
1635: \( # (
1636: [^\\\x80-\xff\n\015()] * # normal*
1637: (?: # (
1638: (?: \\ [^\x80-\xff] |
1639: \( # (
1640: [^\\\x80-\xff\n\015()] * # normal*
1641: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1642: \) # )
1643: ) # special
1644: [^\\\x80-\xff\n\015()] * # normal*
1645: )* # )*
1646: \) # )
1647: [\040\t]* )* # If comment found, allow more spaces.
1648: # additional words
1649: )*
1650: @
1651: [\040\t]* # Nab whitespace.
1652: (?:
1653: \( # (
1654: [^\\\x80-\xff\n\015()] * # normal*
1655: (?: # (
1656: (?: \\ [^\x80-\xff] |
1657: \( # (
1658: [^\\\x80-\xff\n\015()] * # normal*
1659: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1660: \) # )
1661: ) # special
1662: [^\\\x80-\xff\n\015()] * # normal*
1663: )* # )*
1664: \) # )
1665: [\040\t]* )* # If comment found, allow more spaces.
1666: (?:
1667: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1668: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1669: |
1670: \[ # [
1671: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1672: \] # ]
1673: )
1674: [\040\t]* # Nab whitespace.
1675: (?:
1676: \( # (
1677: [^\\\x80-\xff\n\015()] * # normal*
1678: (?: # (
1679: (?: \\ [^\x80-\xff] |
1680: \( # (
1681: [^\\\x80-\xff\n\015()] * # normal*
1682: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1683: \) # )
1684: ) # special
1685: [^\\\x80-\xff\n\015()] * # normal*
1686: )* # )*
1687: \) # )
1688: [\040\t]* )* # If comment found, allow more spaces.
1689: # optional trailing comments
1690: (?:
1691: \.
1692: [\040\t]* # Nab whitespace.
1693: (?:
1694: \( # (
1695: [^\\\x80-\xff\n\015()] * # normal*
1696: (?: # (
1697: (?: \\ [^\x80-\xff] |
1698: \( # (
1699: [^\\\x80-\xff\n\015()] * # normal*
1700: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1701: \) # )
1702: ) # special
1703: [^\\\x80-\xff\n\015()] * # normal*
1704: )* # )*
1705: \) # )
1706: [\040\t]* )* # If comment found, allow more spaces.
1707: (?:
1708: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1709: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1710: |
1711: \[ # [
1712: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1713: \] # ]
1714: )
1715: [\040\t]* # Nab whitespace.
1716: (?:
1717: \( # (
1718: [^\\\x80-\xff\n\015()] * # normal*
1719: (?: # (
1720: (?: \\ [^\x80-\xff] |
1721: \( # (
1722: [^\\\x80-\xff\n\015()] * # normal*
1723: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1724: \) # )
1725: ) # special
1726: [^\\\x80-\xff\n\015()] * # normal*
1727: )* # )*
1728: \) # )
1729: [\040\t]* )* # If comment found, allow more spaces.
1730: # optional trailing comments
1731: )*
1732: # address spec
1733: > # >
1734: # name and address
1735: )
1736: /x
1737: Alan Other <user\@dom.ain>
1738: 0: Alan Other <user@dom.ain>
1739: <user\@dom.ain>
1740: 0: user@dom.ain
1741: user\@dom.ain
1742: 0: user@dom.ain
1743: \"A. Other\" <user.1234\@dom.ain> (a comment)
1744: 0: "A. Other" <user.1234@dom.ain>
1745: A. Other <user.1234\@dom.ain> (a comment)
1746: 0: Other <user.1234@dom.ain>
1747: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1748: 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1749: A missing angle <user\@some.where
1750: 0: user@some.where
1751: *** Failers
1752: No match
1753: The quick brown fox
1754: No match
1755:
1756: /abc\0def\00pqr\000xyz\0000AB/
1757: abc\0def\00pqr\000xyz\0000AB
1758: 0: abc\x00def\x00pqr\x00xyz\x000AB
1759: abc456 abc\0def\00pqr\000xyz\0000ABCDE
1760: 0: abc\x00def\x00pqr\x00xyz\x000AB
1761:
1762: /abc\x0def\x00pqr\x000xyz\x0000AB/
1763: abc\x0def\x00pqr\x000xyz\x0000AB
1764: 0: abc\x0def\x00pqr\x000xyz\x0000AB
1765: abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1766: 0: abc\x0def\x00pqr\x000xyz\x0000AB
1767:
1768: /^[\000-\037]/
1769: \0A
1770: 0: \x00
1771: \01B
1772: 0: \x01
1773: \037C
1774: 0: \x1f
1775:
1776: /\0*/
1777: \0\0\0\0
1778: 0: \x00\x00\x00\x00
1779:
1780: /A\x0{2,3}Z/
1781: The A\x0\x0Z
1782: 0: A\x00\x00Z
1783: An A\0\x0\0Z
1784: 0: A\x00\x00\x00Z
1785: *** Failers
1786: No match
1787: A\0Z
1788: No match
1789: A\0\x0\0\x0Z
1790: No match
1791:
1792: /^(cow|)\1(bell)/
1793: cowcowbell
1794: 0: cowcowbell
1795: 1: cow
1796: 2: bell
1797: bell
1798: 0: bell
1799: 1:
1800: 2: bell
1801: *** Failers
1802: No match
1803: cowbell
1804: No match
1805:
1806: /^\s/
1807: \040abc
1808: 0:
1809: \x0cabc
1810: 0: \x0c
1811: \nabc
1812: 0: \x0a
1813: \rabc
1814: 0: \x0d
1815: \tabc
1816: 0: \x09
1817: *** Failers
1818: No match
1819: abc
1820: No match
1821:
1822: /^a b
1823: c/x
1824: abc
1825: 0: abc
1826:
1827: /^(a|)\1*b/
1828: ab
1829: 0: ab
1830: 1: a
1831: aaaab
1832: 0: aaaab
1833: 1: a
1834: b
1835: 0: b
1836: 1:
1837: *** Failers
1838: No match
1839: acb
1840: No match
1841:
1842: /^(a|)\1+b/
1843: aab
1844: 0: aab
1845: 1: a
1846: aaaab
1847: 0: aaaab
1848: 1: a
1849: b
1850: 0: b
1851: 1:
1852: *** Failers
1853: No match
1854: ab
1855: No match
1856:
1857: /^(a|)\1?b/
1858: ab
1859: 0: ab
1860: 1: a
1861: aab
1862: 0: aab
1863: 1: a
1864: b
1865: 0: b
1866: 1:
1867: *** Failers
1868: No match
1869: acb
1870: No match
1871:
1872: /^(a|)\1{2}b/
1873: aaab
1874: 0: aaab
1875: 1: a
1876: b
1877: 0: b
1878: 1:
1879: *** Failers
1880: No match
1881: ab
1882: No match
1883: aab
1884: No match
1885: aaaab
1886: No match
1887:
1888: /^(a|)\1{2,3}b/
1889: aaab
1890: 0: aaab
1891: 1: a
1892: aaaab
1893: 0: aaaab
1894: 1: a
1895: b
1896: 0: b
1897: 1:
1898: *** Failers
1899: No match
1900: ab
1901: No match
1902: aab
1903: No match
1904: aaaaab
1905: No match
1906:
1907: /ab{1,3}bc/
1908: abbbbc
1909: 0: abbbbc
1910: abbbc
1911: 0: abbbc
1912: abbc
1913: 0: abbc
1914: *** Failers
1915: No match
1916: abc
1917: No match
1918: abbbbbc
1919: No match
1920:
1921: /([^.]*)\.([^:]*):[T ]+(.*)/
1922: track1.title:TBlah blah blah
1923: 0: track1.title:TBlah blah blah
1924: 1: track1
1925: 2: title
1926: 3: Blah blah blah
1927:
1928: /([^.]*)\.([^:]*):[T ]+(.*)/i
1929: track1.title:TBlah blah blah
1930: 0: track1.title:TBlah blah blah
1931: 1: track1
1932: 2: title
1933: 3: Blah blah blah
1934:
1935: /([^.]*)\.([^:]*):[t ]+(.*)/i
1936: track1.title:TBlah blah blah
1937: 0: track1.title:TBlah blah blah
1938: 1: track1
1939: 2: title
1940: 3: Blah blah blah
1941:
1942: /^[W-c]+$/
1943: WXY_^abc
1944: 0: WXY_^abc
1945: *** Failers
1946: No match
1947: wxy
1948: No match
1949:
1950: /^[W-c]+$/i
1951: WXY_^abc
1952: 0: WXY_^abc
1953: wxy_^ABC
1954: 0: wxy_^ABC
1955:
1956: /^[\x3f-\x5F]+$/i
1957: WXY_^abc
1958: 0: WXY_^abc
1959: wxy_^ABC
1960: 0: wxy_^ABC
1961:
1962: /^abc$/m
1963: abc
1964: 0: abc
1965: qqq\nabc
1966: 0: abc
1967: abc\nzzz
1968: 0: abc
1969: qqq\nabc\nzzz
1970: 0: abc
1971:
1972: /^abc$/
1973: abc
1974: 0: abc
1975: *** Failers
1976: No match
1977: qqq\nabc
1978: No match
1979: abc\nzzz
1980: No match
1981: qqq\nabc\nzzz
1982: No match
1983:
1984: /\Aabc\Z/m
1985: abc
1986: 0: abc
1987: abc\n
1988: 0: abc
1989: *** Failers
1990: No match
1991: qqq\nabc
1992: No match
1993: abc\nzzz
1994: No match
1995: qqq\nabc\nzzz
1996: No match
1997:
1998: /\A(.)*\Z/s
1999: abc\ndef
2000: 0: abc\x0adef
2001: 1: f
2002:
2003: /\A(.)*\Z/m
2004: *** Failers
2005: 0: *** Failers
2006: 1: s
2007: abc\ndef
2008: No match
2009:
2010: /(?:b)|(?::+)/
2011: b::c
2012: 0: b
2013: c::b
2014: 0: ::
2015:
2016: /[-az]+/
2017: az-
2018: 0: az-
2019: *** Failers
2020: 0: a
2021: b
2022: No match
2023:
2024: /[az-]+/
2025: za-
2026: 0: za-
2027: *** Failers
2028: 0: a
2029: b
2030: No match
2031:
2032: /[a\-z]+/
2033: a-z
2034: 0: a-z
2035: *** Failers
2036: 0: a
2037: b
2038: No match
2039:
2040: /[a-z]+/
2041: abcdxyz
2042: 0: abcdxyz
2043:
2044: /[\d-]+/
2045: 12-34
2046: 0: 12-34
2047: *** Failers
2048: No match
2049: aaa
2050: No match
2051:
2052: /[\d-z]+/
2053: 12-34z
2054: 0: 12-34z
2055: *** Failers
2056: No match
2057: aaa
2058: No match
2059:
2060: /\x5c/
2061: \\
2062: 0: \
2063:
2064: /\x20Z/
2065: the Zoo
2066: 0: Z
2067: *** Failers
2068: No match
2069: Zulu
2070: No match
2071:
2072: /(abc)\1/i
2073: abcabc
2074: 0: abcabc
2075: 1: abc
2076: ABCabc
2077: 0: ABCabc
2078: 1: ABC
2079: abcABC
2080: 0: abcABC
2081: 1: abc
2082:
2083: /ab{3cd/
2084: ab{3cd
2085: 0: ab{3cd
2086:
2087: /ab{3,cd/
2088: ab{3,cd
2089: 0: ab{3,cd
2090:
2091: /ab{3,4a}cd/
2092: ab{3,4a}cd
2093: 0: ab{3,4a}cd
2094:
2095: /{4,5a}bc/
2096: {4,5a}bc
2097: 0: {4,5a}bc
2098:
2099: /abc$/
2100: abc
2101: 0: abc
2102: abc\n
2103: 0: abc
2104: *** Failers
2105: No match
2106: abc\ndef
2107: No match
2108:
2109: /(abc)\123/
2110: abc\x53
2111: 0: abcS
2112: 1: abc
2113:
2114: /(abc)\223/
2115: abc\x93
2116: 0: abc\x93
2117: 1: abc
2118:
2119: /(abc)\323/
2120: abc\xd3
2121: 0: abc\xd3
2122: 1: abc
2123:
2124: /(abc)\100/
2125: abc\x40
2126: 0: abc@
2127: 1: abc
2128: abc\100
2129: 0: abc@
2130: 1: abc
2131:
2132: /(abc)\1000/
2133: abc\x400
2134: 0: abc@0
2135: 1: abc
2136: abc\x40\x30
2137: 0: abc@0
2138: 1: abc
2139: abc\1000
2140: 0: abc@0
2141: 1: abc
2142: abc\100\x30
2143: 0: abc@0
2144: 1: abc
2145: abc\100\060
2146: 0: abc@0
2147: 1: abc
2148: abc\100\60
2149: 0: abc@0
2150: 1: abc
2151:
2152: /abc\81/
2153: abc\081
2154: 0: abc\x0081
2155: abc\0\x38\x31
2156: 0: abc\x0081
2157:
2158: /abc\91/
2159: abc\091
2160: 0: abc\x0091
2161: abc\0\x39\x31
2162: 0: abc\x0091
2163:
2164: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2165: abcdefghijkllS
2166: 0: abcdefghijkllS
2167: 1: a
2168: 2: b
2169: 3: c
2170: 4: d
2171: 5: e
2172: 6: f
2173: 7: g
2174: 8: h
2175: 9: i
2176: 10: j
2177: 11: k
2178: 12: l
2179:
2180: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2181: abcdefghijk\12S
2182: 0: abcdefghijk\x0aS
2183: 1: a
2184: 2: b
2185: 3: c
2186: 4: d
2187: 5: e
2188: 6: f
2189: 7: g
2190: 8: h
2191: 9: i
2192: 10: j
2193: 11: k
2194:
2195: /ab\idef/
2196: abidef
2197: 0: abidef
2198:
2199: /a{0}bc/
2200: bc
2201: 0: bc
2202:
2203: /(a|(bc)){0,0}?xyz/
2204: xyz
2205: 0: xyz
2206:
2207: /abc[\10]de/
2208: abc\010de
2209: 0: abc\x08de
2210:
2211: /abc[\1]de/
2212: abc\1de
2213: 0: abc\x01de
2214:
2215: /(abc)[\1]de/
2216: abc\1de
2217: 0: abc\x01de
2218: 1: abc
2219:
2220: /(?s)a.b/
2221: a\nb
2222: 0: a\x0ab
2223:
2224: /^([^a])([^\b])([^c]*)([^d]{3,4})/
2225: baNOTccccd
2226: 0: baNOTcccc
2227: 1: b
2228: 2: a
2229: 3: NOT
2230: 4: cccc
2231: baNOTcccd
2232: 0: baNOTccc
2233: 1: b
2234: 2: a
2235: 3: NOT
2236: 4: ccc
2237: baNOTccd
2238: 0: baNOTcc
2239: 1: b
2240: 2: a
2241: 3: NO
2242: 4: Tcc
2243: bacccd
2244: 0: baccc
2245: 1: b
2246: 2: a
2247: 3:
2248: 4: ccc
2249: *** Failers
2250: 0: *** Failers
2251: 1: *
2252: 2: *
2253: 3: * Fail
2254: 4: ers
2255: anything
2256: No match
2257: b\bc
2258: No match
2259: baccd
2260: No match
2261:
2262: /[^a]/
2263: Abc
2264: 0: A
2265:
2266: /[^a]/i
2267: Abc
2268: 0: b
2269:
2270: /[^a]+/
2271: AAAaAbc
2272: 0: AAA
2273:
2274: /[^a]+/i
2275: AAAaAbc
2276: 0: bc
2277:
2278: /[^a]+/
2279: bbb\nccc
2280: 0: bbb\x0accc
2281:
2282: /[^k]$/
2283: abc
2284: 0: c
2285: *** Failers
2286: 0: s
2287: abk
2288: No match
2289:
2290: /[^k]{2,3}$/
2291: abc
2292: 0: abc
2293: kbc
2294: 0: bc
2295: kabc
2296: 0: abc
2297: *** Failers
2298: 0: ers
2299: abk
2300: No match
2301: akb
2302: No match
2303: akk
2304: No match
2305:
2306: /^\d{8,}\@.+[^k]$/
2307: 12345678\@a.b.c.d
2308: 0: 12345678@a.b.c.d
2309: 123456789\@x.y.z
2310: 0: 123456789@x.y.z
2311: *** Failers
2312: No match
2313: 12345678\@x.y.uk
2314: No match
2315: 1234567\@a.b.c.d
2316: No match
2317:
2318: /(a)\1{8,}/
2319: aaaaaaaaa
2320: 0: aaaaaaaaa
2321: 1: a
2322: aaaaaaaaaa
2323: 0: aaaaaaaaaa
2324: 1: a
2325: *** Failers
2326: No match
2327: aaaaaaa
2328: No match
2329:
2330: /[^a]/
2331: aaaabcd
2332: 0: b
2333: aaAabcd
2334: 0: A
2335:
2336: /[^a]/i
2337: aaaabcd
2338: 0: b
2339: aaAabcd
2340: 0: b
2341:
2342: /[^az]/
2343: aaaabcd
2344: 0: b
2345: aaAabcd
2346: 0: A
2347:
2348: /[^az]/i
2349: aaaabcd
2350: 0: b
2351: aaAabcd
2352: 0: b
2353:
2354: /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
2355: \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
2356: 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
2357:
2358: /P[^*]TAIRE[^*]{1,6}?LL/
2359: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2360: 0: PSTAIREISLL
2361:
2362: /P[^*]TAIRE[^*]{1,}?LL/
2363: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2364: 0: PSTAIREISLL
2365:
2366: /(\.\d\d[1-9]?)\d+/
2367: 1.230003938
2368: 0: .230003938
2369: 1: .23
2370: 1.875000282
2371: 0: .875000282
2372: 1: .875
2373: 1.235
2374: 0: .235
2375: 1: .23
2376:
2377: /(\.\d\d((?=0)|\d(?=\d)))/
2378: 1.230003938
2379: 0: .23
2380: 1: .23
2381: 2:
2382: 1.875000282
2383: 0: .875
2384: 1: .875
2385: 2: 5
2386: *** Failers
2387: No match
2388: 1.235
2389: No match
2390:
2391: /a(?)b/
2392: ab
2393: 0: ab
2394:
2395: /\b(foo)\s+(\w+)/i
2396: Food is on the foo table
2397: 0: foo table
2398: 1: foo
2399: 2: table
2400:
2401: /foo(.*)bar/
2402: The food is under the bar in the barn.
2403: 0: food is under the bar in the bar
2404: 1: d is under the bar in the
2405:
2406: /foo(.*?)bar/
2407: The food is under the bar in the barn.
2408: 0: food is under the bar
2409: 1: d is under the
2410:
2411: /(.*)(\d*)/
2412: I have 2 numbers: 53147
2413: 0: I have 2 numbers: 53147
2414: 1: I have 2 numbers: 53147
2415: 2:
2416:
2417: /(.*)(\d+)/
2418: I have 2 numbers: 53147
2419: 0: I have 2 numbers: 53147
2420: 1: I have 2 numbers: 5314
2421: 2: 7
2422:
2423: /(.*?)(\d*)/
2424: I have 2 numbers: 53147
2425: 0:
2426: 1:
2427: 2:
2428:
2429: /(.*?)(\d+)/
2430: I have 2 numbers: 53147
2431: 0: I have 2
2432: 1: I have
2433: 2: 2
2434:
2435: /(.*)(\d+)$/
2436: I have 2 numbers: 53147
2437: 0: I have 2 numbers: 53147
2438: 1: I have 2 numbers: 5314
2439: 2: 7
2440:
2441: /(.*?)(\d+)$/
2442: I have 2 numbers: 53147
2443: 0: I have 2 numbers: 53147
2444: 1: I have 2 numbers:
2445: 2: 53147
2446:
2447: /(.*)\b(\d+)$/
2448: I have 2 numbers: 53147
2449: 0: I have 2 numbers: 53147
2450: 1: I have 2 numbers:
2451: 2: 53147
2452:
2453: /(.*\D)(\d+)$/
2454: I have 2 numbers: 53147
2455: 0: I have 2 numbers: 53147
2456: 1: I have 2 numbers:
2457: 2: 53147
2458:
2459: /^\D*(?!123)/
2460: ABC123
2461: 0: AB
2462:
2463: /^(\D*)(?=\d)(?!123)/
2464: ABC445
2465: 0: ABC
2466: 1: ABC
2467: *** Failers
2468: No match
2469: ABC123
2470: No match
2471:
2472: /^[W-]46]/
2473: W46]789
2474: 0: W46]
2475: -46]789
2476: 0: -46]
2477: *** Failers
2478: No match
2479: Wall
2480: No match
2481: Zebra
2482: No match
2483: 42
2484: No match
2485: [abcd]
2486: No match
2487: ]abcd[
2488: No match
2489:
2490: /^[W-\]46]/
2491: W46]789
2492: 0: W
2493: Wall
2494: 0: W
2495: Zebra
2496: 0: Z
2497: Xylophone
2498: 0: X
2499: 42
2500: 0: 4
2501: [abcd]
2502: 0: [
2503: ]abcd[
2504: 0: ]
2505: \\backslash
2506: 0: \
2507: *** Failers
2508: No match
2509: -46]789
2510: No match
2511: well
2512: No match
2513:
2514: /\d\d\/\d\d\/\d\d\d\d/
2515: 01/01/2000
2516: 0: 01/01/2000
2517:
2518: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2519: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2520: 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2521: word cat dog elephant mussel cow horse canary baboon snake shark
2522: No match
2523:
2524: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2525: word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
2526: No match
2527:
2528: /^(a){0,0}/
2529: bcd
2530: 0:
2531: abc
2532: 0:
2533: aab
2534: 0:
2535:
2536: /^(a){0,1}/
2537: bcd
2538: 0:
2539: abc
2540: 0: a
2541: 1: a
2542: aab
2543: 0: a
2544: 1: a
2545:
2546: /^(a){0,2}/
2547: bcd
2548: 0:
2549: abc
2550: 0: a
2551: 1: a
2552: aab
2553: 0: aa
2554: 1: a
2555:
2556: /^(a){0,3}/
2557: bcd
2558: 0:
2559: abc
2560: 0: a
2561: 1: a
2562: aab
2563: 0: aa
2564: 1: a
2565: aaa
2566: 0: aaa
2567: 1: a
2568:
2569: /^(a){0,}/
2570: bcd
2571: 0:
2572: abc
2573: 0: a
2574: 1: a
2575: aab
2576: 0: aa
2577: 1: a
2578: aaa
2579: 0: aaa
2580: 1: a
2581: aaaaaaaa
2582: 0: aaaaaaaa
2583: 1: a
2584:
2585: /^(a){1,1}/
2586: bcd
2587: No match
2588: abc
2589: 0: a
2590: 1: a
2591: aab
2592: 0: a
2593: 1: a
2594:
2595: /^(a){1,2}/
2596: bcd
2597: No match
2598: abc
2599: 0: a
2600: 1: a
2601: aab
2602: 0: aa
2603: 1: a
2604:
2605: /^(a){1,3}/
2606: bcd
2607: No match
2608: abc
2609: 0: a
2610: 1: a
2611: aab
2612: 0: aa
2613: 1: a
2614: aaa
2615: 0: aaa
2616: 1: a
2617:
2618: /^(a){1,}/
2619: bcd
2620: No match
2621: abc
2622: 0: a
2623: 1: a
2624: aab
2625: 0: aa
2626: 1: a
2627: aaa
2628: 0: aaa
2629: 1: a
2630: aaaaaaaa
2631: 0: aaaaaaaa
2632: 1: a
2633:
2634: /.*\.gif/
2635: borfle\nbib.gif\nno
2636: 0: bib.gif
2637:
2638: /.{0,}\.gif/
2639: borfle\nbib.gif\nno
2640: 0: bib.gif
2641:
2642: /.*\.gif/m
2643: borfle\nbib.gif\nno
2644: 0: bib.gif
2645:
2646: /.*\.gif/s
2647: borfle\nbib.gif\nno
2648: 0: borfle\x0abib.gif
2649:
2650: /.*\.gif/ms
2651: borfle\nbib.gif\nno
2652: 0: borfle\x0abib.gif
2653:
2654: /.*$/
2655: borfle\nbib.gif\nno
2656: 0: no
2657:
2658: /.*$/m
2659: borfle\nbib.gif\nno
2660: 0: borfle
2661:
2662: /.*$/s
2663: borfle\nbib.gif\nno
2664: 0: borfle\x0abib.gif\x0ano
2665:
2666: /.*$/ms
2667: borfle\nbib.gif\nno
2668: 0: borfle\x0abib.gif\x0ano
2669:
2670: /.*$/
2671: borfle\nbib.gif\nno\n
2672: 0: no
2673:
2674: /.*$/m
2675: borfle\nbib.gif\nno\n
2676: 0: borfle
2677:
2678: /.*$/s
2679: borfle\nbib.gif\nno\n
2680: 0: borfle\x0abib.gif\x0ano\x0a
2681:
2682: /.*$/ms
2683: borfle\nbib.gif\nno\n
2684: 0: borfle\x0abib.gif\x0ano\x0a
2685:
2686: /(.*X|^B)/
2687: abcde\n1234Xyz
2688: 0: 1234X
2689: 1: 1234X
2690: BarFoo
2691: 0: B
2692: 1: B
2693: *** Failers
2694: No match
2695: abcde\nBar
2696: No match
2697:
2698: /(.*X|^B)/m
2699: abcde\n1234Xyz
2700: 0: 1234X
2701: 1: 1234X
2702: BarFoo
2703: 0: B
2704: 1: B
2705: abcde\nBar
2706: 0: B
2707: 1: B
2708:
2709: /(.*X|^B)/s
2710: abcde\n1234Xyz
2711: 0: abcde\x0a1234X
2712: 1: abcde\x0a1234X
2713: BarFoo
2714: 0: B
2715: 1: B
2716: *** Failers
2717: No match
2718: abcde\nBar
2719: No match
2720:
2721: /(.*X|^B)/ms
2722: abcde\n1234Xyz
2723: 0: abcde\x0a1234X
2724: 1: abcde\x0a1234X
2725: BarFoo
2726: 0: B
2727: 1: B
2728: abcde\nBar
2729: 0: B
2730: 1: B
2731:
2732: /(?s)(.*X|^B)/
2733: abcde\n1234Xyz
2734: 0: abcde\x0a1234X
2735: 1: abcde\x0a1234X
2736: BarFoo
2737: 0: B
2738: 1: B
2739: *** Failers
2740: No match
2741: abcde\nBar
2742: No match
2743:
2744: /(?s:.*X|^B)/
2745: abcde\n1234Xyz
2746: 0: abcde\x0a1234X
2747: BarFoo
2748: 0: B
2749: *** Failers
2750: No match
2751: abcde\nBar
2752: No match
2753:
2754: /^.*B/
2755: **** Failers
2756: No match
2757: abc\nB
2758: No match
2759:
2760: /(?s)^.*B/
2761: abc\nB
2762: 0: abc\x0aB
2763:
2764: /(?m)^.*B/
2765: abc\nB
2766: 0: B
2767:
2768: /(?ms)^.*B/
2769: abc\nB
2770: 0: abc\x0aB
2771:
2772: /(?ms)^B/
2773: abc\nB
2774: 0: B
2775:
2776: /(?s)B$/
2777: B\n
2778: 0: B
2779:
2780: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2781: 123456654321
2782: 0: 123456654321
2783:
2784: /^\d\d\d\d\d\d\d\d\d\d\d\d/
2785: 123456654321
2786: 0: 123456654321
2787:
2788: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2789: 123456654321
2790: 0: 123456654321
2791:
2792: /^[abc]{12}/
2793: abcabcabcabc
2794: 0: abcabcabcabc
2795:
2796: /^[a-c]{12}/
2797: abcabcabcabc
2798: 0: abcabcabcabc
2799:
2800: /^(a|b|c){12}/
2801: abcabcabcabc
2802: 0: abcabcabcabc
2803: 1: c
2804:
2805: /^[abcdefghijklmnopqrstuvwxy0123456789]/
2806: n
2807: 0: n
2808: *** Failers
2809: No match
2810: z
2811: No match
2812:
2813: /abcde{0,0}/
2814: abcd
2815: 0: abcd
2816: *** Failers
2817: No match
2818: abce
2819: No match
2820:
2821: /ab[cd]{0,0}e/
2822: abe
2823: 0: abe
2824: *** Failers
2825: No match
2826: abcde
2827: No match
2828:
2829: /ab(c){0,0}d/
2830: abd
2831: 0: abd
2832: *** Failers
2833: No match
2834: abcd
2835: No match
2836:
2837: /a(b*)/
2838: a
2839: 0: a
2840: 1:
2841: ab
2842: 0: ab
2843: 1: b
2844: abbbb
2845: 0: abbbb
2846: 1: bbbb
2847: *** Failers
2848: 0: a
2849: 1:
2850: bbbbb
2851: No match
2852:
2853: /ab\d{0}e/
2854: abe
2855: 0: abe
2856: *** Failers
2857: No match
2858: ab1e
2859: No match
2860:
2861: /"([^\\"]+|\\.)*"/
2862: the \"quick\" brown fox
2863: 0: "quick"
2864: 1: quick
2865: \"the \\\"quick\\\" brown fox\"
2866: 0: "the \"quick\" brown fox"
2867: 1: brown fox
2868:
2869: /.*?/g+
2870: abc
2871: 0:
2872: 0+ abc
2873: 0: a
2874: 0+ bc
2875: 0:
2876: 0+ bc
2877: 0: b
2878: 0+ c
2879: 0:
2880: 0+ c
2881: 0: c
2882: 0+
2883: 0:
2884: 0+
2885:
2886: /\b/g+
2887: abc
2888: 0:
2889: 0+ abc
2890: 0:
2891: 0+
2892:
2893: /\b/+g
2894: abc
2895: 0:
2896: 0+ abc
2897: 0:
2898: 0+
2899:
2900: //g
2901: abc
2902: 0:
2903: 0:
2904: 0:
2905: 0:
2906:
2907: /<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>/is
2908: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2909: 0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2910: 1: BGCOLOR='#DBE9E9'
2911: 2: align=left valign=top
2912: 3: 43.
2913: 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2914: 5:
2915: 6:
2916: 7: <unset>
2917: 8: align=left valign=top
2918: 9: Lega lstaff.com
2919: 10: align=left valign=top
2920: 11: CA - Statewide
2921:
2922: /a[^a]b/
2923: acb
2924: 0: acb
2925: a\nb
2926: 0: a\x0ab
2927:
2928: /a.b/
2929: acb
2930: 0: acb
2931: *** Failers
2932: No match
2933: a\nb
2934: No match
2935:
2936: /a[^a]b/s
2937: acb
2938: 0: acb
2939: a\nb
2940: 0: a\x0ab
2941:
2942: /a.b/s
2943: acb
2944: 0: acb
2945: a\nb
2946: 0: a\x0ab
2947:
2948: /^(b+?|a){1,2}?c/
2949: bac
2950: 0: bac
2951: 1: a
2952: bbac
2953: 0: bbac
2954: 1: a
2955: bbbac
2956: 0: bbbac
2957: 1: a
2958: bbbbac
2959: 0: bbbbac
2960: 1: a
2961: bbbbbac
2962: 0: bbbbbac
2963: 1: a
2964:
2965: /^(b+|a){1,2}?c/
2966: bac
2967: 0: bac
2968: 1: a
2969: bbac
2970: 0: bbac
2971: 1: a
2972: bbbac
2973: 0: bbbac
2974: 1: a
2975: bbbbac
2976: 0: bbbbac
2977: 1: a
2978: bbbbbac
2979: 0: bbbbbac
2980: 1: a
2981:
2982: /(?!\A)x/m
2983: x\nb\n
2984: No match
2985: a\bx\n
2986: 0: x
2987:
2988: /\x0{ab}/
2989: \0{ab}
2990: 0: \x00{ab}
2991:
2992: /(A|B)*?CD/
2993: CD
2994: 0: CD
2995:
2996: /(A|B)*CD/
2997: CD
2998: 0: CD
2999:
3000: /(AB)*?\1/
3001: ABABAB
3002: 0: ABAB
3003: 1: AB
3004:
3005: /(AB)*\1/
3006: ABABAB
3007: 0: ABABAB
3008: 1: AB
3009:
3010: /(?<!bar)foo/
3011: foo
3012: 0: foo
3013: catfood
3014: 0: foo
3015: arfootle
3016: 0: foo
3017: rfoosh
3018: 0: foo
3019: *** Failers
3020: No match
3021: barfoo
3022: No match
3023: towbarfoo
3024: No match
3025:
3026: /\w{3}(?<!bar)foo/
3027: catfood
3028: 0: catfoo
3029: *** Failers
3030: No match
3031: foo
3032: No match
3033: barfoo
3034: No match
3035: towbarfoo
3036: No match
3037:
3038: /(?<=(foo)a)bar/
3039: fooabar
3040: 0: bar
3041: 1: foo
3042: *** Failers
3043: No match
3044: bar
3045: No match
3046: foobbar
3047: No match
3048:
3049: /\Aabc\z/m
3050: abc
3051: 0: abc
3052: *** Failers
3053: No match
3054: abc\n
3055: No match
3056: qqq\nabc
3057: No match
3058: abc\nzzz
3059: No match
3060: qqq\nabc\nzzz
3061: No match
3062:
3063: "(?>.*/)foo"
3064: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
3065: No match
3066:
3067: "(?>.*/)foo"
3068: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3069: 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
3070:
3071: /(?>(\.\d\d[1-9]?))\d+/
3072: 1.230003938
3073: 0: .230003938
3074: 1: .23
3075: 1.875000282
3076: 0: .875000282
3077: 1: .875
3078: *** Failers
3079: No match
3080: 1.235
3081: No match
3082:
3083: /^((?>\w+)|(?>\s+))*$/
3084: now is the time for all good men to come to the aid of the party
3085: 0: now is the time for all good men to come to the aid of the party
3086: 1: party
3087: *** Failers
3088: No match
3089: this is not a line with only words and spaces!
3090: No match
3091:
3092: /(\d+)(\w)/
3093: 12345a
3094: 0: 12345a
3095: 1: 12345
3096: 2: a
3097: 12345+
3098: 0: 12345
3099: 1: 1234
3100: 2: 5
3101:
3102: /((?>\d+))(\w)/
3103: 12345a
3104: 0: 12345a
3105: 1: 12345
3106: 2: a
3107: *** Failers
3108: No match
3109: 12345+
3110: No match
3111:
3112: /(?>a+)b/
3113: aaab
3114: 0: aaab
3115:
3116: /((?>a+)b)/
3117: aaab
3118: 0: aaab
3119: 1: aaab
3120:
3121: /(?>(a+))b/
3122: aaab
3123: 0: aaab
3124: 1: aaa
3125:
3126: /(?>b)+/
3127: aaabbbccc
3128: 0: bbb
3129:
3130: /(?>a+|b+|c+)*c/
3131: aaabbbbccccd
3132: 0: aaabbbbc
3133:
3134: /((?>[^()]+)|\([^()]*\))+/
3135: ((abc(ade)ufh()()x
3136: 0: abc(ade)ufh()()x
3137: 1: x
3138:
3139: /\(((?>[^()]+)|\([^()]+\))+\)/
3140: (abc)
3141: 0: (abc)
3142: 1: abc
3143: (abc(def)xyz)
3144: 0: (abc(def)xyz)
3145: 1: xyz
3146: *** Failers
3147: No match
3148: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3149: No match
3150:
3151: /a(?-i)b/i
3152: ab
3153: 0: ab
3154: Ab
3155: 0: Ab
3156: *** Failers
3157: No match
3158: aB
3159: No match
3160: AB
3161: No match
3162:
3163: /(a (?x)b c)d e/
3164: a bcd e
3165: 0: a bcd e
3166: 1: a bc
3167: *** Failers
3168: No match
3169: a b cd e
3170: No match
3171: abcd e
3172: No match
3173: a bcde
3174: No match
3175:
3176: /(a b(?x)c d (?-x)e f)/
3177: a bcde f
3178: 0: a bcde f
3179: 1: a bcde f
3180: *** Failers
3181: No match
3182: abcdef
3183: No match
3184:
3185: /(a(?i)b)c/
3186: abc
3187: 0: abc
3188: 1: ab
3189: aBc
3190: 0: aBc
3191: 1: aB
3192: *** Failers
3193: No match
3194: abC
3195: No match
3196: aBC
3197: No match
3198: Abc
3199: No match
3200: ABc
3201: No match
3202: ABC
3203: No match
3204: AbC
3205: No match
3206:
3207: /a(?i:b)c/
3208: abc
3209: 0: abc
3210: aBc
3211: 0: aBc
3212: *** Failers
3213: No match
3214: ABC
3215: No match
3216: abC
3217: No match
3218: aBC
3219: No match
3220:
3221: /a(?i:b)*c/
3222: aBc
3223: 0: aBc
3224: aBBc
3225: 0: aBBc
3226: *** Failers
3227: No match
3228: aBC
3229: No match
3230: aBBC
3231: No match
3232:
3233: /a(?=b(?i)c)\w\wd/
3234: abcd
3235: 0: abcd
3236: abCd
3237: 0: abCd
3238: *** Failers
3239: No match
3240: aBCd
3241: No match
3242: abcD
3243: No match
3244:
3245: /(?s-i:more.*than).*million/i
3246: more than million
3247: 0: more than million
3248: more than MILLION
3249: 0: more than MILLION
3250: more \n than Million
3251: 0: more \x0a than Million
3252: *** Failers
3253: No match
3254: MORE THAN MILLION
3255: No match
3256: more \n than \n million
3257: No match
3258:
3259: /(?:(?s-i)more.*than).*million/i
3260: more than million
3261: 0: more than million
3262: more than MILLION
3263: 0: more than MILLION
3264: more \n than Million
3265: 0: more \x0a than Million
3266: *** Failers
3267: No match
3268: MORE THAN MILLION
3269: No match
3270: more \n than \n million
3271: No match
3272:
3273: /(?>a(?i)b+)+c/
3274: abc
3275: 0: abc
3276: aBbc
3277: 0: aBbc
3278: aBBc
3279: 0: aBBc
3280: *** Failers
3281: No match
3282: Abc
3283: No match
3284: abAb
3285: No match
3286: abbC
3287: No match
3288:
3289: /(?=a(?i)b)\w\wc/
3290: abc
3291: 0: abc
3292: aBc
3293: 0: aBc
3294: *** Failers
3295: No match
3296: Ab
3297: No match
3298: abC
3299: No match
3300: aBC
3301: No match
3302:
3303: /(?<=a(?i)b)(\w\w)c/
3304: abxxc
3305: 0: xxc
3306: 1: xx
3307: aBxxc
3308: 0: xxc
3309: 1: xx
3310: *** Failers
3311: No match
3312: Abxxc
3313: No match
3314: ABxxc
3315: No match
3316: abxxC
3317: No match
3318:
3319: /(?:(a)|b)(?(1)A|B)/
3320: aA
3321: 0: aA
3322: 1: a
3323: bB
3324: 0: bB
3325: *** Failers
3326: No match
3327: aB
3328: No match
3329: bA
3330: No match
3331:
3332: /^(a)?(?(1)a|b)+$/
3333: aa
3334: 0: aa
3335: 1: a
3336: b
3337: 0: b
3338: bb
3339: 0: bb
3340: *** Failers
3341: No match
3342: ab
3343: No match
3344:
3345: /^(?(?=abc)\w{3}:|\d\d)$/
3346: abc:
3347: 0: abc:
3348: 12
3349: 0: 12
3350: *** Failers
3351: No match
3352: 123
3353: No match
3354: xyz
3355: No match
3356:
3357: /^(?(?!abc)\d\d|\w{3}:)$/
3358: abc:
3359: 0: abc:
3360: 12
3361: 0: 12
3362: *** Failers
3363: No match
3364: 123
3365: No match
3366: xyz
3367: No match
3368:
3369: /(?(?<=foo)bar|cat)/
3370: foobar
3371: 0: bar
3372: cat
3373: 0: cat
3374: fcat
3375: 0: cat
3376: focat
3377: 0: cat
3378: *** Failers
3379: No match
3380: foocat
3381: No match
3382:
3383: /(?(?<!foo)cat|bar)/
3384: foobar
3385: 0: bar
3386: cat
3387: 0: cat
3388: fcat
3389: 0: cat
3390: focat
3391: 0: cat
3392: *** Failers
3393: No match
3394: foocat
3395: No match
3396:
3397: /( \( )? [^()]+ (?(1) \) |) /x
3398: abcd
3399: 0: abcd
3400: (abcd)
3401: 0: (abcd)
3402: 1: (
3403: the quick (abcd) fox
3404: 0: the quick
3405: (abcd
3406: 0: abcd
3407:
3408: /( \( )? [^()]+ (?(1) \) ) /x
3409: abcd
3410: 0: abcd
3411: (abcd)
3412: 0: (abcd)
3413: 1: (
3414: the quick (abcd) fox
3415: 0: the quick
3416: (abcd
3417: 0: abcd
3418:
3419: /^(?(2)a|(1)(2))+$/
3420: 12
3421: 0: 12
3422: 1: 1
3423: 2: 2
3424: 12a
3425: 0: 12a
3426: 1: 1
3427: 2: 2
3428: 12aa
3429: 0: 12aa
3430: 1: 1
3431: 2: 2
3432: *** Failers
3433: No match
3434: 1234
3435: No match
3436:
3437: /((?i)blah)\s+\1/
3438: blah blah
3439: 0: blah blah
3440: 1: blah
3441: BLAH BLAH
3442: 0: BLAH BLAH
3443: 1: BLAH
3444: Blah Blah
3445: 0: Blah Blah
3446: 1: Blah
3447: blaH blaH
3448: 0: blaH blaH
3449: 1: blaH
3450: *** Failers
3451: No match
3452: blah BLAH
3453: No match
3454: Blah blah
3455: No match
3456: blaH blah
3457: No match
3458:
3459: /((?i)blah)\s+(?i:\1)/
3460: blah blah
3461: 0: blah blah
3462: 1: blah
3463: BLAH BLAH
3464: 0: BLAH BLAH
3465: 1: BLAH
3466: Blah Blah
3467: 0: Blah Blah
3468: 1: Blah
3469: blaH blaH
3470: 0: blaH blaH
3471: 1: blaH
3472: blah BLAH
3473: 0: blah BLAH
3474: 1: blah
3475: Blah blah
3476: 0: Blah blah
3477: 1: Blah
3478: blaH blah
3479: 0: blaH blah
3480: 1: blaH
3481:
3482: /(?>a*)*/
3483: a
3484: 0: a
3485: aa
3486: 0: aa
3487: aaaa
3488: 0: aaaa
3489:
3490: /(abc|)+/
3491: abc
3492: 0: abc
3493: 1:
3494: abcabc
3495: 0: abcabc
3496: 1:
3497: abcabcabc
3498: 0: abcabcabc
3499: 1:
3500: xyz
3501: 0:
3502: 1:
3503:
3504: /([a]*)*/
3505: a
3506: 0: a
3507: 1:
3508: aaaaa
3509: 0: aaaaa
3510: 1:
3511:
3512: /([ab]*)*/
3513: a
3514: 0: a
3515: 1:
3516: b
3517: 0: b
3518: 1:
3519: ababab
3520: 0: ababab
3521: 1:
3522: aaaabcde
3523: 0: aaaab
3524: 1:
3525: bbbb
3526: 0: bbbb
3527: 1:
3528:
3529: /([^a]*)*/
3530: b
3531: 0: b
3532: 1:
3533: bbbb
3534: 0: bbbb
3535: 1:
3536: aaa
3537: 0:
3538: 1:
3539:
3540: /([^ab]*)*/
3541: cccc
3542: 0: cccc
3543: 1:
3544: abab
3545: 0:
3546: 1:
3547:
3548: /([a]*?)*/
3549: a
3550: 0:
3551: 1:
3552: aaaa
3553: 0:
3554: 1:
3555:
3556: /([ab]*?)*/
3557: a
3558: 0:
3559: 1:
3560: b
3561: 0:
3562: 1:
3563: abab
3564: 0:
3565: 1:
3566: baba
3567: 0:
3568: 1:
3569:
3570: /([^a]*?)*/
3571: b
3572: 0:
3573: 1:
3574: bbbb
3575: 0:
3576: 1:
3577: aaa
3578: 0:
3579: 1:
3580:
3581: /([^ab]*?)*/
3582: c
3583: 0:
3584: 1:
3585: cccc
3586: 0:
3587: 1:
3588: baba
3589: 0:
3590: 1:
3591:
3592: /(?>a*)*/
3593: a
3594: 0: a
3595: aaabcde
3596: 0: aaa
3597:
3598: /((?>a*))*/
3599: aaaaa
3600: 0: aaaaa
3601: 1:
3602: aabbaa
3603: 0: aa
3604: 1:
3605:
3606: /((?>a*?))*/
3607: aaaaa
3608: 0:
3609: 1:
3610: aabbaa
3611: 0:
3612: 1:
3613:
3614: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
3615: 12-sep-98
3616: 0: 12-sep-98
3617: 12-09-98
3618: 0: 12-09-98
3619: *** Failers
3620: No match
3621: sep-12-98
3622: No match
3623:
3624: /(?<=(foo))bar\1/
3625: foobarfoo
3626: 0: barfoo
3627: 1: foo
3628: foobarfootling
3629: 0: barfoo
3630: 1: foo
3631: *** Failers
3632: No match
3633: foobar
3634: No match
3635: barfoo
3636: No match
3637:
3638: /(?i:saturday|sunday)/
3639: saturday
3640: 0: saturday
3641: sunday
3642: 0: sunday
3643: Saturday
3644: 0: Saturday
3645: Sunday
3646: 0: Sunday
3647: SATURDAY
3648: 0: SATURDAY
3649: SUNDAY
3650: 0: SUNDAY
3651: SunDay
3652: 0: SunDay
3653:
3654: /(a(?i)bc|BB)x/
3655: abcx
3656: 0: abcx
3657: 1: abc
3658: aBCx
3659: 0: aBCx
3660: 1: aBC
3661: bbx
3662: 0: bbx
3663: 1: bb
3664: BBx
3665: 0: BBx
3666: 1: BB
3667: *** Failers
3668: No match
3669: abcX
3670: No match
3671: aBCX
3672: No match
3673: bbX
3674: No match
3675: BBX
3676: No match
3677:
3678: /^([ab](?i)[cd]|[ef])/
3679: ac
3680: 0: ac
3681: 1: ac
3682: aC
3683: 0: aC
3684: 1: aC
3685: bD
3686: 0: bD
3687: 1: bD
3688: elephant
3689: 0: e
3690: 1: e
3691: Europe
3692: 0: E
3693: 1: E
3694: frog
3695: 0: f
3696: 1: f
3697: France
3698: 0: F
3699: 1: F
3700: *** Failers
3701: No match
3702: Africa
3703: No match
3704:
3705: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
3706: ab
3707: 0: ab
3708: 1: ab
3709: aBd
3710: 0: aBd
3711: 1: aBd
3712: xy
3713: 0: xy
3714: 1: xy
3715: xY
3716: 0: xY
3717: 1: xY
3718: zebra
3719: 0: z
3720: 1: z
3721: Zambesi
3722: 0: Z
3723: 1: Z
3724: *** Failers
3725: No match
3726: aCD
3727: No match
3728: XY
3729: No match
3730:
3731: /(?<=foo\n)^bar/m
3732: foo\nbar
3733: 0: bar
3734: *** Failers
3735: No match
3736: bar
3737: No match
3738: baz\nbar
3739: No match
3740:
3741: /(?<=(?<!foo)bar)baz/
3742: barbaz
3743: 0: baz
3744: barbarbaz
3745: 0: baz
3746: koobarbaz
3747: 0: baz
3748: *** Failers
3749: No match
3750: baz
3751: No match
3752: foobarbaz
3753: No match
3754:
3755: /The cases of aaaa and aaaaaa are missed out below because Perl does things/
3756: /differently. We know that odd, and maybe incorrect, things happen with/
3757: No match
3758: /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
3759: No match
3760:
3761: /^(a\1?){4}$/
3762: a
3763: No match
3764: aa
3765: No match
3766: aaa
3767: No match
3768: aaaaa
3769: 0: aaaaa
3770: 1: a
3771: aaaaaaa
3772: 0: aaaaaaa
3773: 1: a
3774: aaaaaaaa
3775: No match
3776: aaaaaaaaa
3777: No match
3778: aaaaaaaaaa
3779: 0: aaaaaaaaaa
3780: 1: aaaa
3781: aaaaaaaaaaa
3782: No match
3783: aaaaaaaaaaaa
3784: No match
3785: aaaaaaaaaaaaa
3786: No match
3787: aaaaaaaaaaaaaa
3788: No match
3789: aaaaaaaaaaaaaaa
3790: No match
3791: aaaaaaaaaaaaaaaa
3792: No match
3793:
3794: /^(a\1?)(a\1?)(a\2?)(a\3?)$/
3795: a
3796: No match
3797: aa
3798: No match
3799: aaa
3800: No match
3801: aaaa
3802: 0: aaaa
3803: 1: a
3804: 2: a
3805: 3: a
3806: 4: a
3807: aaaaa
3808: 0: aaaaa
3809: 1: a
3810: 2: aa
3811: 3: a
3812: 4: a
3813: aaaaaa
3814: 0: aaaaaa
3815: 1: a
3816: 2: aa
3817: 3: a
3818: 4: aa
3819: aaaaaaa
3820: 0: aaaaaaa
3821: 1: a
3822: 2: aa
3823: 3: aaa
3824: 4: a
3825: aaaaaaaa
3826: No match
3827: aaaaaaaaa
3828: No match
3829: aaaaaaaaaa
3830: 0: aaaaaaaaaa
3831: 1: a
3832: 2: aa
3833: 3: aaa
3834: 4: aaaa
3835: aaaaaaaaaaa
3836: No match
3837: aaaaaaaaaaaa
3838: No match
3839: aaaaaaaaaaaaa
3840: No match
3841: aaaaaaaaaaaaaa
3842: No match
3843: aaaaaaaaaaaaaaa
3844: No match
3845: aaaaaaaaaaaaaaaa
3846: No match
3847:
3848: /The following tests are taken from the Perl 5.005 test suite; some of them/
3849: /are compatible with 5.004, but I'd rather not have to sort them out./
3850: No match
3851:
3852: /abc/
3853: abc
3854: 0: abc
3855: xabcy
3856: 0: abc
3857: ababc
3858: 0: abc
3859: *** Failers
3860: No match
3861: xbc
3862: No match
3863: axc
3864: No match
3865: abx
3866: No match
3867:
3868: /ab*c/
3869: abc
3870: 0: abc
3871:
3872: /ab*bc/
3873: abc
3874: 0: abc
3875: abbc
3876: 0: abbc
3877: abbbbc
3878: 0: abbbbc
3879:
3880: /.{1}/
3881: abbbbc
3882: 0: a
3883:
3884: /.{3,4}/
3885: abbbbc
3886: 0: abbb
3887:
3888: /ab{0,}bc/
3889: abbbbc
3890: 0: abbbbc
3891:
3892: /ab+bc/
3893: abbc
3894: 0: abbc
3895: *** Failers
3896: No match
3897: abc
3898: No match
3899: abq
3900: No match
3901:
3902: /ab{1,}bc/
3903:
3904: /ab+bc/
3905: abbbbc
3906: 0: abbbbc
3907:
3908: /ab{1,}bc/
3909: abbbbc
3910: 0: abbbbc
3911:
3912: /ab{1,3}bc/
3913: abbbbc
3914: 0: abbbbc
3915:
3916: /ab{3,4}bc/
3917: abbbbc
3918: 0: abbbbc
3919:
3920: /ab{4,5}bc/
3921: *** Failers
3922: No match
3923: abq
3924: No match
3925: abbbbc
3926: No match
3927:
3928: /ab?bc/
3929: abbc
3930: 0: abbc
3931: abc
3932: 0: abc
3933:
3934: /ab{0,1}bc/
3935: abc
3936: 0: abc
3937:
3938: /ab?bc/
3939:
3940: /ab?c/
3941: abc
3942: 0: abc
3943:
3944: /ab{0,1}c/
3945: abc
3946: 0: abc
3947:
3948: /^abc$/
3949: abc
3950: 0: abc
3951: *** Failers
3952: No match
3953: abbbbc
3954: No match
3955: abcc
3956: No match
3957:
3958: /^abc/
3959: abcc
3960: 0: abc
3961:
3962: /^abc$/
3963:
3964: /abc$/
3965: aabc
3966: 0: abc
3967: *** Failers
3968: No match
3969: aabc
3970: 0: abc
3971: aabcd
3972: No match
3973:
3974: /^/
3975: abc
3976: 0:
3977:
3978: /$/
3979: abc
3980: 0:
3981:
3982: /a.c/
3983: abc
3984: 0: abc
3985: axc
3986: 0: axc
3987:
3988: /a.*c/
3989: axyzc
3990: 0: axyzc
3991:
3992: /a[bc]d/
3993: abd
3994: 0: abd
3995: *** Failers
3996: No match
3997: axyzd
3998: No match
3999: abc
4000: No match
4001:
4002: /a[b-d]e/
4003: ace
4004: 0: ace
4005:
4006: /a[b-d]/
4007: aac
4008: 0: ac
4009:
4010: /a[-b]/
4011: a-
4012: 0: a-
4013:
4014: /a[b-]/
4015: a-
4016: 0: a-
4017:
4018: /a]/
4019: a]
4020: 0: a]
4021:
4022: /a[]]b/
4023: a]b
4024: 0: a]b
4025:
4026: /a[^bc]d/
4027: aed
4028: 0: aed
4029: *** Failers
4030: No match
4031: abd
4032: No match
4033: abd
4034: No match
4035:
4036: /a[^-b]c/
4037: adc
4038: 0: adc
4039:
4040: /a[^]b]c/
4041: adc
4042: 0: adc
4043: *** Failers
4044: No match
4045: a-c
4046: 0: a-c
4047: a]c
4048: No match
4049:
4050: /\ba\b/
4051: a-
4052: 0: a
4053: -a
4054: 0: a
4055: -a-
4056: 0: a
4057:
4058: /\by\b/
4059: *** Failers
4060: No match
4061: xy
4062: No match
4063: yz
4064: No match
4065: xyz
4066: No match
4067:
4068: /\Ba\B/
4069: *** Failers
4070: 0: a
4071: a-
4072: No match
4073: -a
4074: No match
4075: -a-
4076: No match
4077:
4078: /\By\b/
4079: xy
4080: 0: y
4081:
4082: /\by\B/
4083: yz
4084: 0: y
4085:
4086: /\By\B/
4087: xyz
4088: 0: y
4089:
4090: /\w/
4091: a
4092: 0: a
4093:
4094: /\W/
4095: -
4096: 0: -
4097: *** Failers
4098: 0: *
4099: -
4100: 0: -
4101: a
4102: No match
4103:
4104: /a\sb/
4105: a b
4106: 0: a b
4107:
4108: /a\Sb/
4109: a-b
4110: 0: a-b
4111: *** Failers
4112: No match
4113: a-b
4114: 0: a-b
4115: a b
4116: No match
4117:
4118: /\d/
4119: 1
4120: 0: 1
4121:
4122: /\D/
4123: -
4124: 0: -
4125: *** Failers
4126: 0: *
4127: -
4128: 0: -
4129: 1
4130: No match
4131:
4132: /[\w]/
4133: a
4134: 0: a
4135:
4136: /[\W]/
4137: -
4138: 0: -
4139: *** Failers
4140: 0: *
4141: -
4142: 0: -
4143: a
4144: No match
4145:
4146: /a[\s]b/
4147: a b
4148: 0: a b
4149:
4150: /a[\S]b/
4151: a-b
4152: 0: a-b
4153: *** Failers
4154: No match
4155: a-b
4156: 0: a-b
4157: a b
4158: No match
4159:
4160: /[\d]/
4161: 1
4162: 0: 1
4163:
4164: /[\D]/
4165: -
4166: 0: -
4167: *** Failers
4168: 0: *
4169: -
4170: 0: -
4171: 1
4172: No match
4173:
4174: /ab|cd/
4175: abc
4176: 0: ab
4177: abcd
4178: 0: ab
4179:
4180: /()ef/
4181: def
4182: 0: ef
4183: 1:
4184:
4185: /$b/
4186:
4187: /a\(b/
4188: a(b
4189: 0: a(b
4190:
4191: /a\(*b/
4192: ab
4193: 0: ab
4194: a((b
4195: 0: a((b
4196:
4197: /a\\b/
4198: a\b
4199: No match
4200:
4201: /((a))/
4202: abc
4203: 0: a
4204: 1: a
4205: 2: a
4206:
4207: /(a)b(c)/
4208: abc
4209: 0: abc
4210: 1: a
4211: 2: c
4212:
4213: /a+b+c/
4214: aabbabc
4215: 0: abc
4216:
4217: /a{1,}b{1,}c/
4218: aabbabc
4219: 0: abc
4220:
4221: /a.+?c/
4222: abcabc
4223: 0: abc
4224:
4225: /(a+|b)*/
4226: ab
4227: 0: ab
4228: 1: b
4229:
4230: /(a+|b){0,}/
4231: ab
4232: 0: ab
4233: 1: b
4234:
4235: /(a+|b)+/
4236: ab
4237: 0: ab
4238: 1: b
4239:
4240: /(a+|b){1,}/
4241: ab
4242: 0: ab
4243: 1: b
4244:
4245: /(a+|b)?/
4246: ab
4247: 0: a
4248: 1: a
4249:
4250: /(a+|b){0,1}/
4251: ab
4252: 0: a
4253: 1: a
4254:
4255: /[^ab]*/
4256: cde
4257: 0: cde
4258:
4259: /abc/
4260: *** Failers
4261: No match
4262: b
4263: No match
4264:
4265:
4266: /a*/
4267:
4268:
4269: /([abc])*d/
4270: abbbcd
4271: 0: abbbcd
4272: 1: c
4273:
4274: /([abc])*bcd/
4275: abcd
4276: 0: abcd
4277: 1: a
4278:
4279: /a|b|c|d|e/
4280: e
4281: 0: e
4282:
4283: /(a|b|c|d|e)f/
4284: ef
4285: 0: ef
4286: 1: e
4287:
4288: /abcd*efg/
4289: abcdefg
4290: 0: abcdefg
4291:
4292: /ab*/
4293: xabyabbbz
4294: 0: ab
4295: xayabbbz
4296: 0: a
4297:
4298: /(ab|cd)e/
4299: abcde
4300: 0: cde
4301: 1: cd
4302:
4303: /[abhgefdc]ij/
4304: hij
4305: 0: hij
4306:
4307: /^(ab|cd)e/
4308:
4309: /(abc|)ef/
4310: abcdef
4311: 0: ef
4312: 1:
4313:
4314: /(a|b)c*d/
4315: abcd
4316: 0: bcd
4317: 1: b
4318:
4319: /(ab|ab*)bc/
4320: abc
4321: 0: abc
4322: 1: a
4323:
4324: /a([bc]*)c*/
4325: abc
4326: 0: abc
4327: 1: bc
4328:
4329: /a([bc]*)(c*d)/
4330: abcd
4331: 0: abcd
4332: 1: bc
4333: 2: d
4334:
4335: /a([bc]+)(c*d)/
4336: abcd
4337: 0: abcd
4338: 1: bc
4339: 2: d
4340:
4341: /a([bc]*)(c+d)/
4342: abcd
4343: 0: abcd
4344: 1: b
4345: 2: cd
4346:
4347: /a[bcd]*dcdcde/
4348: adcdcde
4349: 0: adcdcde
4350:
4351: /a[bcd]+dcdcde/
4352: *** Failers
4353: No match
4354: abcde
4355: No match
4356: adcdcde
4357: No match
4358:
4359: /(ab|a)b*c/
4360: abc
4361: 0: abc
4362: 1: ab
4363:
4364: /((a)(b)c)(d)/
4365: abcd
4366: 0: abcd
4367: 1: abc
4368: 2: a
4369: 3: b
4370: 4: d
4371:
4372: /[a-zA-Z_][a-zA-Z0-9_]*/
4373: alpha
4374: 0: alpha
4375:
4376: /^a(bc+|b[eh])g|.h$/
4377: abh
4378: 0: bh
4379:
4380: /(bc+d$|ef*g.|h?i(j|k))/
4381: effgz
4382: 0: effgz
4383: 1: effgz
4384: ij
4385: 0: ij
4386: 1: ij
4387: 2: j
4388: reffgz
4389: 0: effgz
4390: 1: effgz
4391: *** Failers
4392: No match
4393: effg
4394: No match
4395: bcdd
4396: No match
4397:
4398: /((((((((((a))))))))))/
4399: a
4400: 0: a
4401: 1: a
4402: 2: a
4403: 3: a
4404: 4: a
4405: 5: a
4406: 6: a
4407: 7: a
4408: 8: a
4409: 9: a
4410: 10: a
4411:
4412: /((((((((((a))))))))))\10/
4413: aa
4414: 0: aa
4415: 1: a
4416: 2: a
4417: 3: a
4418: 4: a
4419: 5: a
4420: 6: a
4421: 7: a
4422: 8: a
4423: 9: a
4424: 10: a
4425:
4426: /(((((((((a)))))))))/
4427: a
4428: 0: a
4429: 1: a
4430: 2: a
4431: 3: a
4432: 4: a
4433: 5: a
4434: 6: a
4435: 7: a
4436: 8: a
4437: 9: a
4438:
4439: /multiple words of text/
4440: *** Failers
4441: No match
4442: aa
4443: No match
4444: uh-uh
4445: No match
4446:
4447: /multiple words/
4448: multiple words, yeah
4449: 0: multiple words
4450:
4451: /(.*)c(.*)/
4452: abcde
4453: 0: abcde
4454: 1: ab
4455: 2: de
4456:
4457: /\((.*), (.*)\)/
4458: (a, b)
4459: 0: (a, b)
4460: 1: a
4461: 2: b
4462:
4463: /[k]/
4464:
4465: /abcd/
4466: abcd
4467: 0: abcd
4468:
4469: /a(bc)d/
4470: abcd
4471: 0: abcd
4472: 1: bc
4473:
4474: /a[-]?c/
4475: ac
4476: 0: ac
4477:
4478: /(abc)\1/
4479: abcabc
4480: 0: abcabc
4481: 1: abc
4482:
4483: /([a-c]*)\1/
4484: abcabc
4485: 0: abcabc
4486: 1: abc
4487:
4488: /(a)|\1/
4489: a
4490: 0: a
4491: 1: a
4492: *** Failers
4493: 0: a
4494: 1: a
4495: ab
4496: 0: a
4497: 1: a
4498: x
4499: No match
4500:
4501: /(([a-c])b*?\2)*/
4502: ababbbcbc
4503: 0: ababb
4504: 1: bb
4505: 2: b
4506:
4507: /(([a-c])b*?\2){3}/
4508: ababbbcbc
4509: 0: ababbbcbc
4510: 1: cbc
4511: 2: c
4512:
4513: /((\3|b)\2(a)x)+/
4514: aaaxabaxbaaxbbax
4515: 0: bbax
4516: 1: bbax
4517: 2: b
4518: 3: a
4519:
4520: /((\3|b)\2(a)){2,}/
4521: bbaababbabaaaaabbaaaabba
4522: 0: bbaaaabba
4523: 1: bba
4524: 2: b
4525: 3: a
4526:
4527: /abc/i
4528: ABC
4529: 0: ABC
4530: XABCY
4531: 0: ABC
4532: ABABC
4533: 0: ABC
4534: *** Failers
4535: No match
4536: aaxabxbaxbbx
4537: No match
4538: XBC
4539: No match
4540: AXC
4541: No match
4542: ABX
4543: No match
4544:
4545: /ab*c/i
4546: ABC
4547: 0: ABC
4548:
4549: /ab*bc/i
4550: ABC
4551: 0: ABC
4552: ABBC
4553: 0: ABBC
4554:
4555: /ab*?bc/i
4556: ABBBBC
4557: 0: ABBBBC
4558:
4559: /ab{0,}?bc/i
4560: ABBBBC
4561: 0: ABBBBC
4562:
4563: /ab+?bc/i
4564: ABBC
4565: 0: ABBC
4566:
4567: /ab+bc/i
4568: *** Failers
4569: No match
4570: ABC
4571: No match
4572: ABQ
4573: No match
4574:
4575: /ab{1,}bc/i
4576:
4577: /ab+bc/i
4578: ABBBBC
4579: 0: ABBBBC
4580:
4581: /ab{1,}?bc/i
4582: ABBBBC
4583: 0: ABBBBC
4584:
4585: /ab{1,3}?bc/i
4586: ABBBBC
4587: 0: ABBBBC
4588:
4589: /ab{3,4}?bc/i
4590: ABBBBC
4591: 0: ABBBBC
4592:
4593: /ab{4,5}?bc/i
4594: *** Failers
4595: No match
4596: ABQ
4597: No match
4598: ABBBBC
4599: No match
4600:
4601: /ab??bc/i
4602: ABBC
4603: 0: ABBC
4604: ABC
4605: 0: ABC
4606:
4607: /ab{0,1}?bc/i
4608: ABC
4609: 0: ABC
4610:
4611: /ab??bc/i
4612:
4613: /ab??c/i
4614: ABC
4615: 0: ABC
4616:
4617: /ab{0,1}?c/i
4618: ABC
4619: 0: ABC
4620:
4621: /^abc$/i
4622: ABC
4623: 0: ABC
4624: *** Failers
4625: No match
4626: ABBBBC
4627: No match
4628: ABCC
4629: No match
4630:
4631: /^abc/i
4632: ABCC
4633: 0: ABC
4634:
4635: /^abc$/i
4636:
4637: /abc$/i
4638: AABC
4639: 0: ABC
4640:
4641: /^/i
4642: ABC
4643: 0:
4644:
4645: /$/i
4646: ABC
4647: 0:
4648:
4649: /a.c/i
4650: ABC
4651: 0: ABC
4652: AXC
4653: 0: AXC
4654:
4655: /a.*?c/i
4656: AXYZC
4657: 0: AXYZC
4658:
4659: /a.*c/i
4660: *** Failers
4661: No match
4662: AABC
4663: 0: AABC
4664: AXYZD
4665: No match
4666:
4667: /a[bc]d/i
4668: ABD
4669: 0: ABD
4670:
4671: /a[b-d]e/i
4672: ACE
4673: 0: ACE
4674: *** Failers
4675: No match
4676: ABC
4677: No match
4678: ABD
4679: No match
4680:
4681: /a[b-d]/i
4682: AAC
4683: 0: AC
4684:
4685: /a[-b]/i
4686: A-
4687: 0: A-
4688:
4689: /a[b-]/i
4690: A-
4691: 0: A-
4692:
4693: /a]/i
4694: A]
4695: 0: A]
4696:
4697: /a[]]b/i
4698: A]B
4699: 0: A]B
4700:
4701: /a[^bc]d/i
4702: AED
4703: 0: AED
4704:
4705: /a[^-b]c/i
4706: ADC
4707: 0: ADC
4708: *** Failers
4709: No match
4710: ABD
4711: No match
4712: A-C
4713: No match
4714:
4715: /a[^]b]c/i
4716: ADC
4717: 0: ADC
4718:
4719: /ab|cd/i
4720: ABC
4721: 0: AB
4722: ABCD
4723: 0: AB
4724:
4725: /()ef/i
4726: DEF
4727: 0: EF
4728: 1:
4729:
4730: /$b/i
4731: *** Failers
4732: No match
4733: A]C
4734: No match
4735: B
4736: No match
4737:
4738: /a\(b/i
4739: A(B
4740: 0: A(B
4741:
4742: /a\(*b/i
4743: AB
4744: 0: AB
4745: A((B
4746: 0: A((B
4747:
4748: /a\\b/i
4749: A\B
4750: No match
4751:
4752: /((a))/i
4753: ABC
4754: 0: A
4755: 1: A
4756: 2: A
4757:
4758: /(a)b(c)/i
4759: ABC
4760: 0: ABC
4761: 1: A
4762: 2: C
4763:
4764: /a+b+c/i
4765: AABBABC
4766: 0: ABC
4767:
4768: /a{1,}b{1,}c/i
4769: AABBABC
4770: 0: ABC
4771:
4772: /a.+?c/i
4773: ABCABC
4774: 0: ABC
4775:
4776: /a.*?c/i
4777: ABCABC
4778: 0: ABC
4779:
4780: /a.{0,5}?c/i
4781: ABCABC
4782: 0: ABC
4783:
4784: /(a+|b)*/i
4785: AB
4786: 0: AB
4787: 1: B
4788:
4789: /(a+|b){0,}/i
4790: AB
4791: 0: AB
4792: 1: B
4793:
4794: /(a+|b)+/i
4795: AB
4796: 0: AB
4797: 1: B
4798:
4799: /(a+|b){1,}/i
4800: AB
4801: 0: AB
4802: 1: B
4803:
4804: /(a+|b)?/i
4805: AB
4806: 0: A
4807: 1: A
4808:
4809: /(a+|b){0,1}/i
4810: AB
4811: 0: A
4812: 1: A
4813:
4814: /(a+|b){0,1}?/i
4815: AB
4816: 0:
4817:
4818: /[^ab]*/i
4819: CDE
4820: 0: CDE
4821:
4822: /abc/i
4823:
4824: /a*/i
4825:
4826:
4827: /([abc])*d/i
4828: ABBBCD
4829: 0: ABBBCD
4830: 1: C
4831:
4832: /([abc])*bcd/i
4833: ABCD
4834: 0: ABCD
4835: 1: A
4836:
4837: /a|b|c|d|e/i
4838: E
4839: 0: E
4840:
4841: /(a|b|c|d|e)f/i
4842: EF
4843: 0: EF
4844: 1: E
4845:
4846: /abcd*efg/i
4847: ABCDEFG
4848: 0: ABCDEFG
4849:
4850: /ab*/i
4851: XABYABBBZ
4852: 0: AB
4853: XAYABBBZ
4854: 0: A
4855:
4856: /(ab|cd)e/i
4857: ABCDE
4858: 0: CDE
4859: 1: CD
4860:
4861: /[abhgefdc]ij/i
4862: HIJ
4863: 0: HIJ
4864:
4865: /^(ab|cd)e/i
4866: ABCDE
4867: No match
4868:
4869: /(abc|)ef/i
4870: ABCDEF
4871: 0: EF
4872: 1:
4873:
4874: /(a|b)c*d/i
4875: ABCD
4876: 0: BCD
4877: 1: B
4878:
4879: /(ab|ab*)bc/i
4880: ABC
4881: 0: ABC
4882: 1: A
4883:
4884: /a([bc]*)c*/i
4885: ABC
4886: 0: ABC
4887: 1: BC
4888:
4889: /a([bc]*)(c*d)/i
4890: ABCD
4891: 0: ABCD
4892: 1: BC
4893: 2: D
4894:
4895: /a([bc]+)(c*d)/i
4896: ABCD
4897: 0: ABCD
4898: 1: BC
4899: 2: D
4900:
4901: /a([bc]*)(c+d)/i
4902: ABCD
4903: 0: ABCD
4904: 1: B
4905: 2: CD
4906:
4907: /a[bcd]*dcdcde/i
4908: ADCDCDE
4909: 0: ADCDCDE
4910:
4911: /a[bcd]+dcdcde/i
4912:
4913: /(ab|a)b*c/i
4914: ABC
4915: 0: ABC
4916: 1: AB
4917:
4918: /((a)(b)c)(d)/i
4919: ABCD
4920: 0: ABCD
4921: 1: ABC
4922: 2: A
4923: 3: B
4924: 4: D
4925:
4926: /[a-zA-Z_][a-zA-Z0-9_]*/i
4927: ALPHA
4928: 0: ALPHA
4929:
4930: /^a(bc+|b[eh])g|.h$/i
4931: ABH
4932: 0: BH
4933:
4934: /(bc+d$|ef*g.|h?i(j|k))/i
4935: EFFGZ
4936: 0: EFFGZ
4937: 1: EFFGZ
4938: IJ
4939: 0: IJ
4940: 1: IJ
4941: 2: J
4942: REFFGZ
4943: 0: EFFGZ
4944: 1: EFFGZ
4945: *** Failers
4946: No match
4947: ADCDCDE
4948: No match
4949: EFFG
4950: No match
4951: BCDD
4952: No match
4953:
4954: /((((((((((a))))))))))/i
4955: A
4956: 0: A
4957: 1: A
4958: 2: A
4959: 3: A
4960: 4: A
4961: 5: A
4962: 6: A
4963: 7: A
4964: 8: A
4965: 9: A
4966: 10: A
4967:
4968: /((((((((((a))))))))))\10/i
4969: AA
4970: 0: AA
4971: 1: A
4972: 2: A
4973: 3: A
4974: 4: A
4975: 5: A
4976: 6: A
4977: 7: A
4978: 8: A
4979: 9: A
4980: 10: A
4981:
4982: /(((((((((a)))))))))/i
4983: A
4984: 0: A
4985: 1: A
4986: 2: A
4987: 3: A
4988: 4: A
4989: 5: A
4990: 6: A
4991: 7: A
4992: 8: A
4993: 9: A
4994:
4995: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
4996: A
4997: 0: A
4998: 1: A
4999:
5000: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
5001: C
5002: 0: C
5003: 1: C
5004:
5005: /multiple words of text/i
5006: *** Failers
5007: No match
5008: AA
5009: No match
5010: UH-UH
5011: No match
5012:
5013: /multiple words/i
5014: MULTIPLE WORDS, YEAH
5015: 0: MULTIPLE WORDS
5016:
5017: /(.*)c(.*)/i
5018: ABCDE
5019: 0: ABCDE
5020: 1: AB
5021: 2: DE
5022:
5023: /\((.*), (.*)\)/i
5024: (A, B)
5025: 0: (A, B)
5026: 1: A
5027: 2: B
5028:
5029: /[k]/i
5030:
5031: /abcd/i
5032: ABCD
5033: 0: ABCD
5034:
5035: /a(bc)d/i
5036: ABCD
5037: 0: ABCD
5038: 1: BC
5039:
5040: /a[-]?c/i
5041: AC
5042: 0: AC
5043:
5044: /(abc)\1/i
5045: ABCABC
5046: 0: ABCABC
5047: 1: ABC
5048:
5049: /([a-c]*)\1/i
5050: ABCABC
5051: 0: ABCABC
5052: 1: ABC
5053:
5054: /a(?!b)./
5055: abad
5056: 0: ad
5057:
5058: /a(?=d)./
5059: abad
5060: 0: ad
5061:
5062: /a(?=c|d)./
5063: abad
5064: 0: ad
5065:
5066: /a(?:b|c|d)(.)/
5067: ace
5068: 0: ace
5069: 1: e
5070:
5071: /a(?:b|c|d)*(.)/
5072: ace
5073: 0: ace
5074: 1: e
5075:
5076: /a(?:b|c|d)+?(.)/
5077: ace
5078: 0: ace
5079: 1: e
5080: acdbcdbe
5081: 0: acd
5082: 1: d
5083:
5084: /a(?:b|c|d)+(.)/
5085: acdbcdbe
5086: 0: acdbcdbe
5087: 1: e
5088:
5089: /a(?:b|c|d){2}(.)/
5090: acdbcdbe
5091: 0: acdb
5092: 1: b
5093:
5094: /a(?:b|c|d){4,5}(.)/
5095: acdbcdbe
5096: 0: acdbcdb
5097: 1: b
5098:
5099: /a(?:b|c|d){4,5}?(.)/
5100: acdbcdbe
5101: 0: acdbcd
5102: 1: d
5103:
5104: /((foo)|(bar))*/
5105: foobar
5106: 0: foobar
5107: 1: bar
5108: 2: foo
5109: 3: bar
5110:
5111: /a(?:b|c|d){6,7}(.)/
5112: acdbcdbe
5113: 0: acdbcdbe
5114: 1: e
5115:
5116: /a(?:b|c|d){6,7}?(.)/
5117: acdbcdbe
5118: 0: acdbcdbe
5119: 1: e
5120:
5121: /a(?:b|c|d){5,6}(.)/
5122: acdbcdbe
5123: 0: acdbcdbe
5124: 1: e
5125:
5126: /a(?:b|c|d){5,6}?(.)/
5127: acdbcdbe
5128: 0: acdbcdb
5129: 1: b
5130:
5131: /a(?:b|c|d){5,7}(.)/
5132: acdbcdbe
5133: 0: acdbcdbe
5134: 1: e
5135:
5136: /a(?:b|c|d){5,7}?(.)/
5137: acdbcdbe
5138: 0: acdbcdb
5139: 1: b
5140:
5141: /a(?:b|(c|e){1,2}?|d)+?(.)/
5142: ace
5143: 0: ace
5144: 1: c
5145: 2: e
5146:
5147: /^(.+)?B/
5148: AB
5149: 0: AB
5150: 1: A
5151:
5152: /^([^a-z])|(\^)$/
5153: .
5154: 0: .
5155: 1: .
5156:
5157: /^[<>]&/
5158: <&OUT
5159: 0: <&
5160:
5161: /^(a\1?){4}$/
5162: aaaaaaaaaa
5163: 0: aaaaaaaaaa
5164: 1: aaaa
5165: *** Failers
5166: No match
5167: AB
5168: No match
5169: aaaaaaaaa
5170: No match
5171: aaaaaaaaaaa
5172: No match
5173:
5174: /^(a(?(1)\1)){4}$/
5175: aaaaaaaaaa
5176: 0: aaaaaaaaaa
5177: 1: aaaa
5178: *** Failers
5179: No match
5180: aaaaaaaaa
5181: No match
5182: aaaaaaaaaaa
5183: No match
5184:
5185: /(?:(f)(o)(o)|(b)(a)(r))*/
5186: foobar
5187: 0: foobar
5188: 1: f
5189: 2: o
5190: 3: o
5191: 4: b
5192: 5: a
5193: 6: r
5194:
5195: /(?<=a)b/
5196: ab
5197: 0: b
5198: *** Failers
5199: No match
5200: cb
5201: No match
5202: b
5203: No match
5204:
5205: /(?<!c)b/
5206: ab
5207: 0: b
5208: b
5209: 0: b
5210: b
5211: 0: b
5212:
5213: /(?:..)*a/
5214: aba
5215: 0: aba
5216:
5217: /(?:..)*?a/
5218: aba
5219: 0: a
5220:
5221: /^(?:b|a(?=(.)))*\1/
5222: abc
5223: 0: ab
5224: 1: b
5225:
5226: /^(){3,5}/
5227: abc
5228: 0:
5229: 1:
5230:
5231: /^(a+)*ax/
5232: aax
5233: 0: aax
5234: 1: a
5235:
5236: /^((a|b)+)*ax/
5237: aax
5238: 0: aax
5239: 1: a
5240: 2: a
5241:
5242: /^((a|bc)+)*ax/
5243: aax
5244: 0: aax
5245: 1: a
5246: 2: a
5247:
5248: /(a|x)*ab/
5249: cab
5250: 0: ab
5251:
5252: /(a)*ab/
5253: cab
5254: 0: ab
5255:
5256: /(?:(?i)a)b/
5257: ab
5258: 0: ab
5259:
5260: /((?i)a)b/
5261: ab
5262: 0: ab
5263: 1: a
5264:
5265: /(?:(?i)a)b/
5266: Ab
5267: 0: Ab
5268:
5269: /((?i)a)b/
5270: Ab
5271: 0: Ab
5272: 1: A
5273:
5274: /(?:(?i)a)b/
5275: *** Failers
5276: No match
5277: cb
5278: No match
5279: aB
5280: No match
5281:
5282: /((?i)a)b/
5283:
5284: /(?i:a)b/
5285: ab
5286: 0: ab
5287:
5288: /((?i:a))b/
5289: ab
5290: 0: ab
5291: 1: a
5292:
5293: /(?i:a)b/
5294: Ab
5295: 0: Ab
5296:
5297: /((?i:a))b/
5298: Ab
5299: 0: Ab
5300: 1: A
5301:
5302: /(?i:a)b/
5303: *** Failers
5304: No match
5305: aB
5306: No match
5307: aB
5308: No match
5309:
5310: /((?i:a))b/
5311:
5312: /(?:(?-i)a)b/i
5313: ab
5314: 0: ab
5315:
5316: /((?-i)a)b/i
5317: ab
5318: 0: ab
5319: 1: a
5320:
5321: /(?:(?-i)a)b/i
5322: aB
5323: 0: aB
5324:
5325: /((?-i)a)b/i
5326: aB
5327: 0: aB
5328: 1: a
5329:
5330: /(?:(?-i)a)b/i
5331: *** Failers
5332: No match
5333: aB
5334: 0: aB
5335: Ab
5336: No match
5337:
5338: /((?-i)a)b/i
5339:
5340: /(?:(?-i)a)b/i
5341: aB
5342: 0: aB
5343:
5344: /((?-i)a)b/i
5345: aB
5346: 0: aB
5347: 1: a
5348:
5349: /(?:(?-i)a)b/i
5350: *** Failers
5351: No match
5352: Ab
5353: No match
5354: AB
5355: No match
5356:
5357: /((?-i)a)b/i
5358:
5359: /(?-i:a)b/i
5360: ab
5361: 0: ab
5362:
5363: /((?-i:a))b/i
5364: ab
5365: 0: ab
5366: 1: a
5367:
5368: /(?-i:a)b/i
5369: aB
5370: 0: aB
5371:
5372: /((?-i:a))b/i
5373: aB
5374: 0: aB
5375: 1: a
5376:
5377: /(?-i:a)b/i
5378: *** Failers
5379: No match
5380: AB
5381: No match
5382: Ab
5383: No match
5384:
5385: /((?-i:a))b/i
5386:
5387: /(?-i:a)b/i
5388: aB
5389: 0: aB
5390:
5391: /((?-i:a))b/i
5392: aB
5393: 0: aB
5394: 1: a
5395:
5396: /(?-i:a)b/i
5397: *** Failers
5398: No match
5399: Ab
5400: No match
5401: AB
5402: No match
5403:
5404: /((?-i:a))b/i
5405:
5406: /((?-i:a.))b/i
5407: *** Failers
5408: No match
5409: AB
5410: No match
5411: a\nB
5412: No match
5413:
5414: /((?s-i:a.))b/i
5415: a\nB
5416: 0: a\x0aB
5417: 1: a\x0a
5418:
5419: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
5420: cabbbb
5421: 0: cabbbb
5422:
5423: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
5424: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5425: 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5426:
5427: /(ab)\d\1/i
5428: Ab4ab
5429: 0: Ab4ab
5430: 1: Ab
5431: ab4Ab
5432: 0: ab4Ab
5433: 1: ab
5434:
5435: /foo\w*\d{4}baz/
5436: foobar1234baz
5437: 0: foobar1234baz
5438:
5439: /x(~~)*(?:(?:F)?)?/
5440: x~~
5441: 0: x~~
5442: 1: ~~
5443:
5444: /^a(?#xxx){3}c/
5445: aaac
5446: 0: aaac
5447:
5448: /^a (?#xxx) (?#yyy) {3}c/x
5449: aaac
5450: 0: aaac
5451:
5452: /(?<![cd])b/
5453: *** Failers
5454: No match
5455: B\nB
5456: No match
5457: dbcb
5458: No match
5459:
5460: /(?<![cd])[ab]/
5461: dbaacb
5462: 0: a
5463:
5464: /(?<!(c|d))b/
5465:
5466: /(?<!(c|d))[ab]/
5467: dbaacb
5468: 0: a
5469:
5470: /(?<!cd)[ab]/
5471: cdaccb
5472: 0: b
5473:
5474: /^(?:a?b?)*$/
5475: \
5476: 0:
5477: a
5478: 0: a
5479: ab
5480: 0: ab
5481: aaa
5482: 0: aaa
5483: *** Failers
5484: No match
5485: dbcb
5486: No match
5487: a--
5488: No match
5489: aa--
5490: No match
5491:
5492: /((?s)^a(.))((?m)^b$)/
5493: a\nb\nc\n
5494: 0: a\x0ab
5495: 1: a\x0a
5496: 2: \x0a
5497: 3: b
5498:
5499: /((?m)^b$)/
5500: a\nb\nc\n
5501: 0: b
5502: 1: b
5503:
5504: /(?m)^b/
5505: a\nb\n
5506: 0: b
5507:
5508: /(?m)^(b)/
5509: a\nb\n
5510: 0: b
5511: 1: b
5512:
5513: /((?m)^b)/
5514: a\nb\n
5515: 0: b
5516: 1: b
5517:
5518: /\n((?m)^b)/
5519: a\nb\n
5520: 0: \x0ab
5521: 1: b
5522:
5523: /((?s).)c(?!.)/
5524: a\nb\nc\n
5525: 0: \x0ac
5526: 1: \x0a
5527: a\nb\nc\n
5528: 0: \x0ac
5529: 1: \x0a
5530:
5531: /((?s)b.)c(?!.)/
5532: a\nb\nc\n
5533: 0: b\x0ac
5534: 1: b\x0a
5535: a\nb\nc\n
5536: 0: b\x0ac
5537: 1: b\x0a
5538:
5539: /^b/
5540:
5541: /()^b/
5542: *** Failers
5543: No match
5544: a\nb\nc\n
5545: No match
5546: a\nb\nc\n
5547: No match
5548:
5549: /((?m)^b)/
5550: a\nb\nc\n
5551: 0: b
5552: 1: b
5553:
5554: /(x)?(?(1)a|b)/
5555: *** Failers
5556: No match
5557: a
5558: No match
5559: a
5560: No match
5561:
5562: /(x)?(?(1)b|a)/
5563: a
5564: 0: a
5565:
5566: /()?(?(1)b|a)/
5567: a
5568: 0: a
5569:
5570: /()(?(1)b|a)/
5571:
5572: /()?(?(1)a|b)/
5573: a
5574: 0: a
5575: 1:
5576:
5577: /^(\()?blah(?(1)(\)))$/
5578: (blah)
5579: 0: (blah)
5580: 1: (
5581: 2: )
5582: blah
5583: 0: blah
5584: *** Failers
5585: No match
5586: a
5587: No match
5588: blah)
5589: No match
5590: (blah
5591: No match
5592:
5593: /^(\(+)?blah(?(1)(\)))$/
5594: (blah)
5595: 0: (blah)
5596: 1: (
5597: 2: )
5598: blah
5599: 0: blah
5600: *** Failers
5601: No match
5602: blah)
5603: No match
5604: (blah
5605: No match
5606:
5607: /(?(?!a)a|b)/
5608:
5609: /(?(?!a)b|a)/
5610: a
5611: 0: a
5612:
5613: /(?(?=a)b|a)/
5614: *** Failers
5615: No match
5616: a
5617: No match
5618: a
5619: No match
5620:
5621: /(?(?=a)a|b)/
5622: a
5623: 0: a
5624:
5625: /(?=(a+?))(\1ab)/
5626: aaab
5627: 0: aab
5628: 1: a
5629: 2: aab
5630:
5631: /^(?=(a+?))\1ab/
5632:
5633: /(\w+:)+/
5634: one:
5635: 0: one:
5636: 1: one:
5637:
5638: /$(?<=^(a))/
5639: a
5640: 0:
5641: 1: a
5642:
5643: /(?=(a+?))(\1ab)/
5644: aaab
5645: 0: aab
5646: 1: a
5647: 2: aab
5648:
5649: /^(?=(a+?))\1ab/
5650: *** Failers
5651: No match
5652: aaab
5653: No match
5654: aaab
5655: No match
5656:
5657: /([\w:]+::)?(\w+)$/
5658: abcd
5659: 0: abcd
5660: 1: <unset>
5661: 2: abcd
5662: xy:z:::abcd
5663: 0: xy:z:::abcd
5664: 1: xy:z:::
5665: 2: abcd
5666:
5667: /^[^bcd]*(c+)/
5668: aexycd
5669: 0: aexyc
5670: 1: c
5671:
5672: /(a*)b+/
5673: caab
5674: 0: aab
5675: 1: aa
5676:
5677: /([\w:]+::)?(\w+)$/
5678: abcd
5679: 0: abcd
5680: 1: <unset>
5681: 2: abcd
5682: xy:z:::abcd
5683: 0: xy:z:::abcd
5684: 1: xy:z:::
5685: 2: abcd
5686: *** Failers
5687: 0: Failers
5688: 1: <unset>
5689: 2: Failers
5690: abcd:
5691: No match
5692: abcd:
5693: No match
5694:
5695: /^[^bcd]*(c+)/
5696: aexycd
5697: 0: aexyc
5698: 1: c
5699:
5700: /(>a+)ab/
5701:
5702: /(?>a+)b/
5703: aaab
5704: 0: aaab
5705:
5706: /([[:]+)/
5707: a:[b]:
5708: 0: :[
5709: 1: :[
5710:
5711: /([[=]+)/
5712: a=[b]=
5713: 0: =[
5714: 1: =[
5715:
5716: /([[.]+)/
5717: a.[b].
5718: 0: .[
5719: 1: .[
5720:
5721: /((?>a+)b)/
5722: aaab
5723: 0: aaab
5724: 1: aaab
5725:
5726: /(?>(a+))b/
5727: aaab
5728: 0: aaab
5729: 1: aaa
5730:
5731: /((?>[^()]+)|\([^()]*\))+/
5732: ((abc(ade)ufh()()x
5733: 0: abc(ade)ufh()()x
5734: 1: x
5735:
5736: /a\Z/
5737: *** Failers
5738: No match
5739: aaab
5740: No match
5741: a\nb\n
5742: No match
5743:
5744: /b\Z/
5745: a\nb\n
5746: 0: b
5747:
5748: /b\z/
5749:
5750: /b\Z/
5751: a\nb
5752: 0: b
5753:
5754: /b\z/
5755: a\nb
5756: 0: b
5757: *** Failers
5758: No match
5759:
5760: /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
5761: a
5762: 0: a
5763: 1:
5764: abc
5765: 0: abc
5766: 1:
5767: a-b
5768: 0: a-b
5769: 1:
5770: 0-9
5771: 0: 0-9
5772: 1:
5773: a.b
5774: 0: a.b
5775: 1:
5776: 5.6.7
5777: 0: 5.6.7
5778: 1:
5779: the.quick.brown.fox
5780: 0: the.quick.brown.fox
5781: 1:
5782: a100.b200.300c
5783: 0: a100.b200.300c
5784: 1:
5785: 12-ab.1245
5786: 0: 12-ab.1245
5787: 1:
5788: *** Failers
5789: No match
5790: \
5791: No match
5792: .a
5793: No match
5794: -a
5795: No match
5796: a-
5797: No match
5798: a.
5799: No match
5800: a_b
5801: No match
5802: a.-
5803: No match
5804: a..
5805: No match
5806: ab..bc
5807: No match
5808: the.quick.brown.fox-
5809: No match
5810: the.quick.brown.fox.
5811: No match
5812: the.quick.brown.fox_
5813: No match
5814: the.quick.brown.fox+
5815: No match
5816:
5817: /(?>.*)(?<=(abcd|wxyz))/
5818: alphabetabcd
5819: 0: alphabetabcd
5820: 1: abcd
5821: endingwxyz
5822: 0: endingwxyz
5823: 1: wxyz
5824: *** Failers
5825: No match
5826: a rather long string that doesn't end with one of them
5827: No match
5828:
5829: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
5830: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5831: 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5832: word cat dog elephant mussel cow horse canary baboon snake shark
5833: No match
5834:
5835: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
5836: word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
5837: No match
5838:
5839: /(?<=\d{3}(?!999))foo/
5840: 999foo
5841: 0: foo
5842: 123999foo
5843: 0: foo
5844: *** Failers
5845: No match
5846: 123abcfoo
5847: No match
5848:
5849: /(?<=(?!...999)\d{3})foo/
5850: 999foo
5851: 0: foo
5852: 123999foo
5853: 0: foo
5854: *** Failers
5855: No match
5856: 123abcfoo
5857: No match
5858:
5859: /(?<=\d{3}(?!999)...)foo/
5860: 123abcfoo
5861: 0: foo
5862: 123456foo
5863: 0: foo
5864: *** Failers
5865: No match
5866: 123999foo
5867: No match
5868:
5869: /(?<=\d{3}...)(?<!999)foo/
5870: 123abcfoo
5871: 0: foo
5872: 123456foo
5873: 0: foo
5874: *** Failers
5875: No match
5876: 123999foo
5877: No match
5878:
5879: /<a[\s]+href[\s]*=[\s]* # find <a href=
5880: ([\"\'])? # find single or double quote
5881: (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
5882: # quote, otherwise match up to next space
5883: /isx
5884: <a href=abcd xyz
5885: 0: <a href=abcd
5886: 1: <unset>
5887: 2: <unset>
5888: 3: abcd
5889: <a href=\"abcd xyz pqr\" cats
5890: 0: <a href="abcd xyz pqr"
5891: 1: "
5892: 2: abcd xyz pqr
5893: <a href=\'abcd xyz pqr\' cats
5894: 0: <a href='abcd xyz pqr'
5895: 1: '
5896: 2: abcd xyz pqr
5897:
5898: /<a\s+href\s*=\s* # find <a href=
5899: (["'])? # find single or double quote
5900: (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
5901: # quote, otherwise match up to next space
5902: /isx
5903: <a href=abcd xyz
5904: 0: <a href=abcd
5905: 1: <unset>
5906: 2: <unset>
5907: 3: abcd
5908: <a href=\"abcd xyz pqr\" cats
5909: 0: <a href="abcd xyz pqr"
5910: 1: "
5911: 2: abcd xyz pqr
5912: <a href = \'abcd xyz pqr\' cats
5913: 0: <a href = 'abcd xyz pqr'
5914: 1: '
5915: 2: abcd xyz pqr
5916:
5917: /<a\s+href(?>\s*)=(?>\s*) # find <a href=
5918: (["'])? # find single or double quote
5919: (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
5920: # quote, otherwise match up to next space
5921: /isx
5922: <a href=abcd xyz
5923: 0: <a href=abcd
5924: 1: <unset>
5925: 2: <unset>
5926: 3: abcd
5927: <a href=\"abcd xyz pqr\" cats
5928: 0: <a href="abcd xyz pqr"
5929: 1: "
5930: 2: abcd xyz pqr
5931: <a href = \'abcd xyz pqr\' cats
5932: 0: <a href = 'abcd xyz pqr'
5933: 1: '
5934: 2: abcd xyz pqr
5935:
5936: /((Z)+|A)*/
5937: ZABCDEFG
5938: 0: ZA
5939: 1: A
5940: 2: Z
5941:
5942: /(Z()|A)*/
5943: ZABCDEFG
5944: 0: ZA
5945: 1: A
5946: 2:
5947:
5948: /(Z(())|A)*/
5949: ZABCDEFG
5950: 0: ZA
5951: 1: A
5952: 2:
5953: 3:
5954:
5955: /((?>Z)+|A)*/
5956: ZABCDEFG
5957: 0: ZA
5958: 1: A
5959:
5960: /((?>)+|A)*/
5961: ZABCDEFG
5962: 0:
5963: 1:
5964:
5965: /a*/g
5966: abbab
5967: 0: a
5968: 0:
5969: 0:
5970: 0: a
5971: 0:
5972: 0:
5973:
5974: /^[a-\d]/
5975: abcde
5976: 0: a
5977: -things
5978: 0: -
5979: 0digit
5980: 0: 0
5981: *** Failers
5982: No match
5983: bcdef
5984: No match
5985:
5986: /^[\d-a]/
5987: abcde
5988: 0: a
5989: -things
5990: 0: -
5991: 0digit
5992: 0: 0
5993: *** Failers
5994: No match
5995: bcdef
5996: No match
5997:
5998: /[[:space:]]+/
5999: > \x09\x0a\x0c\x0d\x0b<
6000: 0: \x09\x0a\x0c\x0d\x0b
6001:
6002: /[[:blank:]]+/
6003: > \x09\x0a\x0c\x0d\x0b<
6004: 0: \x09
6005:
6006: /[\s]+/
6007: > \x09\x0a\x0c\x0d\x0b<
6008: 0: \x09\x0a\x0c\x0d
6009:
6010: /\s+/
6011: > \x09\x0a\x0c\x0d\x0b<
6012: 0: \x09\x0a\x0c\x0d
6013:
6014: /ab/x
6015: ab
6016: No match
6017:
6018: /(?!\A)x/m
6019: a\nxb\n
6020: 0: x
6021:
6022: /(?!^)x/m
6023: a\nxb\n
6024: No match
6025:
6026: /abc\Qabc\Eabc/
6027: abcabcabc
6028: 0: abcabcabc
6029:
6030: /abc\Q(*+|\Eabc/
6031: abc(*+|abc
6032: 0: abc(*+|abc
6033:
6034: / abc\Q abc\Eabc/x
6035: abc abcabc
6036: 0: abc abcabc
6037: *** Failers
6038: No match
6039: abcabcabc
6040: No match
6041:
6042: /abc#comment
6043: \Q#not comment
6044: literal\E/x
6045: abc#not comment\n literal
6046: 0: abc#not comment\x0a literal
6047:
6048: /abc#comment
6049: \Q#not comment
6050: literal/x
6051: abc#not comment\n literal
6052: 0: abc#not comment\x0a literal
6053:
6054: /abc#comment
6055: \Q#not comment
6056: literal\E #more comment
6057: /x
6058: abc#not comment\n literal
6059: 0: abc#not comment\x0a literal
6060:
6061: /abc#comment
6062: \Q#not comment
6063: literal\E #more comment/x
6064: abc#not comment\n literal
6065: 0: abc#not comment\x0a literal
6066:
6067: /\Qabc\$xyz\E/
6068: abc\\\$xyz
6069: 0: abc\$xyz
6070:
6071: /\Qabc\E\$\Qxyz\E/
6072: abc\$xyz
6073: 0: abc$xyz
6074:
6075: /\Gabc/
6076: abc
6077: 0: abc
6078: *** Failers
6079: No match
6080: xyzabc
6081: No match
6082:
6083: /\Gabc./g
6084: abc1abc2xyzabc3
6085: 0: abc1
6086: 0: abc2
6087:
6088: /abc./g
6089: abc1abc2xyzabc3
6090: 0: abc1
6091: 0: abc2
6092: 0: abc3
6093:
6094: /a(?x: b c )d/
6095: XabcdY
6096: 0: abcd
6097: *** Failers
6098: No match
6099: Xa b c d Y
6100: No match
6101:
6102: /((?x)x y z | a b c)/
6103: XabcY
6104: 0: abc
6105: 1: abc
6106: AxyzB
6107: 0: xyz
6108: 1: xyz
6109:
6110: /(?i)AB(?-i)C/
6111: XabCY
6112: 0: abC
6113: *** Failers
6114: No match
6115: XabcY
6116: No match
6117:
6118: /((?i)AB(?-i)C|D)E/
6119: abCE
6120: 0: abCE
6121: 1: abC
6122: DE
6123: 0: DE
6124: 1: D
6125: *** Failers
6126: No match
6127: abcE
6128: No match
6129: abCe
6130: No match
6131: dE
6132: No match
6133: De
6134: No match
6135:
6136: /(.*)\d+\1/
6137: abc123abc
6138: 0: abc123abc
6139: 1: abc
6140: abc123bc
6141: 0: bc123bc
6142: 1: bc
6143:
6144: /(.*)\d+\1/s
6145: abc123abc
6146: 0: abc123abc
6147: 1: abc
6148: abc123bc
6149: 0: bc123bc
6150: 1: bc
6151:
6152: /((.*))\d+\1/
6153: abc123abc
6154: 0: abc123abc
6155: 1: abc
6156: 2: abc
6157: abc123bc
6158: 0: bc123bc
6159: 1: bc
6160: 2: bc
6161:
6162: /-- This tests for an IPv6 address in the form where it can have up to --/
6163: /-- eight components, one and only one of which is empty. This must be --/
6164: No match
6165: /-- an internal component. --/
6166: No match
6167:
6168: /^(?!:) # colon disallowed at start
6169: (?: # start of item
6170: (?: [0-9a-f]{1,4} | # 1-4 hex digits or
6171: (?(1)0 | () ) ) # if null previously matched, fail; else null
6172: : # followed by colon
6173: ){1,7} # end item; 1-7 of them required
6174: [0-9a-f]{1,4} $ # final hex number at end of string
6175: (?(1)|.) # check that there was an empty component
6176: /xi
6177: a123::a123
6178: 0: a123::a123
6179: 1:
6180: a123:b342::abcd
6181: 0: a123:b342::abcd
6182: 1:
6183: a123:b342::324e:abcd
6184: 0: a123:b342::324e:abcd
6185: 1:
6186: a123:ddde:b342::324e:abcd
6187: 0: a123:ddde:b342::324e:abcd
6188: 1:
6189: a123:ddde:b342::324e:dcba:abcd
6190: 0: a123:ddde:b342::324e:dcba:abcd
6191: 1:
6192: a123:ddde:9999:b342::324e:dcba:abcd
6193: 0: a123:ddde:9999:b342::324e:dcba:abcd
6194: 1:
6195: *** Failers
6196: No match
6197: 1:2:3:4:5:6:7:8
6198: No match
6199: a123:bce:ddde:9999:b342::324e:dcba:abcd
6200: No match
6201: a123::9999:b342::324e:dcba:abcd
6202: No match
6203: abcde:2:3:4:5:6:7:8
6204: No match
6205: ::1
6206: No match
6207: abcd:fee0:123::
6208: No match
6209: :1
6210: No match
6211: 1:
6212: No match
6213:
6214: /[z\Qa-d]\E]/
6215: z
6216: 0: z
6217: a
6218: 0: a
6219: -
6220: 0: -
6221: d
6222: 0: d
6223: ]
6224: 0: ]
6225: *** Failers
6226: 0: a
6227: b
6228: No match
6229:
6230: /[\z\C]/
6231: z
6232: 0: z
6233: C
6234: 0: C
6235:
6236: /\M/
6237: M
6238: 0: M
6239:
6240: /(a+)*b/
6241: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6242: No match
6243:
6244: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
6245: REGular
6246: 0: REGular
6247: regulaer
6248: 0: regulaer
6249: Regex
6250: 0: Regex
6251: regulr
6252: 0: regul\xe4r
6253:
6254: /[--]+/
6255:
6256: 0: \xc5\xe6\xe5\xe4\xe0
6257:
6258: 0: \xc5\xe6\xe5\xe4\xff
6259:
6260: 0: \xc5\xe6\xe5\xe4\xc0
6261:
6262: 0: \xc5\xe6\xe5\xe4\xdf
6263:
6264: /(?<=Z)X./
6265: \x84XAZXB
6266: 0: XB
6267:
6268: /ab cd (?x) de fg/
6269: ab cd defg
6270: 0: ab cd defg
6271:
6272: /ab cd(?x) de fg/
6273: ab cddefg
6274: 0: ab cddefg
6275: ** Failers
6276: No match
6277: abcddefg
6278: No match
6279:
6280: /(?<![^f]oo)(bar)/
6281: foobarX
6282: 0: bar
6283: 1: bar
6284: ** Failers
6285: No match
6286: boobarX
6287: No match
6288:
6289: /(?<![^f])X/
6290: offX
6291: 0: X
6292: ** Failers
6293: No match
6294: onyX
6295: No match
6296:
6297: /(?<=[^f])X/
6298: onyX
6299: 0: X
6300: ** Failers
6301: No match
6302: offX
6303: No match
6304:
6305: /^/mg
6306: a\nb\nc\n
6307: 0:
6308: 0:
6309: 0:
6310: \
6311: 0:
6312:
6313: /(?<=C\n)^/mg
6314: A\nC\nC\n
6315: 0:
6316:
6317: /(?:(?(1)a|b)(X))+/
6318: bXaX
6319: 0: bXaX
6320: 1: X
6321:
6322: /(?:(?(1)\1a|b)(X|Y))+/
6323: bXXaYYaY
6324: 0: bXXaYYaY
6325: 1: Y
6326: bXYaXXaX
6327: 0: bX
6328: 1: X
6329:
6330: /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
6331: bXXaYYaY
6332: 0: bX
6333: 1:
6334: 2:
6335: 3:
6336: 4:
6337: 5:
6338: 6:
6339: 7:
6340: 8:
6341: 9:
6342: 10: X
6343:
6344: /[[,abc,]+]/
6345: abc]
6346: 0: abc]
6347: a,b]
6348: 0: a,b]
6349: [a,b,c]
6350: 0: [a,b,c]
6351:
6352: /(?-x: )/x
6353: A\x20B
6354: 0:
6355:
6356: "(?x)(?-x: \s*#\s*)"
6357: A # B
6358: 0: #
6359: ** Failers
6360: No match
6361: #
6362: No match
6363:
6364: "(?x-is)(?:(?-ixs) \s*#\s*) include"
6365: A #include
6366: 0: #include
6367: ** Failers
6368: No match
6369: A#include
6370: No match
6371: A #Include
6372: No match
6373:
6374: /a*b*\w/
6375: aaabbbb
6376: 0: aaabbbb
6377: aaaa
6378: 0: aaaa
6379: a
6380: 0: a
6381:
6382: /a*b?\w/
6383: aaabbbb
6384: 0: aaabb
6385: aaaa
6386: 0: aaaa
6387: a
6388: 0: a
6389:
6390: /a*b{0,4}\w/
6391: aaabbbb
6392: 0: aaabbbb
6393: aaaa
6394: 0: aaaa
6395: a
6396: 0: a
6397:
6398: /a*b{0,}\w/
6399: aaabbbb
6400: 0: aaabbbb
6401: aaaa
6402: 0: aaaa
6403: a
6404: 0: a
6405:
6406: /a*\d*\w/
6407: 0a
6408: 0: 0a
6409: a
6410: 0: a
6411:
6412: /a*b *\w/x
6413: a
6414: 0: a
6415:
6416: /a*b#comment
6417: *\w/x
6418: a
6419: 0: a
6420:
6421: /a* b *\w/x
6422: a
6423: 0: a
6424:
6425: /^\w+=.*(\\\n.*)*/
6426: abc=xyz\\\npqr
6427: 0: abc=xyz\
6428:
6429: /(?=(\w+))\1:/
6430: abcd:
6431: 0: abcd:
6432: 1: abcd
6433:
6434: /^(?=(\w+))\1:/
6435: abcd:
6436: 0: abcd:
6437: 1: abcd
6438:
6439: /^\Eabc/
6440: abc
6441: 0: abc
6442:
6443: /^[\Eabc]/
6444: a
6445: 0: a
6446: ** Failers
6447: No match
6448: E
6449: No match
6450:
6451: /^[a-\Ec]/
6452: b
6453: 0: b
6454: ** Failers
6455: No match
6456: -
6457: No match
6458: E
6459: No match
6460:
6461: /^[a\E\E-\Ec]/
6462: b
6463: 0: b
6464: ** Failers
6465: No match
6466: -
6467: No match
6468: E
6469: No match
6470:
6471: /^[\E\Qa\E-\Qz\E]+/
6472: b
6473: 0: b
6474: ** Failers
6475: No match
6476: -
6477: No match
6478:
6479: /^[a\Q]bc\E]/
6480: a
6481: 0: a
6482: ]
6483: 0: ]
6484: c
6485: 0: c
6486:
6487: /^[a-\Q\E]/
6488: a
6489: 0: a
6490: -
6491: 0: -
6492:
6493: /^(a()*)*/
6494: aaaa
6495: 0: aaaa
6496: 1: a
6497: 2:
6498:
6499: /^(?:a(?:(?:))*)*/
6500: aaaa
6501: 0: aaaa
6502:
6503: /^(a()+)+/
6504: aaaa
6505: 0: aaaa
6506: 1: a
6507: 2:
6508:
6509: /^(?:a(?:(?:))+)+/
6510: aaaa
6511: 0: aaaa
6512:
6513: /(a){0,3}(?(1)b|(c|))*D/
6514: abbD
6515: 0: abbD
6516: 1: a
6517: ccccD
6518: 0: ccccD
6519: 1: <unset>
6520: 2:
6521: D
6522: 0: D
6523: 1: <unset>
6524: 2:
6525:
6526: /(a|)*\d/
6527: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6528: No match
6529: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6530: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6531: 1:
6532:
6533: /(?>a|)*\d/
6534: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6535: No match
6536: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6537: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6538:
6539: /(?:a|)*\d/
6540: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6541: No match
6542: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6543: 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6544:
6545: /\Z/g
6546: abc\n
6547: 0:
6548: 0:
6549:
6550: /^(?s)(?>.*)(?<!\n)/
6551: abc
6552: 0: abc
6553: abc\n
6554: No match
6555:
6556: /^(?![^\n]*\n\z)/
6557: abc
6558: 0:
6559: abc\n
6560: No match
6561:
6562: /\z(?<!\n)/
6563: abc
6564: 0:
6565: abc\n
6566: No match
6567:
6568: /(.*(.)?)*/
6569: abcd
6570: 0: abcd
6571: 1:
6572:
6573: /( (A | (?(1)0|) )* )/x
6574: abcd
6575: 0:
6576: 1:
6577: 2:
6578:
6579: /( ( (?(1)0|) )* )/x
6580: abcd
6581: 0:
6582: 1:
6583: 2:
6584:
6585: /( (?(1)0|)* )/x
6586: abcd
6587: 0:
6588: 1:
6589:
6590: /[[:abcd:xyz]]/
6591: a]
6592: 0: a]
6593: :]
6594: 0: :]
6595:
6596: /[abc[:x\]pqr]/
6597: a
6598: 0: a
6599: [
6600: 0: [
6601: :
6602: 0: :
6603: ]
6604: 0: ]
6605: p
6606: 0: p
6607:
6608: /.*[op][xyz]/
6609: fooabcfoo
6610: No match
6611:
6612: /(?(?=.*b)b|^)/
6613: adc
6614: 0:
6615: abc
6616: 0: b
6617:
6618: /(?(?=^.*b)b|^)/
6619: adc
6620: 0:
6621: abc
6622: No match
6623:
6624: /(?(?=.*b)b|^)*/
6625: adc
6626: 0:
6627: abc
6628: 0:
6629:
6630: /(?(?=.*b)b|^)+/
6631: adc
6632: 0:
6633: abc
6634: 0: b
6635:
6636: /(?(?=b).*b|^d)/
6637: abc
6638: 0: b
6639:
6640: /(?(?=.*b).*b|^d)/
6641: abc
6642: 0: ab
6643:
6644: /^%((?(?=[a])[^%])|b)*%$/
6645: %ab%
6646: 0: %ab%
6647: 1:
6648:
6649: /(?i)a(?-i)b|c/
6650: XabX
6651: 0: ab
6652: XAbX
6653: 0: Ab
6654: CcC
6655: 0: c
6656: ** Failers
6657: No match
6658: XABX
6659: No match
6660:
6661: /[\x00-\xff\s]+/
6662: \x0a\x0b\x0c\x0d
6663: 0: \x0a\x0b\x0c\x0d
6664:
6665: /^\c/
6666: ?
6667: 0: ?
6668:
6669: /(abc)\1/i
6670: abc
6671: No match
6672:
6673: /(abc)\1/
6674: abc
6675: No match
6676:
6677: /[^a]*/i
6678: 12abc
6679: 0: 12
6680: 12ABC
6681: 0: 12
6682:
6683: /[^a]*+/i
6684: 12abc
6685: 0: 12
6686: 12ABC
6687: 0: 12
6688:
6689: /[^a]*?X/i
6690: ** Failers
6691: No match
6692: 12abc
6693: No match
6694: 12ABC
6695: No match
6696:
6697: /[^a]+?X/i
6698: ** Failers
6699: No match
6700: 12abc
6701: No match
6702: 12ABC
6703: No match
6704:
6705: /[^a]?X/i
6706: 12aXbcX
6707: 0: X
6708: 12AXBCX
6709: 0: X
6710: BCX
6711: 0: CX
6712:
6713: /[^a]??X/i
6714: 12aXbcX
6715: 0: X
6716: 12AXBCX
6717: 0: X
6718: BCX
6719: 0: CX
6720:
6721: /[^a]?+X/i
6722: 12aXbcX
6723: 0: cX
6724: 12AXBCX
6725: 0: CX
6726: BCX
6727: 0: CX
6728:
6729: /[^a]{2,3}/i
6730: abcdef
6731: 0: bcd
6732: ABCDEF
6733: 0: BCD
6734:
6735: /[^a]{2,3}?/i
6736: abcdef
6737: 0: bc
6738: ABCDEF
6739: 0: BC
6740:
6741: /[^a]{2,3}+/i
6742: abcdef
6743: 0: bcd
6744: ABCDEF
6745: 0: BCD
6746:
6747: /((a|)+)+Z/
6748: Z
6749: 0: Z
6750: 1:
6751: 2:
6752:
6753: /(a)b|(a)c/
6754: ac
6755: 0: ac
6756: 1: <unset>
6757: 2: a
6758:
6759: /(?>(a))b|(a)c/
6760: ac
6761: 0: ac
6762: 1: <unset>
6763: 2: a
6764:
6765: /(?=(a))ab|(a)c/
6766: ac
6767: 0: ac
6768: 1: <unset>
6769: 2: a
6770:
6771: /((?>(a))b|(a)c)/
6772: ac
6773: 0: ac
6774: 1: ac
6775: 2: <unset>
6776: 3: a
6777:
6778: /((?>(a))b|(a)c)++/
6779: ac
6780: 0: ac
6781: 1: ac
6782: 2: <unset>
6783: 3: a
6784:
6785: /(?:(?>(a))b|(a)c)++/
6786: ac
6787: 0: ac
6788: 1: <unset>
6789: 2: a
6790:
6791: /(?=(?>(a))b|(a)c)(..)/
6792: ac
6793: 0: ac
6794: 1: <unset>
6795: 2: a
6796: 3: ac
6797:
6798: /(?>(?>(a))b|(a)c)/
6799: ac
6800: 0: ac
6801: 1: <unset>
6802: 2: a
6803:
6804: /(?:(?>([ab])))+a=/+
6805: =ba=
6806: 0: ba=
6807: 0+
6808: 1: b
6809:
6810: /(?>([ab]))+a=/+
6811: =ba=
6812: 0: ba=
6813: 0+
6814: 1: b
6815:
6816: /((?>(a+)b)+(aabab))/
6817: aaaabaaabaabab
6818: 0: aaaabaaabaabab
6819: 1: aaaabaaabaabab
6820: 2: aaa
6821: 3: aabab
6822:
6823: /(?>a+|ab)+?c/
6824: aabc
6825: No match
6826:
6827: /(?>a+|ab)+c/
6828: aabc
6829: No match
6830:
6831: /(?:a+|ab)+c/
6832: aabc
6833: 0: aabc
6834:
6835: /(?(?=(a))a)/
6836: a
6837: 0: a
6838: 1: a
6839:
6840: /(?(?=(a))a)(b)/
6841: ab
6842: 0: ab
6843: 1: a
6844: 2: b
6845:
6846: /^(?:a|ab)++c/
6847: aaaabc
6848: No match
6849:
6850: /^(?>a|ab)++c/
6851: aaaabc
6852: No match
6853:
6854: /^(?:a|ab)+c/
6855: aaaabc
6856: 0: aaaabc
6857:
6858: /(?=abc){3}abc/+
6859: abcabcabc
6860: 0: abc
6861: 0+ abcabc
6862: ** Failers
6863: No match
6864: xyz
6865: No match
6866:
6867: /(?=abc)+abc/+
6868: abcabcabc
6869: 0: abc
6870: 0+ abcabc
6871: ** Failers
6872: No match
6873: xyz
6874: No match
6875:
6876: /(?=abc)++abc/+
6877: abcabcabc
6878: 0: abc
6879: 0+ abcabc
6880: ** Failers
6881: No match
6882: xyz
6883: No match
6884:
6885: /(?=abc){0}xyz/
6886: xyz
6887: 0: xyz
6888:
6889: /(?=abc){1}xyz/
6890: ** Failers
6891: No match
6892: xyz
6893: No match
6894:
6895: /(?=(a))?./
6896: ab
6897: 0: a
6898: 1: a
6899: bc
6900: 0: b
6901:
6902: /(?=(a))??./
6903: ab
6904: 0: a
6905: bc
6906: 0: b
6907:
6908: /^(?=(a)){0}b(?1)/
6909: backgammon
6910: 0: ba
6911:
6912: /^(?=(?1))?[az]([abc])d/
6913: abd
6914: 0: abd
6915: 1: b
6916: zcdxx
6917: 0: zcd
6918: 1: c
6919:
6920: /^(?!a){0}\w+/
6921: aaaaa
6922: 0: aaaaa
6923:
6924: /(?<=(abc))?xyz/
6925: abcxyz
6926: 0: xyz
6927: 1: abc
6928: pqrxyz
6929: 0: xyz
6930:
6931: /^[\g<a>]+/
6932: ggg<<<aaa>>>
6933: 0: ggg<<<aaa>>>
6934: ** Failers
6935: No match
6936: \\ga
6937: No match
6938:
6939: /^[\ga]+/
6940: gggagagaxyz
6941: 0: gggagaga
6942:
6943: /^[:a[:digit:]]+/
6944: aaaa444:::Z
6945: 0: aaaa444:::
6946:
6947: /^[:a[:digit:]:b]+/
6948: aaaa444:::bbbZ
6949: 0: aaaa444:::bbb
6950:
6951: /[:a]xxx[b:]/
6952: :xxx:
6953: 0: :xxx:
6954:
6955: /(?<=a{2})b/i
6956: xaabc
6957: 0: b
6958: ** Failers
6959: No match
6960: xabc
6961: No match
6962:
6963: /(?<!a{2})b/i
6964: xabc
6965: 0: b
6966: ** Failers
6967: No match
6968: xaabc
6969: No match
6970:
6971: /(?<=a\h)c/
6972: xa c
6973: 0: c
6974:
6975: /(?<=[^a]{2})b/
6976: axxbc
6977: 0: b
6978: aAAbc
6979: 0: b
6980: ** Failers
6981: No match
6982: xaabc
6983: No match
6984:
6985: /(?<=[^a]{2})b/i
6986: axxbc
6987: 0: b
6988: ** Failers
6989: No match
6990: aAAbc
6991: No match
6992: xaabc
6993: No match
6994:
6995: /(?<=a\H)c/
6996: abc
6997: 0: c
6998:
6999: /(?<=a\V)c/
7000: abc
7001: 0: c
7002:
7003: /(?<=a\v)c/
7004: a\nc
7005: 0: c
7006:
7007: /(?(?=c)c|d)++Y/
7008: XcccddYX
7009: 0: cccddY
7010:
7011: /(?(?=c)c|d)*+Y/
7012: XcccddYX
7013: 0: cccddY
7014:
7015: /^(a{2,3}){2,}+a/
7016: aaaaaaa
7017: 0: aaaaaaa
7018: 1: aaa
7019: ** Failers
7020: No match
7021: aaaaaa
7022: No match
7023: aaaaaaaaa
7024: No match
7025:
7026: /^(a{2,3})++a/
7027: ** Failers
7028: No match
7029: aaaaaa
7030: No match
7031:
7032: /^(a{2,3})*+a/
7033: ** Failers
7034: No match
7035: aaaaaa
7036: No match
7037:
7038: /ab\Cde/
7039: abXde
7040: 0: abXde
7041:
7042: /(?<=ab\Cde)X/
7043: abZdeX
7044: 0: X
7045:
7046: /a[\CD]b/
7047: aCb
7048: 0: aCb
7049: aDb
7050: 0: aDb
7051:
7052: /a[\C-X]b/
7053: aJb
7054: 0: aJb
7055:
7056: /-- End of testinput1 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>