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