Annotation of embedaddon/pcre/testdata/testinput8, revision 1.1.1.5
1.1.1.5 ! misho 1: /-- This set of tests check the DFA matching functionality of pcre_dfa_exec(),
! 2: excluding UTF and Unicode property support. The -dfa flag must be used with
! 3: pcretest when running it. --/
! 4:
! 5: < forbid 8W
1.1.1.2 misho 6:
7: /abc/
8: abc
9:
10: /ab*c/
11: abc
12: abbbbc
13: ac
14:
15: /ab+c/
16: abc
17: abbbbbbc
18: *** Failers
19: ac
20: ab
21:
1.1.1.5 ! misho 22: /a*/O
1.1.1.2 misho 23: a
24: aaaaaaaaaaaaaaaaa
25: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
26: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
27:
28: /(a|abcd|african)/
29: a
30: abcd
31: african
32:
33: /^abc/
34: abcdef
35: *** Failers
36: xyzabc
37: xyz\nabc
38:
39: /^abc/m
40: abcdef
41: xyz\nabc
42: *** Failers
43: xyzabc
44:
45: /\Aabc/
46: abcdef
47: *** Failers
48: xyzabc
49: xyz\nabc
50:
51: /\Aabc/m
52: abcdef
53: *** Failers
54: xyzabc
55: xyz\nabc
56:
57: /\Gabc/
58: abcdef
59: xyzabc\>3
60: *** Failers
61: xyzabc
62: xyzabc\>2
63:
64: /x\dy\Dz/
65: x9yzz
66: x0y+z
67: *** Failers
68: xyz
69: xxy0z
70:
71: /x\sy\Sz/
72: x yzz
73: x y+z
74: *** Failers
75: xyz
76: xxyyz
77:
78: /x\wy\Wz/
79: xxy+z
80: *** Failers
81: xxy0z
82: x+y+z
83:
84: /x.y/
85: x+y
86: x-y
87: *** Failers
88: x\ny
89:
90: /x.y/s
91: x+y
92: x-y
93: x\ny
94:
95: /(a.b(?s)c.d|x.y)p.q/
96: a+bc+dp+q
97: a+bc\ndp+q
98: x\nyp+q
99: *** Failers
100: a\nbc\ndp+q
101: a+bc\ndp\nq
102: x\nyp\nq
103:
104: /a\d\z/
105: ba0
106: *** Failers
107: ba0\n
108: ba0\ncd
109:
110: /a\d\z/m
111: ba0
112: *** Failers
113: ba0\n
114: ba0\ncd
115:
116: /a\d\Z/
117: ba0
118: ba0\n
119: *** Failers
120: ba0\ncd
121:
122: /a\d\Z/m
123: ba0
124: ba0\n
125: *** Failers
126: ba0\ncd
127:
128: /a\d$/
129: ba0
130: ba0\n
131: *** Failers
132: ba0\ncd
133:
134: /a\d$/m
135: ba0
136: ba0\n
137: ba0\ncd
138: *** Failers
139:
140: /abc/i
141: abc
142: aBc
143: ABC
144:
145: /[^a]/
146: abcd
147:
148: /ab?\w/
149: abz
150: abbz
151: azz
152:
153: /x{0,3}yz/
154: ayzq
155: axyzq
156: axxyz
157: axxxyzq
158: axxxxyzq
159: *** Failers
160: ax
161: axx
162:
163: /x{3}yz/
164: axxxyzq
165: axxxxyzq
166: *** Failers
167: ax
168: axx
169: ayzq
170: axyzq
171: axxyz
172:
173: /x{2,3}yz/
174: axxyz
175: axxxyzq
176: axxxxyzq
177: *** Failers
178: ax
179: axx
180: ayzq
181: axyzq
182:
1.1.1.5 ! misho 183: /[^a]+/O
1.1.1.2 misho 184: bac
185: bcdefax
186: *** Failers
187: aaaaa
188:
1.1.1.5 ! misho 189: /[^a]*/O
1.1.1.2 misho 190: bac
191: bcdefax
192: *** Failers
193: aaaaa
194:
1.1.1.5 ! misho 195: /[^a]{3,5}/O
1.1.1.2 misho 196: xyz
197: awxyza
198: abcdefa
199: abcdefghijk
200: *** Failers
201: axya
202: axa
203: aaaaa
204:
205: /\d*/
206: 1234b567
207: xyz
208:
209: /\D*/
210: a1234b567
211: xyz
212:
213: /\d+/
214: ab1234c56
215: *** Failers
216: xyz
217:
218: /\D+/
219: ab123c56
220: *** Failers
221: 789
222:
223: /\d?A/
224: 045ABC
225: ABC
226: *** Failers
227: XYZ
228:
229: /\D?A/
230: ABC
231: BAC
232: 9ABC
233: *** Failers
234:
235: /a+/
236: aaaa
237:
238: /^.*xyz/
239: xyz
240: ggggggggxyz
241:
242: /^.+xyz/
243: abcdxyz
244: axyz
245: *** Failers
246: xyz
247:
248: /^.?xyz/
249: xyz
250: cxyz
251:
252: /^\d{2,3}X/
253: 12X
254: 123X
255: *** Failers
256: X
257: 1X
258: 1234X
259:
260: /^[abcd]\d/
261: a45
262: b93
263: c99z
264: d04
265: *** Failers
266: e45
267: abcd
268: abcd1234
269: 1234
270:
271: /^[abcd]*\d/
272: a45
273: b93
274: c99z
275: d04
276: abcd1234
277: 1234
278: *** Failers
279: e45
280: abcd
281:
282: /^[abcd]+\d/
283: a45
284: b93
285: c99z
286: d04
287: abcd1234
288: *** Failers
289: 1234
290: e45
291: abcd
292:
293: /^a+X/
294: aX
295: aaX
296:
297: /^[abcd]?\d/
298: a45
299: b93
300: c99z
301: d04
302: 1234
303: *** Failers
304: abcd1234
305: e45
306:
307: /^[abcd]{2,3}\d/
308: ab45
309: bcd93
310: *** Failers
311: 1234
312: a36
313: abcd1234
314: ee45
315:
316: /^(abc)*\d/
317: abc45
318: abcabcabc45
319: 42xyz
320: *** Failers
321:
322: /^(abc)+\d/
323: abc45
324: abcabcabc45
325: *** Failers
326: 42xyz
327:
328: /^(abc)?\d/
329: abc45
330: 42xyz
331: *** Failers
332: abcabcabc45
333:
334: /^(abc){2,3}\d/
335: abcabc45
336: abcabcabc45
337: *** Failers
338: abcabcabcabc45
339: abc45
340: 42xyz
341:
342: /1(abc|xyz)2(?1)3/
343: 1abc2abc3456
344: 1abc2xyz3456
345:
346: /^(a*\w|ab)=(a*\w|ab)/
347: ab=ab
348:
349: /^(a*\w|ab)=(?1)/
350: ab=ab
351:
352: /^([^()]|\((?1)*\))*$/
353: abc
354: a(b)c
355: a(b(c))d
356: *** Failers)
357: a(b(c)d
358:
359: /^>abc>([^()]|\((?1)*\))*<xyz<$/
360: >abc>123<xyz<
361: >abc>1(2)3<xyz<
362: >abc>(1(2)3)<xyz<
363:
364: /^(?>a*)\d/
365: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
366: *** Failers
367: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
368:
369: /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
370: <>
371: <abcd>
372: <abc <123> hij>
373: <abc <def> hij>
374: <abc<>def>
375: <abc<>
376: *** Failers
377: <abc
378:
379: /^(?(?=abc)\w{3}:|\d\d)$/
380: abc:
381: 12
382: *** Failers
383: 123
384: xyz
385:
386: /^(?(?!abc)\d\d|\w{3}:)$/
387: abc:
388: 12
389: *** Failers
390: 123
391: xyz
392:
393: /^(?=abc)\w{5}:$/
394: abcde:
395: *** Failers
396: abc..
397: 123
398: vwxyz
399:
400: /^(?!abc)\d\d$/
401: 12
402: *** Failers
403: abcde:
404: abc..
405: 123
406: vwxyz
407:
408: /(?<=abc|xy)123/
409: abc12345
410: wxy123z
411: *** Failers
412: 123abc
413:
414: /(?<!abc|xy)123/
415: 123abc
416: mno123456
417: *** Failers
418: abc12345
419: wxy123z
420:
421: /abc(?C1)xyz/
422: abcxyz
423: 123abcxyz999
424:
425: /(ab|cd){3,4}/C
426: ababab
427: abcdabcd
428: abcdcdcdcdcd
429:
430: /^abc/
431: abcdef
432: *** Failers
433: abcdef\B
434:
435: /^(a*|xyz)/
436: bcd
437: aaabcd
438: xyz
439: xyz\N
440: *** Failers
441: bcd\N
442:
443: /xyz$/
444: xyz
445: xyz\n
446: *** Failers
447: xyz\Z
448: xyz\n\Z
449:
450: /xyz$/m
451: xyz
452: xyz\n
453: abcxyz\npqr
454: abcxyz\npqr\Z
455: xyz\n\Z
456: *** Failers
457: xyz\Z
458:
459: /\Gabc/
460: abcdef
461: defabcxyz\>3
462: *** Failers
463: defabcxyz
464:
465: /^abcdef/
466: ab\P
467: abcde\P
468: abcdef\P
469: *** Failers
470: abx\P
471:
472: /^a{2,4}\d+z/
473: a\P
474: aa\P
475: aa2\P
476: aaa\P
477: aaa23\P
478: aaaa12345\P
479: aa0z\P
480: aaaa4444444444444z\P
481: *** Failers
482: az\P
483: aaaaa\P
484: a56\P
485:
486: /^abcdef/
487: abc\P
488: def\R
489:
490: /(?<=foo)bar/
491: xyzfo\P
492: foob\P\>2
493: foobar...\R\P\>4
494: xyzfo\P
495: foobar\>2
496: *** Failers
497: xyzfo\P
498: obar\R
499:
500: /(ab*(cd|ef))+X/
501: adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
502: lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
503: cdabbbbbbbb\P\R\B\Z
504: efabbbbbbbbbbbbbbbb\P\R\B\Z
505: bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
506:
507: /(a|b)/SF>testsavedregex
508: <testsavedregex
509: abc
510: ** Failers
511: def
512:
513: /the quick brown fox/
514: the quick brown fox
515: The quick brown FOX
516: What do you know about the quick brown fox?
517: What do you know about THE QUICK BROWN FOX?
518:
519: /The quick brown fox/i
520: the quick brown fox
521: The quick brown FOX
522: What do you know about the quick brown fox?
523: What do you know about THE QUICK BROWN FOX?
524:
525: /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
526: abcd\t\n\r\f\a\e9;\$\\?caxyz
527:
528: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
529: abxyzpqrrrabbxyyyypqAzz
530: abxyzpqrrrabbxyyyypqAzz
531: aabxyzpqrrrabbxyyyypqAzz
532: aaabxyzpqrrrabbxyyyypqAzz
533: aaaabxyzpqrrrabbxyyyypqAzz
534: abcxyzpqrrrabbxyyyypqAzz
535: aabcxyzpqrrrabbxyyyypqAzz
536: aaabcxyzpqrrrabbxyyyypAzz
537: aaabcxyzpqrrrabbxyyyypqAzz
538: aaabcxyzpqrrrabbxyyyypqqAzz
539: aaabcxyzpqrrrabbxyyyypqqqAzz
540: aaabcxyzpqrrrabbxyyyypqqqqAzz
541: aaabcxyzpqrrrabbxyyyypqqqqqAzz
542: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
543: aaaabcxyzpqrrrabbxyyyypqAzz
544: abxyzzpqrrrabbxyyyypqAzz
545: aabxyzzzpqrrrabbxyyyypqAzz
546: aaabxyzzzzpqrrrabbxyyyypqAzz
547: aaaabxyzzzzpqrrrabbxyyyypqAzz
548: abcxyzzpqrrrabbxyyyypqAzz
549: aabcxyzzzpqrrrabbxyyyypqAzz
550: aaabcxyzzzzpqrrrabbxyyyypqAzz
551: aaaabcxyzzzzpqrrrabbxyyyypqAzz
552: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
553: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
554: aaabcxyzpqrrrabbxyyyypABzz
555: aaabcxyzpqrrrabbxyyyypABBzz
556: >>>aaabxyzpqrrrabbxyyyypqAzz
557: >aaaabxyzpqrrrabbxyyyypqAzz
558: >>>>abcxyzpqrrrabbxyyyypqAzz
559: *** Failers
560: abxyzpqrrabbxyyyypqAzz
561: abxyzpqrrrrabbxyyyypqAzz
562: abxyzpqrrrabxyyyypqAzz
563: aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
564: aaaabcxyzzzzpqrrrabbbxyyypqAzz
565: aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
566:
567: /^(abc){1,2}zz/
568: abczz
569: abcabczz
570: *** Failers
571: zz
572: abcabcabczz
573: >>abczz
574:
575: /^(b+?|a){1,2}?c/
576: bc
577: bbc
578: bbbc
579: bac
580: bbac
581: aac
582: abbbbbbbbbbbc
583: bbbbbbbbbbbac
584: *** Failers
585: aaac
586: abbbbbbbbbbbac
587:
588: /^(b+|a){1,2}c/
589: bc
590: bbc
591: bbbc
592: bac
593: bbac
594: aac
595: abbbbbbbbbbbc
596: bbbbbbbbbbbac
597: *** Failers
598: aaac
599: abbbbbbbbbbbac
600:
601: /^(b+|a){1,2}?bc/
602: bbc
603:
604: /^(b*|ba){1,2}?bc/
605: babc
606: bbabc
607: bababc
608: *** Failers
609: bababbc
610: babababc
611:
612: /^(ba|b*){1,2}?bc/
613: babc
614: bbabc
615: bababc
616: *** Failers
617: bababbc
618: babababc
619:
620: /^\ca\cA\c[\c{\c:/
621: \x01\x01\e;z
622:
623: /^[ab\]cde]/
624: athing
625: bthing
626: ]thing
627: cthing
628: dthing
629: ething
630: *** Failers
631: fthing
632: [thing
633: \\thing
634:
635: /^[]cde]/
636: ]thing
637: cthing
638: dthing
639: ething
640: *** Failers
641: athing
642: fthing
643:
644: /^[^ab\]cde]/
645: fthing
646: [thing
647: \\thing
648: *** Failers
649: athing
650: bthing
651: ]thing
652: cthing
653: dthing
654: ething
655:
656: /^[^]cde]/
657: athing
658: fthing
659: *** Failers
660: ]thing
661: cthing
662: dthing
663: ething
664:
665: /^\/
666:
667:
668: /^/
669:
670:
671: /^[0-9]+$/
672: 0
673: 1
674: 2
675: 3
676: 4
677: 5
678: 6
679: 7
680: 8
681: 9
682: 10
683: 100
684: *** Failers
685: abc
686:
687: /^.*nter/
688: enter
689: inter
690: uponter
691:
692: /^xxx[0-9]+$/
693: xxx0
694: xxx1234
695: *** Failers
696: xxx
697:
698: /^.+[0-9][0-9][0-9]$/
699: x123
700: xx123
701: 123456
702: *** Failers
703: 123
704: x1234
705:
706: /^.+?[0-9][0-9][0-9]$/
707: x123
708: xx123
709: 123456
710: *** Failers
711: 123
712: x1234
713:
714: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
715: abc!pqr=apquxz.ixr.zzz.ac.uk
716: *** Failers
717: !pqr=apquxz.ixr.zzz.ac.uk
718: abc!=apquxz.ixr.zzz.ac.uk
719: abc!pqr=apquxz:ixr.zzz.ac.uk
720: abc!pqr=apquxz.ixr.zzz.ac.ukk
721:
722: /:/
723: Well, we need a colon: somewhere
724: *** Fail if we don't
725:
726: /([\da-f:]+)$/i
727: 0abc
728: abc
729: fed
730: E
731: ::
732: 5f03:12C0::932e
733: fed def
734: Any old stuff
735: *** Failers
736: 0zzz
737: gzzz
738: fed\x20
739: Any old rubbish
740:
741: /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
742: .1.2.3
743: A.12.123.0
744: *** Failers
745: .1.2.3333
746: 1.2.3
747: 1234.2.3
748:
749: /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
750: 1 IN SOA non-sp1 non-sp2(
751: 1 IN SOA non-sp1 non-sp2 (
752: *** Failers
753: 1IN SOA non-sp1 non-sp2(
754:
755: /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
756: a.
757: Z.
758: 2.
759: ab-c.pq-r.
760: sxk.zzz.ac.uk.
761: x-.y-.
762: *** Failers
763: -abc.peq.
764:
765: /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
766: *.a
767: *.b0-a
768: *.c3-b.c
769: *.c-a.b-c
770: *** Failers
771: *.0
772: *.a-
773: *.a-b.c-
774: *.c-a.0-c
775:
776: /^(?=ab(de))(abd)(e)/
777: abde
778:
779: /^(?!(ab)de|x)(abd)(f)/
780: abdf
781:
782: /^(?=(ab(cd)))(ab)/
783: abcd
784:
785: /^[\da-f](\.[\da-f])*$/i
786: a.b.c.d
787: A.B.C.D
788: a.b.c.1.2.3.C
789:
790: /^\".*\"\s*(;.*)?$/
791: \"1234\"
792: \"abcd\" ;
793: \"\" ; rhubarb
794: *** Failers
795: \"1234\" : things
796:
797: /^$/
798: \
799: *** Failers
800:
801: / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
802: ab c
803: *** Failers
804: abc
805: ab cde
806:
807: /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
808: ab c
809: *** Failers
810: abc
811: ab cde
812:
813: /^ a\ b[c ]d $/x
814: a bcd
815: a b d
816: *** Failers
817: abcd
818: ab d
819:
820: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
821: abcdefhijklm
822:
823: /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
824: abcdefhijklm
825:
826: /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
827: a+ Z0+\x08\n\x1d\x12
828:
829: /^[.^$|()*+?{,}]+/
830: .^\$(*+)|{?,?}
831:
832: /^a*\w/
833: z
834: az
835: aaaz
836: a
837: aa
838: aaaa
839: a+
840: aa+
841:
842: /^a*?\w/
843: z
844: az
845: aaaz
846: a
847: aa
848: aaaa
849: a+
850: aa+
851:
852: /^a+\w/
853: az
854: aaaz
855: aa
856: aaaa
857: aa+
858:
859: /^a+?\w/
860: az
861: aaaz
862: aa
863: aaaa
864: aa+
865:
866: /^\d{8}\w{2,}/
867: 1234567890
868: 12345678ab
869: 12345678__
870: *** Failers
871: 1234567
872:
873: /^[aeiou\d]{4,5}$/
874: uoie
875: 1234
876: 12345
877: aaaaa
878: *** Failers
879: 123456
880:
881: /^[aeiou\d]{4,5}?/
882: uoie
883: 1234
884: 12345
885: aaaaa
886: 123456
887:
888: /^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]/
889: From abcd Mon Sep 01 12:33:02 1997
890:
891: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
892: From abcd Mon Sep 01 12:33:02 1997
893: From abcd Mon Sep 1 12:33:02 1997
894: *** Failers
895: From abcd Sep 01 12:33:02 1997
896:
897: /^12.34/s
898: 12\n34
899: 12\r34
900:
901: /\w+(?=\t)/
902: the quick brown\t fox
903:
904: /foo(?!bar)(.*)/
905: foobar is foolish see?
906:
907: /(?:(?!foo)...|^.{0,2})bar(.*)/
908: foobar crowbar etc
909: barrel
910: 2barrel
911: A barrel
912:
913: /^(\D*)(?=\d)(?!123)/
914: abc456
915: *** Failers
916: abc123
917:
918: /^1234(?# test newlines
919: inside)/
920: 1234
921:
922: /^1234 #comment in extended re
923: /x
924: 1234
925:
926: /#rhubarb
927: abcd/x
928: abcd
929:
930: /^abcd#rhubarb/x
931: abcd
932:
933: /(?!^)abc/
934: the abc
935: *** Failers
936: abc
937:
938: /(?=^)abc/
939: abc
940: *** Failers
941: the abc
942:
1.1.1.5 ! misho 943: /^[ab]{1,3}(ab*|b)/O
1.1.1.2 misho 944: aabbbbb
945:
1.1.1.5 ! misho 946: /^[ab]{1,3}?(ab*|b)/O
1.1.1.2 misho 947: aabbbbb
948:
1.1.1.5 ! misho 949: /^[ab]{1,3}?(ab*?|b)/O
1.1.1.2 misho 950: aabbbbb
951:
1.1.1.5 ! misho 952: /^[ab]{1,3}(ab*?|b)/O
1.1.1.2 misho 953: aabbbbb
954:
955: / (?: [\040\t] | \(
956: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
957: \) )* # optional leading comment
958: (?: (?:
959: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
960: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
961: |
962: " (?: # opening quote...
963: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
964: | # or
965: \\ [^\x80-\xff] # Escaped something (something != CR)
966: )* " # closing quote
967: ) # initial word
968: (?: (?: [\040\t] | \(
969: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
970: \) )* \. (?: [\040\t] | \(
971: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
972: \) )* (?:
973: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
974: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
975: |
976: " (?: # opening quote...
977: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
978: | # or
979: \\ [^\x80-\xff] # Escaped something (something != CR)
980: )* " # closing quote
981: ) )* # further okay, if led by a period
982: (?: [\040\t] | \(
983: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
984: \) )* @ (?: [\040\t] | \(
985: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
986: \) )* (?:
987: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
988: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
989: | \[ # [
990: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
991: \] # ]
992: ) # initial subdomain
993: (?: #
994: (?: [\040\t] | \(
995: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
996: \) )* \. # if led by a period...
997: (?: [\040\t] | \(
998: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
999: \) )* (?:
1000: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1001: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1002: | \[ # [
1003: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1004: \] # ]
1005: ) # ...further okay
1006: )*
1007: # address
1008: | # or
1009: (?:
1010: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1011: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1012: |
1013: " (?: # opening quote...
1014: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1015: | # or
1016: \\ [^\x80-\xff] # Escaped something (something != CR)
1017: )* " # closing quote
1018: ) # one word, optionally followed by....
1019: (?:
1020: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
1021: \(
1022: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1023: \) | # comments, or...
1024:
1025: " (?: # opening quote...
1026: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1027: | # or
1028: \\ [^\x80-\xff] # Escaped something (something != CR)
1029: )* " # closing quote
1030: # quoted strings
1031: )*
1032: < (?: [\040\t] | \(
1033: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1034: \) )* # leading <
1035: (?: @ (?: [\040\t] | \(
1036: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1037: \) )* (?:
1038: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1039: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1040: | \[ # [
1041: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1042: \] # ]
1043: ) # initial subdomain
1044: (?: #
1045: (?: [\040\t] | \(
1046: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1047: \) )* \. # if led by a period...
1048: (?: [\040\t] | \(
1049: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1050: \) )* (?:
1051: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1052: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1053: | \[ # [
1054: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1055: \] # ]
1056: ) # ...further okay
1057: )*
1058:
1059: (?: (?: [\040\t] | \(
1060: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1061: \) )* , (?: [\040\t] | \(
1062: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1063: \) )* @ (?: [\040\t] | \(
1064: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1065: \) )* (?:
1066: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1067: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1068: | \[ # [
1069: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1070: \] # ]
1071: ) # initial subdomain
1072: (?: #
1073: (?: [\040\t] | \(
1074: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1075: \) )* \. # if led by a period...
1076: (?: [\040\t] | \(
1077: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1078: \) )* (?:
1079: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1080: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1081: | \[ # [
1082: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1083: \] # ]
1084: ) # ...further okay
1085: )*
1086: )* # further okay, if led by comma
1087: : # closing colon
1088: (?: [\040\t] | \(
1089: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1090: \) )* )? # optional route
1091: (?:
1092: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1093: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1094: |
1095: " (?: # opening quote...
1096: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1097: | # or
1098: \\ [^\x80-\xff] # Escaped something (something != CR)
1099: )* " # closing quote
1100: ) # initial word
1101: (?: (?: [\040\t] | \(
1102: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1103: \) )* \. (?: [\040\t] | \(
1104: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1105: \) )* (?:
1106: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1107: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1108: |
1109: " (?: # opening quote...
1110: [^\\\x80-\xff\n\015"] # Anything except backslash and quote
1111: | # or
1112: \\ [^\x80-\xff] # Escaped something (something != CR)
1113: )* " # closing quote
1114: ) )* # further okay, if led by a period
1115: (?: [\040\t] | \(
1116: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1117: \) )* @ (?: [\040\t] | \(
1118: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1119: \) )* (?:
1120: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1121: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1122: | \[ # [
1123: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1124: \] # ]
1125: ) # initial subdomain
1126: (?: #
1127: (?: [\040\t] | \(
1128: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1129: \) )* \. # if led by a period...
1130: (?: [\040\t] | \(
1131: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1132: \) )* (?:
1133: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1134: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1135: | \[ # [
1136: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1137: \] # ]
1138: ) # ...further okay
1139: )*
1140: # address spec
1141: (?: [\040\t] | \(
1142: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1143: \) )* > # trailing >
1144: # name and address
1145: ) (?: [\040\t] | \(
1146: (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
1147: \) )* # optional trailing comment
1148: /x
1149: Alan Other <user\@dom.ain>
1150: <user\@dom.ain>
1151: user\@dom.ain
1152: \"A. Other\" <user.1234\@dom.ain> (a comment)
1153: A. Other <user.1234\@dom.ain> (a comment)
1154: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1155: A missing angle <user\@some.where
1156: *** Failers
1157: The quick brown fox
1158:
1159: /[\040\t]* # Nab whitespace.
1160: (?:
1161: \( # (
1162: [^\\\x80-\xff\n\015()] * # normal*
1163: (?: # (
1164: (?: \\ [^\x80-\xff] |
1165: \( # (
1166: [^\\\x80-\xff\n\015()] * # normal*
1167: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1168: \) # )
1169: ) # special
1170: [^\\\x80-\xff\n\015()] * # normal*
1171: )* # )*
1172: \) # )
1173: [\040\t]* )* # If comment found, allow more spaces.
1174: # optional leading comment
1175: (?:
1176: (?:
1177: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1178: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1179: # Atom
1180: | # or
1181: " # "
1182: [^\\\x80-\xff\n\015"] * # normal
1183: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1184: " # "
1185: # Quoted string
1186: )
1187: [\040\t]* # Nab whitespace.
1188: (?:
1189: \( # (
1190: [^\\\x80-\xff\n\015()] * # normal*
1191: (?: # (
1192: (?: \\ [^\x80-\xff] |
1193: \( # (
1194: [^\\\x80-\xff\n\015()] * # normal*
1195: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1196: \) # )
1197: ) # special
1198: [^\\\x80-\xff\n\015()] * # normal*
1199: )* # )*
1200: \) # )
1201: [\040\t]* )* # If comment found, allow more spaces.
1202: (?:
1203: \.
1204: [\040\t]* # Nab whitespace.
1205: (?:
1206: \( # (
1207: [^\\\x80-\xff\n\015()] * # normal*
1208: (?: # (
1209: (?: \\ [^\x80-\xff] |
1210: \( # (
1211: [^\\\x80-\xff\n\015()] * # normal*
1212: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1213: \) # )
1214: ) # special
1215: [^\\\x80-\xff\n\015()] * # normal*
1216: )* # )*
1217: \) # )
1218: [\040\t]* )* # If comment found, allow more spaces.
1219: (?:
1220: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1221: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1222: # Atom
1223: | # or
1224: " # "
1225: [^\\\x80-\xff\n\015"] * # normal
1226: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1227: " # "
1228: # Quoted string
1229: )
1230: [\040\t]* # Nab whitespace.
1231: (?:
1232: \( # (
1233: [^\\\x80-\xff\n\015()] * # normal*
1234: (?: # (
1235: (?: \\ [^\x80-\xff] |
1236: \( # (
1237: [^\\\x80-\xff\n\015()] * # normal*
1238: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1239: \) # )
1240: ) # special
1241: [^\\\x80-\xff\n\015()] * # normal*
1242: )* # )*
1243: \) # )
1244: [\040\t]* )* # If comment found, allow more spaces.
1245: # additional words
1246: )*
1247: @
1248: [\040\t]* # Nab whitespace.
1249: (?:
1250: \( # (
1251: [^\\\x80-\xff\n\015()] * # normal*
1252: (?: # (
1253: (?: \\ [^\x80-\xff] |
1254: \( # (
1255: [^\\\x80-\xff\n\015()] * # normal*
1256: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1257: \) # )
1258: ) # special
1259: [^\\\x80-\xff\n\015()] * # normal*
1260: )* # )*
1261: \) # )
1262: [\040\t]* )* # If comment found, allow more spaces.
1263: (?:
1264: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1265: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1266: |
1267: \[ # [
1268: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1269: \] # ]
1270: )
1271: [\040\t]* # Nab whitespace.
1272: (?:
1273: \( # (
1274: [^\\\x80-\xff\n\015()] * # normal*
1275: (?: # (
1276: (?: \\ [^\x80-\xff] |
1277: \( # (
1278: [^\\\x80-\xff\n\015()] * # normal*
1279: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1280: \) # )
1281: ) # special
1282: [^\\\x80-\xff\n\015()] * # normal*
1283: )* # )*
1284: \) # )
1285: [\040\t]* )* # If comment found, allow more spaces.
1286: # optional trailing comments
1287: (?:
1288: \.
1289: [\040\t]* # Nab whitespace.
1290: (?:
1291: \( # (
1292: [^\\\x80-\xff\n\015()] * # normal*
1293: (?: # (
1294: (?: \\ [^\x80-\xff] |
1295: \( # (
1296: [^\\\x80-\xff\n\015()] * # normal*
1297: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1298: \) # )
1299: ) # special
1300: [^\\\x80-\xff\n\015()] * # normal*
1301: )* # )*
1302: \) # )
1303: [\040\t]* )* # If comment found, allow more spaces.
1304: (?:
1305: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1306: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1307: |
1308: \[ # [
1309: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1310: \] # ]
1311: )
1312: [\040\t]* # Nab whitespace.
1313: (?:
1314: \( # (
1315: [^\\\x80-\xff\n\015()] * # normal*
1316: (?: # (
1317: (?: \\ [^\x80-\xff] |
1318: \( # (
1319: [^\\\x80-\xff\n\015()] * # normal*
1320: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1321: \) # )
1322: ) # special
1323: [^\\\x80-\xff\n\015()] * # normal*
1324: )* # )*
1325: \) # )
1326: [\040\t]* )* # If comment found, allow more spaces.
1327: # optional trailing comments
1328: )*
1329: # address
1330: | # or
1331: (?:
1332: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1333: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1334: # Atom
1335: | # or
1336: " # "
1337: [^\\\x80-\xff\n\015"] * # normal
1338: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1339: " # "
1340: # Quoted string
1341: )
1342: # leading word
1343: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
1344: (?:
1345: (?:
1346: \( # (
1347: [^\\\x80-\xff\n\015()] * # normal*
1348: (?: # (
1349: (?: \\ [^\x80-\xff] |
1350: \( # (
1351: [^\\\x80-\xff\n\015()] * # normal*
1352: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1353: \) # )
1354: ) # special
1355: [^\\\x80-\xff\n\015()] * # normal*
1356: )* # )*
1357: \) # )
1358: |
1359: " # "
1360: [^\\\x80-\xff\n\015"] * # normal
1361: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1362: " # "
1363: ) # "special" comment or quoted string
1364: [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
1365: )*
1366: <
1367: [\040\t]* # Nab whitespace.
1368: (?:
1369: \( # (
1370: [^\\\x80-\xff\n\015()] * # normal*
1371: (?: # (
1372: (?: \\ [^\x80-\xff] |
1373: \( # (
1374: [^\\\x80-\xff\n\015()] * # normal*
1375: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1376: \) # )
1377: ) # special
1378: [^\\\x80-\xff\n\015()] * # normal*
1379: )* # )*
1380: \) # )
1381: [\040\t]* )* # If comment found, allow more spaces.
1382: # <
1383: (?:
1384: @
1385: [\040\t]* # Nab whitespace.
1386: (?:
1387: \( # (
1388: [^\\\x80-\xff\n\015()] * # normal*
1389: (?: # (
1390: (?: \\ [^\x80-\xff] |
1391: \( # (
1392: [^\\\x80-\xff\n\015()] * # normal*
1393: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1394: \) # )
1395: ) # special
1396: [^\\\x80-\xff\n\015()] * # normal*
1397: )* # )*
1398: \) # )
1399: [\040\t]* )* # If comment found, allow more spaces.
1400: (?:
1401: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1402: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1403: |
1404: \[ # [
1405: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1406: \] # ]
1407: )
1408: [\040\t]* # Nab whitespace.
1409: (?:
1410: \( # (
1411: [^\\\x80-\xff\n\015()] * # normal*
1412: (?: # (
1413: (?: \\ [^\x80-\xff] |
1414: \( # (
1415: [^\\\x80-\xff\n\015()] * # normal*
1416: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1417: \) # )
1418: ) # special
1419: [^\\\x80-\xff\n\015()] * # normal*
1420: )* # )*
1421: \) # )
1422: [\040\t]* )* # If comment found, allow more spaces.
1423: # optional trailing comments
1424: (?:
1425: \.
1426: [\040\t]* # Nab whitespace.
1427: (?:
1428: \( # (
1429: [^\\\x80-\xff\n\015()] * # normal*
1430: (?: # (
1431: (?: \\ [^\x80-\xff] |
1432: \( # (
1433: [^\\\x80-\xff\n\015()] * # normal*
1434: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1435: \) # )
1436: ) # special
1437: [^\\\x80-\xff\n\015()] * # normal*
1438: )* # )*
1439: \) # )
1440: [\040\t]* )* # If comment found, allow more spaces.
1441: (?:
1442: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1443: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1444: |
1445: \[ # [
1446: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1447: \] # ]
1448: )
1449: [\040\t]* # Nab whitespace.
1450: (?:
1451: \( # (
1452: [^\\\x80-\xff\n\015()] * # normal*
1453: (?: # (
1454: (?: \\ [^\x80-\xff] |
1455: \( # (
1456: [^\\\x80-\xff\n\015()] * # normal*
1457: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1458: \) # )
1459: ) # special
1460: [^\\\x80-\xff\n\015()] * # normal*
1461: )* # )*
1462: \) # )
1463: [\040\t]* )* # If comment found, allow more spaces.
1464: # optional trailing comments
1465: )*
1466: (?: ,
1467: [\040\t]* # Nab whitespace.
1468: (?:
1469: \( # (
1470: [^\\\x80-\xff\n\015()] * # normal*
1471: (?: # (
1472: (?: \\ [^\x80-\xff] |
1473: \( # (
1474: [^\\\x80-\xff\n\015()] * # normal*
1475: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1476: \) # )
1477: ) # special
1478: [^\\\x80-\xff\n\015()] * # normal*
1479: )* # )*
1480: \) # )
1481: [\040\t]* )* # If comment found, allow more spaces.
1482: @
1483: [\040\t]* # Nab whitespace.
1484: (?:
1485: \( # (
1486: [^\\\x80-\xff\n\015()] * # normal*
1487: (?: # (
1488: (?: \\ [^\x80-\xff] |
1489: \( # (
1490: [^\\\x80-\xff\n\015()] * # normal*
1491: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1492: \) # )
1493: ) # special
1494: [^\\\x80-\xff\n\015()] * # normal*
1495: )* # )*
1496: \) # )
1497: [\040\t]* )* # If comment found, allow more spaces.
1498: (?:
1499: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1500: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1501: |
1502: \[ # [
1503: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1504: \] # ]
1505: )
1506: [\040\t]* # Nab whitespace.
1507: (?:
1508: \( # (
1509: [^\\\x80-\xff\n\015()] * # normal*
1510: (?: # (
1511: (?: \\ [^\x80-\xff] |
1512: \( # (
1513: [^\\\x80-\xff\n\015()] * # normal*
1514: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1515: \) # )
1516: ) # special
1517: [^\\\x80-\xff\n\015()] * # normal*
1518: )* # )*
1519: \) # )
1520: [\040\t]* )* # If comment found, allow more spaces.
1521: # optional trailing comments
1522: (?:
1523: \.
1524: [\040\t]* # Nab whitespace.
1525: (?:
1526: \( # (
1527: [^\\\x80-\xff\n\015()] * # normal*
1528: (?: # (
1529: (?: \\ [^\x80-\xff] |
1530: \( # (
1531: [^\\\x80-\xff\n\015()] * # normal*
1532: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1533: \) # )
1534: ) # special
1535: [^\\\x80-\xff\n\015()] * # normal*
1536: )* # )*
1537: \) # )
1538: [\040\t]* )* # If comment found, allow more spaces.
1539: (?:
1540: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1541: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1542: |
1543: \[ # [
1544: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1545: \] # ]
1546: )
1547: [\040\t]* # Nab whitespace.
1548: (?:
1549: \( # (
1550: [^\\\x80-\xff\n\015()] * # normal*
1551: (?: # (
1552: (?: \\ [^\x80-\xff] |
1553: \( # (
1554: [^\\\x80-\xff\n\015()] * # normal*
1555: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1556: \) # )
1557: ) # special
1558: [^\\\x80-\xff\n\015()] * # normal*
1559: )* # )*
1560: \) # )
1561: [\040\t]* )* # If comment found, allow more spaces.
1562: # optional trailing comments
1563: )*
1564: )* # additional domains
1565: :
1566: [\040\t]* # Nab whitespace.
1567: (?:
1568: \( # (
1569: [^\\\x80-\xff\n\015()] * # normal*
1570: (?: # (
1571: (?: \\ [^\x80-\xff] |
1572: \( # (
1573: [^\\\x80-\xff\n\015()] * # normal*
1574: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1575: \) # )
1576: ) # special
1577: [^\\\x80-\xff\n\015()] * # normal*
1578: )* # )*
1579: \) # )
1580: [\040\t]* )* # If comment found, allow more spaces.
1581: # optional trailing comments
1582: )? # optional route
1583: (?:
1584: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1585: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1586: # Atom
1587: | # or
1588: " # "
1589: [^\\\x80-\xff\n\015"] * # normal
1590: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1591: " # "
1592: # Quoted string
1593: )
1594: [\040\t]* # Nab whitespace.
1595: (?:
1596: \( # (
1597: [^\\\x80-\xff\n\015()] * # normal*
1598: (?: # (
1599: (?: \\ [^\x80-\xff] |
1600: \( # (
1601: [^\\\x80-\xff\n\015()] * # normal*
1602: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1603: \) # )
1604: ) # special
1605: [^\\\x80-\xff\n\015()] * # normal*
1606: )* # )*
1607: \) # )
1608: [\040\t]* )* # If comment found, allow more spaces.
1609: (?:
1610: \.
1611: [\040\t]* # Nab whitespace.
1612: (?:
1613: \( # (
1614: [^\\\x80-\xff\n\015()] * # normal*
1615: (?: # (
1616: (?: \\ [^\x80-\xff] |
1617: \( # (
1618: [^\\\x80-\xff\n\015()] * # normal*
1619: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1620: \) # )
1621: ) # special
1622: [^\\\x80-\xff\n\015()] * # normal*
1623: )* # )*
1624: \) # )
1625: [\040\t]* )* # If comment found, allow more spaces.
1626: (?:
1627: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1628: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1629: # Atom
1630: | # or
1631: " # "
1632: [^\\\x80-\xff\n\015"] * # normal
1633: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1634: " # "
1635: # Quoted string
1636: )
1637: [\040\t]* # Nab whitespace.
1638: (?:
1639: \( # (
1640: [^\\\x80-\xff\n\015()] * # normal*
1641: (?: # (
1642: (?: \\ [^\x80-\xff] |
1643: \( # (
1644: [^\\\x80-\xff\n\015()] * # normal*
1645: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1646: \) # )
1647: ) # special
1648: [^\\\x80-\xff\n\015()] * # normal*
1649: )* # )*
1650: \) # )
1651: [\040\t]* )* # If comment found, allow more spaces.
1652: # additional words
1653: )*
1654: @
1655: [\040\t]* # Nab whitespace.
1656: (?:
1657: \( # (
1658: [^\\\x80-\xff\n\015()] * # normal*
1659: (?: # (
1660: (?: \\ [^\x80-\xff] |
1661: \( # (
1662: [^\\\x80-\xff\n\015()] * # normal*
1663: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1664: \) # )
1665: ) # special
1666: [^\\\x80-\xff\n\015()] * # normal*
1667: )* # )*
1668: \) # )
1669: [\040\t]* )* # If comment found, allow more spaces.
1670: (?:
1671: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1672: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1673: |
1674: \[ # [
1675: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1676: \] # ]
1677: )
1678: [\040\t]* # Nab whitespace.
1679: (?:
1680: \( # (
1681: [^\\\x80-\xff\n\015()] * # normal*
1682: (?: # (
1683: (?: \\ [^\x80-\xff] |
1684: \( # (
1685: [^\\\x80-\xff\n\015()] * # normal*
1686: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1687: \) # )
1688: ) # special
1689: [^\\\x80-\xff\n\015()] * # normal*
1690: )* # )*
1691: \) # )
1692: [\040\t]* )* # If comment found, allow more spaces.
1693: # optional trailing comments
1694: (?:
1695: \.
1696: [\040\t]* # Nab whitespace.
1697: (?:
1698: \( # (
1699: [^\\\x80-\xff\n\015()] * # normal*
1700: (?: # (
1701: (?: \\ [^\x80-\xff] |
1702: \( # (
1703: [^\\\x80-\xff\n\015()] * # normal*
1704: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1705: \) # )
1706: ) # special
1707: [^\\\x80-\xff\n\015()] * # normal*
1708: )* # )*
1709: \) # )
1710: [\040\t]* )* # If comment found, allow more spaces.
1711: (?:
1712: [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1713: (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1714: |
1715: \[ # [
1716: (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1717: \] # ]
1718: )
1719: [\040\t]* # Nab whitespace.
1720: (?:
1721: \( # (
1722: [^\\\x80-\xff\n\015()] * # normal*
1723: (?: # (
1724: (?: \\ [^\x80-\xff] |
1725: \( # (
1726: [^\\\x80-\xff\n\015()] * # normal*
1727: (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1728: \) # )
1729: ) # special
1730: [^\\\x80-\xff\n\015()] * # normal*
1731: )* # )*
1732: \) # )
1733: [\040\t]* )* # If comment found, allow more spaces.
1734: # optional trailing comments
1735: )*
1736: # address spec
1737: > # >
1738: # name and address
1739: )
1740: /x
1741: Alan Other <user\@dom.ain>
1742: <user\@dom.ain>
1743: user\@dom.ain
1744: \"A. Other\" <user.1234\@dom.ain> (a comment)
1745: A. Other <user.1234\@dom.ain> (a comment)
1746: \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1747: A missing angle <user\@some.where
1748: *** Failers
1749: The quick brown fox
1750:
1751: /abc\0def\00pqr\000xyz\0000AB/
1752: abc\0def\00pqr\000xyz\0000AB
1753: abc456 abc\0def\00pqr\000xyz\0000ABCDE
1754:
1755: /abc\x0def\x00pqr\x000xyz\x0000AB/
1756: abc\x0def\x00pqr\x000xyz\x0000AB
1757: abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1758:
1759: /^[\000-\037]/
1760: \0A
1761: \01B
1762: \037C
1763:
1764: /\0*/
1765: \0\0\0\0
1766:
1767: /A\x0{2,3}Z/
1768: The A\x0\x0Z
1769: An A\0\x0\0Z
1770: *** Failers
1771: A\0Z
1772: A\0\x0\0\x0Z
1773:
1774: /^\s/
1775: \040abc
1776: \x0cabc
1777: \nabc
1778: \rabc
1779: \tabc
1780: *** Failers
1781: abc
1782:
1783: /^a b
1784: c/x
1785: abc
1786:
1787: /ab{1,3}bc/
1788: abbbbc
1789: abbbc
1790: abbc
1791: *** Failers
1792: abc
1793: abbbbbc
1794:
1795: /([^.]*)\.([^:]*):[T ]+(.*)/
1796: track1.title:TBlah blah blah
1797:
1798: /([^.]*)\.([^:]*):[T ]+(.*)/i
1799: track1.title:TBlah blah blah
1800:
1801: /([^.]*)\.([^:]*):[t ]+(.*)/i
1802: track1.title:TBlah blah blah
1803:
1804: /^[W-c]+$/
1805: WXY_^abc
1806: *** Failers
1807: wxy
1808:
1809: /^[W-c]+$/i
1810: WXY_^abc
1811: wxy_^ABC
1812:
1813: /^[\x3f-\x5F]+$/i
1814: WXY_^abc
1815: wxy_^ABC
1816:
1817: /^abc$/m
1818: abc
1819: qqq\nabc
1820: abc\nzzz
1821: qqq\nabc\nzzz
1822:
1823: /^abc$/
1824: abc
1825: *** Failers
1826: qqq\nabc
1827: abc\nzzz
1828: qqq\nabc\nzzz
1829:
1830: /\Aabc\Z/m
1831: abc
1832: abc\n
1833: *** Failers
1834: qqq\nabc
1835: abc\nzzz
1836: qqq\nabc\nzzz
1837:
1838: /\A(.)*\Z/s
1839: abc\ndef
1840:
1841: /\A(.)*\Z/m
1842: *** Failers
1843: abc\ndef
1844:
1845: /(?:b)|(?::+)/
1846: b::c
1847: c::b
1848:
1849: /[-az]+/
1850: az-
1851: *** Failers
1852: b
1853:
1854: /[az-]+/
1855: za-
1856: *** Failers
1857: b
1858:
1859: /[a\-z]+/
1860: a-z
1861: *** Failers
1862: b
1863:
1864: /[a-z]+/
1865: abcdxyz
1866:
1867: /[\d-]+/
1868: 12-34
1869: *** Failers
1870: aaa
1871:
1872: /[\d-z]+/
1873: 12-34z
1874: *** Failers
1875: aaa
1876:
1877: /\x5c/
1878: \\
1879:
1880: /\x20Z/
1881: the Zoo
1882: *** Failers
1883: Zulu
1884:
1885: /ab{3cd/
1886: ab{3cd
1887:
1888: /ab{3,cd/
1889: ab{3,cd
1890:
1891: /ab{3,4a}cd/
1892: ab{3,4a}cd
1893:
1894: /{4,5a}bc/
1895: {4,5a}bc
1896:
1897: /^a.b/<lf>
1898: a\rb
1899: *** Failers
1900: a\nb
1901:
1902: /abc$/
1903: abc
1904: abc\n
1905: *** Failers
1906: abc\ndef
1907:
1908: /(abc)\123/
1909: abc\x53
1910:
1911: /(abc)\223/
1912: abc\x93
1913:
1914: /(abc)\323/
1915: abc\xd3
1916:
1917: /(abc)\100/
1918: abc\x40
1919: abc\100
1920:
1921: /(abc)\1000/
1922: abc\x400
1923: abc\x40\x30
1924: abc\1000
1925: abc\100\x30
1926: abc\100\060
1927: abc\100\60
1928:
1.1.1.5 ! misho 1929: /^A\8B\9C$/
! 1930: A8B9C
! 1931: *** Failers
! 1932: A\08B\09C
! 1933:
! 1934: /^[A\8B\9C]+$/
! 1935: A8B9C
! 1936: *** Failers
! 1937: A8B9C\x00
! 1938:
1.1.1.2 misho 1939: /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1940: abcdefghijk\12S
1941:
1942: /ab\idef/
1943: abidef
1944:
1945: /a{0}bc/
1946: bc
1947:
1948: /(a|(bc)){0,0}?xyz/
1949: xyz
1950:
1951: /abc[\10]de/
1952: abc\010de
1953:
1954: /abc[\1]de/
1955: abc\1de
1956:
1957: /(abc)[\1]de/
1958: abc\1de
1959:
1960: /(?s)a.b/
1961: a\nb
1962:
1963: /^([^a])([^\b])([^c]*)([^d]{3,4})/
1964: baNOTccccd
1965: baNOTcccd
1966: baNOTccd
1967: bacccd
1968: *** Failers
1969: anything
1970: b\bc
1971: baccd
1972:
1973: /[^a]/
1974: Abc
1975:
1976: /[^a]/i
1977: Abc
1978:
1979: /[^a]+/
1980: AAAaAbc
1981:
1982: /[^a]+/i
1983: AAAaAbc
1984:
1985: /[^a]+/
1986: bbb\nccc
1987:
1988: /[^k]$/
1989: abc
1990: *** Failers
1991: abk
1992:
1993: /[^k]{2,3}$/
1994: abc
1995: kbc
1996: kabc
1997: *** Failers
1998: abk
1999: akb
2000: akk
2001:
2002: /^\d{8,}\@.+[^k]$/
2003: 12345678\@a.b.c.d
2004: 123456789\@x.y.z
2005: *** Failers
2006: 12345678\@x.y.uk
2007: 1234567\@a.b.c.d
2008:
2009: /[^a]/
2010: aaaabcd
2011: aaAabcd
2012:
2013: /[^a]/i
2014: aaaabcd
2015: aaAabcd
2016:
2017: /[^az]/
2018: aaaabcd
2019: aaAabcd
2020:
2021: /[^az]/i
2022: aaaabcd
2023: aaAabcd
2024:
2025: /\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/
2026: \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
2027:
2028: /P[^*]TAIRE[^*]{1,6}?LL/
2029: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2030:
2031: /P[^*]TAIRE[^*]{1,}?LL/
2032: xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2033:
2034: /(\.\d\d[1-9]?)\d+/
2035: 1.230003938
2036: 1.875000282
2037: 1.235
2038:
2039: /(\.\d\d((?=0)|\d(?=\d)))/
2040: 1.230003938
2041: 1.875000282
2042: *** Failers
2043: 1.235
2044:
2045: /a(?)b/
2046: ab
2047:
2048: /\b(foo)\s+(\w+)/i
2049: Food is on the foo table
2050:
2051: /foo(.*)bar/
2052: The food is under the bar in the barn.
2053:
2054: /foo(.*?)bar/
2055: The food is under the bar in the barn.
2056:
1.1.1.5 ! misho 2057: /(.*)(\d*)/O
1.1.1.2 misho 2058: I have 2 numbers: 53147
2059:
2060: /(.*)(\d+)/
2061: I have 2 numbers: 53147
2062:
1.1.1.5 ! misho 2063: /(.*?)(\d*)/O
1.1.1.2 misho 2064: I have 2 numbers: 53147
2065:
2066: /(.*?)(\d+)/
2067: I have 2 numbers: 53147
2068:
2069: /(.*)(\d+)$/
2070: I have 2 numbers: 53147
2071:
2072: /(.*?)(\d+)$/
2073: I have 2 numbers: 53147
2074:
2075: /(.*)\b(\d+)$/
2076: I have 2 numbers: 53147
2077:
2078: /(.*\D)(\d+)$/
2079: I have 2 numbers: 53147
2080:
2081: /^\D*(?!123)/
2082: ABC123
2083:
2084: /^(\D*)(?=\d)(?!123)/
2085: ABC445
2086: *** Failers
2087: ABC123
2088:
2089: /^[W-]46]/
2090: W46]789
2091: -46]789
2092: *** Failers
2093: Wall
2094: Zebra
2095: 42
2096: [abcd]
2097: ]abcd[
2098:
2099: /^[W-\]46]/
2100: W46]789
2101: Wall
2102: Zebra
2103: Xylophone
2104: 42
2105: [abcd]
2106: ]abcd[
2107: \\backslash
2108: *** Failers
2109: -46]789
2110: well
2111:
2112: /\d\d\/\d\d\/\d\d\d\d/
2113: 01/01/2000
2114:
2115: /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2116: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2117: word cat dog elephant mussel cow horse canary baboon snake shark
2118:
2119: /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2120: 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
2121:
2122: /^(a){0,0}/
2123: bcd
2124: abc
2125: aab
2126:
2127: /^(a){0,1}/
2128: bcd
2129: abc
2130: aab
2131:
2132: /^(a){0,2}/
2133: bcd
2134: abc
2135: aab
2136:
2137: /^(a){0,3}/
2138: bcd
2139: abc
2140: aab
2141: aaa
2142:
2143: /^(a){0,}/
2144: bcd
2145: abc
2146: aab
2147: aaa
2148: aaaaaaaa
2149:
2150: /^(a){1,1}/
2151: bcd
2152: abc
2153: aab
2154:
2155: /^(a){1,2}/
2156: bcd
2157: abc
2158: aab
2159:
2160: /^(a){1,3}/
2161: bcd
2162: abc
2163: aab
2164: aaa
2165:
2166: /^(a){1,}/
2167: bcd
2168: abc
2169: aab
2170: aaa
2171: aaaaaaaa
2172:
2173: /.*\.gif/
2174: borfle\nbib.gif\nno
2175:
2176: /.{0,}\.gif/
2177: borfle\nbib.gif\nno
2178:
2179: /.*\.gif/m
2180: borfle\nbib.gif\nno
2181:
2182: /.*\.gif/s
2183: borfle\nbib.gif\nno
2184:
2185: /.*\.gif/ms
2186: borfle\nbib.gif\nno
2187:
2188: /.*$/
2189: borfle\nbib.gif\nno
2190:
2191: /.*$/m
2192: borfle\nbib.gif\nno
2193:
2194: /.*$/s
2195: borfle\nbib.gif\nno
2196:
2197: /.*$/ms
2198: borfle\nbib.gif\nno
2199:
2200: /.*$/
2201: borfle\nbib.gif\nno\n
2202:
2203: /.*$/m
2204: borfle\nbib.gif\nno\n
2205:
2206: /.*$/s
2207: borfle\nbib.gif\nno\n
2208:
2209: /.*$/ms
2210: borfle\nbib.gif\nno\n
2211:
2212: /(.*X|^B)/
2213: abcde\n1234Xyz
2214: BarFoo
2215: *** Failers
2216: abcde\nBar
2217:
2218: /(.*X|^B)/m
2219: abcde\n1234Xyz
2220: BarFoo
2221: abcde\nBar
2222:
2223: /(.*X|^B)/s
2224: abcde\n1234Xyz
2225: BarFoo
2226: *** Failers
2227: abcde\nBar
2228:
2229: /(.*X|^B)/ms
2230: abcde\n1234Xyz
2231: BarFoo
2232: abcde\nBar
2233:
2234: /(?s)(.*X|^B)/
2235: abcde\n1234Xyz
2236: BarFoo
2237: *** Failers
2238: abcde\nBar
2239:
2240: /(?s:.*X|^B)/
2241: abcde\n1234Xyz
2242: BarFoo
2243: *** Failers
2244: abcde\nBar
2245:
2246: /^.*B/
2247: **** Failers
2248: abc\nB
2249:
2250: /(?s)^.*B/
2251: abc\nB
2252:
2253: /(?m)^.*B/
2254: abc\nB
2255:
2256: /(?ms)^.*B/
2257: abc\nB
2258:
2259: /(?ms)^B/
2260: abc\nB
2261:
2262: /(?s)B$/
2263: B\n
2264:
2265: /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2266: 123456654321
2267:
2268: /^\d\d\d\d\d\d\d\d\d\d\d\d/
2269: 123456654321
2270:
2271: /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2272: 123456654321
2273:
2274: /^[abc]{12}/
2275: abcabcabcabc
2276:
2277: /^[a-c]{12}/
2278: abcabcabcabc
2279:
2280: /^(a|b|c){12}/
2281: abcabcabcabc
2282:
2283: /^[abcdefghijklmnopqrstuvwxy0123456789]/
2284: n
2285: *** Failers
2286: z
2287:
2288: /abcde{0,0}/
2289: abcd
2290: *** Failers
2291: abce
2292:
2293: /ab[cd]{0,0}e/
2294: abe
2295: *** Failers
2296: abcde
2297:
2298: /ab(c){0,0}d/
2299: abd
2300: *** Failers
2301: abcd
2302:
2303: /a(b*)/
2304: a
2305: ab
2306: abbbb
2307: *** Failers
2308: bbbbb
2309:
2310: /ab\d{0}e/
2311: abe
2312: *** Failers
2313: ab1e
2314:
2315: /"([^\\"]+|\\.)*"/
2316: the \"quick\" brown fox
2317: \"the \\\"quick\\\" brown fox\"
2318:
2319: /.*?/g+
2320: abc
2321:
2322: /\b/g+
2323: abc
2324:
2325: /\b/+g
2326: abc
2327:
2328: //g
2329: abc
2330:
2331: /<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
2332: <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>
2333:
2334: /a[^a]b/
2335: acb
2336: a\nb
2337:
2338: /a.b/
2339: acb
2340: *** Failers
2341: a\nb
2342:
2343: /a[^a]b/s
2344: acb
2345: a\nb
2346:
2347: /a.b/s
2348: acb
2349: a\nb
2350:
2351: /^(b+?|a){1,2}?c/
2352: bac
2353: bbac
2354: bbbac
2355: bbbbac
2356: bbbbbac
2357:
2358: /^(b+|a){1,2}?c/
2359: bac
2360: bbac
2361: bbbac
2362: bbbbac
2363: bbbbbac
2364:
2365: /(?!\A)x/m
2366: x\nb\n
2367: a\bx\n
2368:
2369: /\x0{ab}/
2370: \0{ab}
2371:
2372: /(A|B)*?CD/
2373: CD
2374:
2375: /(A|B)*CD/
2376: CD
2377:
2378: /(?<!bar)foo/
2379: foo
2380: catfood
2381: arfootle
2382: rfoosh
2383: *** Failers
2384: barfoo
2385: towbarfoo
2386:
2387: /\w{3}(?<!bar)foo/
2388: catfood
2389: *** Failers
2390: foo
2391: barfoo
2392: towbarfoo
2393:
2394: /(?<=(foo)a)bar/
2395: fooabar
2396: *** Failers
2397: bar
2398: foobbar
2399:
2400: /\Aabc\z/m
2401: abc
2402: *** Failers
2403: abc\n
2404: qqq\nabc
2405: abc\nzzz
2406: qqq\nabc\nzzz
2407:
2408: "(?>.*/)foo"
2409: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
2410:
2411: "(?>.*/)foo"
2412: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2413:
2414: /(?>(\.\d\d[1-9]?))\d+/
2415: 1.230003938
2416: 1.875000282
2417: *** Failers
2418: 1.235
2419:
2420: /^((?>\w+)|(?>\s+))*$/
2421: now is the time for all good men to come to the aid of the party
2422: *** Failers
2423: this is not a line with only words and spaces!
2424:
2425: /(\d+)(\w)/
2426: 12345a
2427: 12345+
2428:
2429: /((?>\d+))(\w)/
2430: 12345a
2431: *** Failers
2432: 12345+
2433:
2434: /(?>a+)b/
2435: aaab
2436:
2437: /((?>a+)b)/
2438: aaab
2439:
2440: /(?>(a+))b/
2441: aaab
2442:
2443: /(?>b)+/
2444: aaabbbccc
2445:
2446: /(?>a+|b+|c+)*c/
2447: aaabbbbccccd
2448:
2449: /(a+|b+|c+)*c/
2450: aaabbbbccccd
2451:
2452: /((?>[^()]+)|\([^()]*\))+/
2453: ((abc(ade)ufh()()x
2454:
2455: /\(((?>[^()]+)|\([^()]+\))+\)/
2456: (abc)
2457: (abc(def)xyz)
2458: *** Failers
2459: ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2460:
2461: /a(?-i)b/i
2462: ab
2463: Ab
2464: *** Failers
2465: aB
2466: AB
2467:
2468: /(a (?x)b c)d e/
2469: a bcd e
2470: *** Failers
2471: a b cd e
2472: abcd e
2473: a bcde
2474:
2475: /(a b(?x)c d (?-x)e f)/
2476: a bcde f
2477: *** Failers
2478: abcdef
2479:
2480: /(a(?i)b)c/
2481: abc
2482: aBc
2483: *** Failers
2484: abC
2485: aBC
2486: Abc
2487: ABc
2488: ABC
2489: AbC
2490:
2491: /a(?i:b)c/
2492: abc
2493: aBc
2494: *** Failers
2495: ABC
2496: abC
2497: aBC
2498:
2499: /a(?i:b)*c/
2500: aBc
2501: aBBc
2502: *** Failers
2503: aBC
2504: aBBC
2505:
2506: /a(?=b(?i)c)\w\wd/
2507: abcd
2508: abCd
2509: *** Failers
2510: aBCd
2511: abcD
2512:
2513: /(?s-i:more.*than).*million/i
2514: more than million
2515: more than MILLION
2516: more \n than Million
2517: *** Failers
2518: MORE THAN MILLION
2519: more \n than \n million
2520:
2521: /(?:(?s-i)more.*than).*million/i
2522: more than million
2523: more than MILLION
2524: more \n than Million
2525: *** Failers
2526: MORE THAN MILLION
2527: more \n than \n million
2528:
2529: /(?>a(?i)b+)+c/
2530: abc
2531: aBbc
2532: aBBc
2533: *** Failers
2534: Abc
2535: abAb
2536: abbC
2537:
2538: /(?=a(?i)b)\w\wc/
2539: abc
2540: aBc
2541: *** Failers
2542: Ab
2543: abC
2544: aBC
2545:
2546: /(?<=a(?i)b)(\w\w)c/
2547: abxxc
2548: aBxxc
2549: *** Failers
2550: Abxxc
2551: ABxxc
2552: abxxC
2553:
2554: /^(?(?=abc)\w{3}:|\d\d)$/
2555: abc:
2556: 12
2557: *** Failers
2558: 123
2559: xyz
2560:
2561: /^(?(?!abc)\d\d|\w{3}:)$/
2562: abc:
2563: 12
2564: *** Failers
2565: 123
2566: xyz
2567:
2568: /(?(?<=foo)bar|cat)/
2569: foobar
2570: cat
2571: fcat
2572: focat
2573: *** Failers
2574: foocat
2575:
2576: /(?(?<!foo)cat|bar)/
2577: foobar
2578: cat
2579: fcat
2580: focat
2581: *** Failers
2582: foocat
2583:
2584: /(?>a*)*/
2585: a
2586: aa
2587: aaaa
2588:
2589: /(abc|)+/
2590: abc
2591: abcabc
2592: abcabcabc
2593: xyz
2594:
2595: /([a]*)*/
2596: a
2597: aaaaa
2598:
2599: /([ab]*)*/
2600: a
2601: b
2602: ababab
2603: aaaabcde
2604: bbbb
2605:
2606: /([^a]*)*/
2607: b
2608: bbbb
2609: aaa
2610:
2611: /([^ab]*)*/
2612: cccc
2613: abab
2614:
2615: /([a]*?)*/
2616: a
2617: aaaa
2618:
2619: /([ab]*?)*/
2620: a
2621: b
2622: abab
2623: baba
2624:
2625: /([^a]*?)*/
2626: b
2627: bbbb
2628: aaa
2629:
2630: /([^ab]*?)*/
2631: c
2632: cccc
2633: baba
2634:
2635: /(?>a*)*/
2636: a
2637: aaabcde
2638:
2639: /((?>a*))*/
2640: aaaaa
2641: aabbaa
2642:
2643: /((?>a*?))*/
2644: aaaaa
2645: aabbaa
2646:
2647: /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2648: 12-sep-98
2649: 12-09-98
2650: *** Failers
2651: sep-12-98
2652:
2653: /(?i:saturday|sunday)/
2654: saturday
2655: sunday
2656: Saturday
2657: Sunday
2658: SATURDAY
2659: SUNDAY
2660: SunDay
2661:
2662: /(a(?i)bc|BB)x/
2663: abcx
2664: aBCx
2665: bbx
2666: BBx
2667: *** Failers
2668: abcX
2669: aBCX
2670: bbX
2671: BBX
2672:
2673: /^([ab](?i)[cd]|[ef])/
2674: ac
2675: aC
2676: bD
2677: elephant
2678: Europe
2679: frog
2680: France
2681: *** Failers
2682: Africa
2683:
2684: /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2685: ab
2686: aBd
2687: xy
2688: xY
2689: zebra
2690: Zambesi
2691: *** Failers
2692: aCD
2693: XY
2694:
2695: /(?<=foo\n)^bar/m
2696: foo\nbar
2697: *** Failers
2698: bar
2699: baz\nbar
2700:
2701: /(?<=(?<!foo)bar)baz/
2702: barbaz
2703: barbarbaz
2704: koobarbaz
2705: *** Failers
2706: baz
2707: foobarbaz
2708:
2709: /The following tests are taken from the Perl 5.005 test suite; some of them/
2710: /are compatible with 5.004, but I'd rather not have to sort them out./
2711:
2712: /abc/
2713: abc
2714: xabcy
2715: ababc
2716: *** Failers
2717: xbc
2718: axc
2719: abx
2720:
2721: /ab*c/
2722: abc
2723:
2724: /ab*bc/
2725: abc
2726: abbc
2727: abbbbc
2728:
2729: /.{1}/
2730: abbbbc
2731:
2732: /.{3,4}/
2733: abbbbc
2734:
2735: /ab{0,}bc/
2736: abbbbc
2737:
2738: /ab+bc/
2739: abbc
2740: *** Failers
2741: abc
2742: abq
2743:
2744: /ab+bc/
2745: abbbbc
2746:
2747: /ab{1,}bc/
2748: abbbbc
2749:
2750: /ab{1,3}bc/
2751: abbbbc
2752:
2753: /ab{3,4}bc/
2754: abbbbc
2755:
2756: /ab{4,5}bc/
2757: *** Failers
2758: abq
2759: abbbbc
2760:
2761: /ab?bc/
2762: abbc
2763: abc
2764:
2765: /ab{0,1}bc/
2766: abc
2767:
2768: /ab?bc/
2769:
2770: /ab?c/
2771: abc
2772:
2773: /ab{0,1}c/
2774: abc
2775:
2776: /^abc$/
2777: abc
2778: *** Failers
2779: abbbbc
2780: abcc
2781:
2782: /^abc/
2783: abcc
2784:
2785: /^abc$/
2786:
2787: /abc$/
2788: aabc
2789: *** Failers
2790: aabc
2791: aabcd
2792:
2793: /^/
2794: abc
2795:
2796: /$/
2797: abc
2798:
2799: /a.c/
2800: abc
2801: axc
2802:
2803: /a.*c/
2804: axyzc
2805:
2806: /a[bc]d/
2807: abd
2808: *** Failers
2809: axyzd
2810: abc
2811:
2812: /a[b-d]e/
2813: ace
2814:
2815: /a[b-d]/
2816: aac
2817:
2818: /a[-b]/
2819: a-
2820:
2821: /a[b-]/
2822: a-
2823:
2824: /a]/
2825: a]
2826:
2827: /a[]]b/
2828: a]b
2829:
2830: /a[^bc]d/
2831: aed
2832: *** Failers
2833: abd
2834: abd
2835:
2836: /a[^-b]c/
2837: adc
2838:
2839: /a[^]b]c/
2840: adc
2841: *** Failers
2842: a-c
2843: a]c
2844:
2845: /\ba\b/
2846: a-
2847: -a
2848: -a-
2849:
2850: /\by\b/
2851: *** Failers
2852: xy
2853: yz
2854: xyz
2855:
2856: /\Ba\B/
2857: *** Failers
2858: a-
2859: -a
2860: -a-
2861:
2862: /\By\b/
2863: xy
2864:
2865: /\by\B/
2866: yz
2867:
2868: /\By\B/
2869: xyz
2870:
2871: /\w/
2872: a
2873:
2874: /\W/
2875: -
2876: *** Failers
2877: -
2878: a
2879:
2880: /a\sb/
2881: a b
2882:
2883: /a\Sb/
2884: a-b
2885: *** Failers
2886: a-b
2887: a b
2888:
2889: /\d/
2890: 1
2891:
2892: /\D/
2893: -
2894: *** Failers
2895: -
2896: 1
2897:
2898: /[\w]/
2899: a
2900:
2901: /[\W]/
2902: -
2903: *** Failers
2904: -
2905: a
2906:
2907: /a[\s]b/
2908: a b
2909:
2910: /a[\S]b/
2911: a-b
2912: *** Failers
2913: a-b
2914: a b
2915:
2916: /[\d]/
2917: 1
2918:
2919: /[\D]/
2920: -
2921: *** Failers
2922: -
2923: 1
2924:
2925: /ab|cd/
2926: abc
2927: abcd
2928:
2929: /()ef/
2930: def
2931:
2932: /$b/
2933:
2934: /a\(b/
2935: a(b
2936:
2937: /a\(*b/
2938: ab
2939: a((b
2940:
2941: /a\\b/
2942: a\b
2943:
2944: /((a))/
2945: abc
2946:
2947: /(a)b(c)/
2948: abc
2949:
2950: /a+b+c/
2951: aabbabc
2952:
2953: /a{1,}b{1,}c/
2954: aabbabc
2955:
2956: /a.+?c/
2957: abcabc
2958:
2959: /(a+|b)*/
2960: ab
2961:
2962: /(a+|b){0,}/
2963: ab
2964:
2965: /(a+|b)+/
2966: ab
2967:
2968: /(a+|b){1,}/
2969: ab
2970:
2971: /(a+|b)?/
2972: ab
2973:
2974: /(a+|b){0,1}/
2975: ab
2976:
2977: /[^ab]*/
2978: cde
2979:
2980: /abc/
2981: *** Failers
2982: b
2983:
2984:
2985: /a*/
2986:
2987:
2988: /([abc])*d/
2989: abbbcd
2990:
2991: /([abc])*bcd/
2992: abcd
2993:
2994: /a|b|c|d|e/
2995: e
2996:
2997: /(a|b|c|d|e)f/
2998: ef
2999:
3000: /abcd*efg/
3001: abcdefg
3002:
3003: /ab*/
3004: xabyabbbz
3005: xayabbbz
3006:
3007: /(ab|cd)e/
3008: abcde
3009:
3010: /[abhgefdc]ij/
3011: hij
3012:
3013: /^(ab|cd)e/
3014:
3015: /(abc|)ef/
3016: abcdef
3017:
3018: /(a|b)c*d/
3019: abcd
3020:
3021: /(ab|ab*)bc/
3022: abc
3023:
3024: /a([bc]*)c*/
3025: abc
3026:
3027: /a([bc]*)(c*d)/
3028: abcd
3029:
3030: /a([bc]+)(c*d)/
3031: abcd
3032:
3033: /a([bc]*)(c+d)/
3034: abcd
3035:
3036: /a[bcd]*dcdcde/
3037: adcdcde
3038:
3039: /a[bcd]+dcdcde/
3040: *** Failers
3041: abcde
3042: adcdcde
3043:
3044: /(ab|a)b*c/
3045: abc
3046:
3047: /((a)(b)c)(d)/
3048: abcd
3049:
3050: /[a-zA-Z_][a-zA-Z0-9_]*/
3051: alpha
3052:
3053: /^a(bc+|b[eh])g|.h$/
3054: abh
3055:
3056: /(bc+d$|ef*g.|h?i(j|k))/
3057: effgz
3058: ij
3059: reffgz
3060: *** Failers
3061: effg
3062: bcdd
3063:
3064: /((((((((((a))))))))))/
3065: a
3066:
3067: /(((((((((a)))))))))/
3068: a
3069:
3070: /multiple words of text/
3071: *** Failers
3072: aa
3073: uh-uh
3074:
3075: /multiple words/
3076: multiple words, yeah
3077:
3078: /(.*)c(.*)/
3079: abcde
3080:
3081: /\((.*), (.*)\)/
3082: (a, b)
3083:
3084: /[k]/
3085:
3086: /abcd/
3087: abcd
3088:
3089: /a(bc)d/
3090: abcd
3091:
3092: /a[-]?c/
3093: ac
3094:
3095: /abc/i
3096: ABC
3097: XABCY
3098: ABABC
3099: *** Failers
3100: aaxabxbaxbbx
3101: XBC
3102: AXC
3103: ABX
3104:
3105: /ab*c/i
3106: ABC
3107:
3108: /ab*bc/i
3109: ABC
3110: ABBC
3111:
3112: /ab*?bc/i
3113: ABBBBC
3114:
3115: /ab{0,}?bc/i
3116: ABBBBC
3117:
3118: /ab+?bc/i
3119: ABBC
3120:
3121: /ab+bc/i
3122: *** Failers
3123: ABC
3124: ABQ
3125:
3126: /ab{1,}bc/i
3127:
3128: /ab+bc/i
3129: ABBBBC
3130:
3131: /ab{1,}?bc/i
3132: ABBBBC
3133:
3134: /ab{1,3}?bc/i
3135: ABBBBC
3136:
3137: /ab{3,4}?bc/i
3138: ABBBBC
3139:
3140: /ab{4,5}?bc/i
3141: *** Failers
3142: ABQ
3143: ABBBBC
3144:
3145: /ab??bc/i
3146: ABBC
3147: ABC
3148:
3149: /ab{0,1}?bc/i
3150: ABC
3151:
3152: /ab??bc/i
3153:
3154: /ab??c/i
3155: ABC
3156:
3157: /ab{0,1}?c/i
3158: ABC
3159:
3160: /^abc$/i
3161: ABC
3162: *** Failers
3163: ABBBBC
3164: ABCC
3165:
3166: /^abc/i
3167: ABCC
3168:
3169: /^abc$/i
3170:
3171: /abc$/i
3172: AABC
3173:
3174: /^/i
3175: ABC
3176:
3177: /$/i
3178: ABC
3179:
3180: /a.c/i
3181: ABC
3182: AXC
3183:
3184: /a.*?c/i
3185: AXYZC
3186:
3187: /a.*c/i
3188: *** Failers
3189: AABC
3190: AXYZD
3191:
3192: /a[bc]d/i
3193: ABD
3194:
3195: /a[b-d]e/i
3196: ACE
3197: *** Failers
3198: ABC
3199: ABD
3200:
3201: /a[b-d]/i
3202: AAC
3203:
3204: /a[-b]/i
3205: A-
3206:
3207: /a[b-]/i
3208: A-
3209:
3210: /a]/i
3211: A]
3212:
3213: /a[]]b/i
3214: A]B
3215:
3216: /a[^bc]d/i
3217: AED
3218:
3219: /a[^-b]c/i
3220: ADC
3221: *** Failers
3222: ABD
3223: A-C
3224:
3225: /a[^]b]c/i
3226: ADC
3227:
3228: /ab|cd/i
3229: ABC
3230: ABCD
3231:
3232: /()ef/i
3233: DEF
3234:
3235: /$b/i
3236: *** Failers
3237: A]C
3238: B
3239:
3240: /a\(b/i
3241: A(B
3242:
3243: /a\(*b/i
3244: AB
3245: A((B
3246:
3247: /a\\b/i
3248: A\B
3249:
3250: /((a))/i
3251: ABC
3252:
3253: /(a)b(c)/i
3254: ABC
3255:
3256: /a+b+c/i
3257: AABBABC
3258:
3259: /a{1,}b{1,}c/i
3260: AABBABC
3261:
3262: /a.+?c/i
3263: ABCABC
3264:
3265: /a.*?c/i
3266: ABCABC
3267:
3268: /a.{0,5}?c/i
3269: ABCABC
3270:
3271: /(a+|b)*/i
3272: AB
3273:
3274: /(a+|b){0,}/i
3275: AB
3276:
3277: /(a+|b)+/i
3278: AB
3279:
3280: /(a+|b){1,}/i
3281: AB
3282:
3283: /(a+|b)?/i
3284: AB
3285:
3286: /(a+|b){0,1}/i
3287: AB
3288:
3289: /(a+|b){0,1}?/i
3290: AB
3291:
3292: /[^ab]*/i
3293: CDE
3294:
3295: /abc/i
3296:
3297: /a*/i
3298:
3299:
3300: /([abc])*d/i
3301: ABBBCD
3302:
3303: /([abc])*bcd/i
3304: ABCD
3305:
3306: /a|b|c|d|e/i
3307: E
3308:
3309: /(a|b|c|d|e)f/i
3310: EF
3311:
3312: /abcd*efg/i
3313: ABCDEFG
3314:
3315: /ab*/i
3316: XABYABBBZ
3317: XAYABBBZ
3318:
3319: /(ab|cd)e/i
3320: ABCDE
3321:
3322: /[abhgefdc]ij/i
3323: HIJ
3324:
3325: /^(ab|cd)e/i
3326: ABCDE
3327:
3328: /(abc|)ef/i
3329: ABCDEF
3330:
3331: /(a|b)c*d/i
3332: ABCD
3333:
3334: /(ab|ab*)bc/i
3335: ABC
3336:
3337: /a([bc]*)c*/i
3338: ABC
3339:
3340: /a([bc]*)(c*d)/i
3341: ABCD
3342:
3343: /a([bc]+)(c*d)/i
3344: ABCD
3345:
3346: /a([bc]*)(c+d)/i
3347: ABCD
3348:
3349: /a[bcd]*dcdcde/i
3350: ADCDCDE
3351:
3352: /a[bcd]+dcdcde/i
3353:
3354: /(ab|a)b*c/i
3355: ABC
3356:
3357: /((a)(b)c)(d)/i
3358: ABCD
3359:
3360: /[a-zA-Z_][a-zA-Z0-9_]*/i
3361: ALPHA
3362:
3363: /^a(bc+|b[eh])g|.h$/i
3364: ABH
3365:
3366: /(bc+d$|ef*g.|h?i(j|k))/i
3367: EFFGZ
3368: IJ
3369: REFFGZ
3370: *** Failers
3371: ADCDCDE
3372: EFFG
3373: BCDD
3374:
3375: /((((((((((a))))))))))/i
3376: A
3377:
3378: /(((((((((a)))))))))/i
3379: A
3380:
3381: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3382: A
3383:
3384: /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3385: C
3386:
3387: /multiple words of text/i
3388: *** Failers
3389: AA
3390: UH-UH
3391:
3392: /multiple words/i
3393: MULTIPLE WORDS, YEAH
3394:
3395: /(.*)c(.*)/i
3396: ABCDE
3397:
3398: /\((.*), (.*)\)/i
3399: (A, B)
3400:
3401: /[k]/i
3402:
3403: /abcd/i
3404: ABCD
3405:
3406: /a(bc)d/i
3407: ABCD
3408:
3409: /a[-]?c/i
3410: AC
3411:
3412: /a(?!b)./
3413: abad
3414:
3415: /a(?=d)./
3416: abad
3417:
3418: /a(?=c|d)./
3419: abad
3420:
3421: /a(?:b|c|d)(.)/
3422: ace
3423:
3424: /a(?:b|c|d)*(.)/
3425: ace
3426:
3427: /a(?:b|c|d)+?(.)/
3428: ace
3429: acdbcdbe
3430:
3431: /a(?:b|c|d)+(.)/
3432: acdbcdbe
3433:
3434: /a(?:b|c|d){2}(.)/
3435: acdbcdbe
3436:
3437: /a(?:b|c|d){4,5}(.)/
3438: acdbcdbe
3439:
3440: /a(?:b|c|d){4,5}?(.)/
3441: acdbcdbe
3442:
3443: /((foo)|(bar))*/
3444: foobar
3445:
3446: /a(?:b|c|d){6,7}(.)/
3447: acdbcdbe
1.1 misho 3448:
1.1.1.2 misho 3449: /a(?:b|c|d){6,7}?(.)/
3450: acdbcdbe
3451:
3452: /a(?:b|c|d){5,6}(.)/
3453: acdbcdbe
3454:
3455: /a(?:b|c|d){5,6}?(.)/
3456: acdbcdbe
3457:
3458: /a(?:b|c|d){5,7}(.)/
3459: acdbcdbe
3460:
3461: /a(?:b|c|d){5,7}?(.)/
3462: acdbcdbe
3463:
3464: /a(?:b|(c|e){1,2}?|d)+?(.)/
3465: ace
3466:
3467: /^(.+)?B/
3468: AB
3469:
3470: /^([^a-z])|(\^)$/
3471: .
3472:
3473: /^[<>]&/
3474: <&OUT
3475:
3476: /(?:(f)(o)(o)|(b)(a)(r))*/
3477: foobar
3478:
3479: /(?<=a)b/
1.1 misho 3480: ab
1.1.1.2 misho 3481: *** Failers
3482: cb
3483: b
3484:
3485: /(?<!c)b/
1.1 misho 3486: ab
1.1.1.2 misho 3487: b
3488: b
1.1 misho 3489:
1.1.1.2 misho 3490: /(?:..)*a/
3491: aba
1.1 misho 3492:
1.1.1.2 misho 3493: /(?:..)*?a/
3494: aba
1.1 misho 3495:
1.1.1.2 misho 3496: /^(){3,5}/
3497: abc
1.1 misho 3498:
1.1.1.2 misho 3499: /^(a+)*ax/
3500: aax
1.1 misho 3501:
1.1.1.2 misho 3502: /^((a|b)+)*ax/
3503: aax
1.1 misho 3504:
1.1.1.2 misho 3505: /^((a|bc)+)*ax/
3506: aax
1.1 misho 3507:
1.1.1.2 misho 3508: /(a|x)*ab/
3509: cab
1.1 misho 3510:
1.1.1.2 misho 3511: /(a)*ab/
3512: cab
1.1 misho 3513:
1.1.1.2 misho 3514: /(?:(?i)a)b/
3515: ab
1.1 misho 3516:
1.1.1.2 misho 3517: /((?i)a)b/
3518: ab
1.1 misho 3519:
1.1.1.2 misho 3520: /(?:(?i)a)b/
3521: Ab
1.1 misho 3522:
1.1.1.2 misho 3523: /((?i)a)b/
3524: Ab
1.1 misho 3525:
1.1.1.2 misho 3526: /(?:(?i)a)b/
1.1 misho 3527: *** Failers
1.1.1.2 misho 3528: cb
3529: aB
1.1 misho 3530:
1.1.1.2 misho 3531: /((?i)a)b/
1.1 misho 3532:
1.1.1.2 misho 3533: /(?i:a)b/
3534: ab
1.1 misho 3535:
1.1.1.2 misho 3536: /((?i:a))b/
3537: ab
1.1 misho 3538:
1.1.1.2 misho 3539: /(?i:a)b/
3540: Ab
1.1 misho 3541:
1.1.1.2 misho 3542: /((?i:a))b/
3543: Ab
3544:
3545: /(?i:a)b/
1.1 misho 3546: *** Failers
1.1.1.2 misho 3547: aB
3548: aB
1.1 misho 3549:
1.1.1.2 misho 3550: /((?i:a))b/
1.1 misho 3551:
1.1.1.2 misho 3552: /(?:(?-i)a)b/i
3553: ab
1.1 misho 3554:
1.1.1.2 misho 3555: /((?-i)a)b/i
3556: ab
1.1 misho 3557:
1.1.1.2 misho 3558: /(?:(?-i)a)b/i
3559: aB
1.1 misho 3560:
1.1.1.2 misho 3561: /((?-i)a)b/i
3562: aB
3563:
3564: /(?:(?-i)a)b/i
1.1 misho 3565: *** Failers
1.1.1.2 misho 3566: aB
3567: Ab
1.1 misho 3568:
1.1.1.2 misho 3569: /((?-i)a)b/i
1.1 misho 3570:
1.1.1.2 misho 3571: /(?:(?-i)a)b/i
3572: aB
1.1 misho 3573:
1.1.1.2 misho 3574: /((?-i)a)b/i
3575: aB
1.1 misho 3576:
1.1.1.2 misho 3577: /(?:(?-i)a)b/i
3578: *** Failers
3579: Ab
3580: AB
1.1 misho 3581:
1.1.1.2 misho 3582: /((?-i)a)b/i
1.1 misho 3583:
1.1.1.2 misho 3584: /(?-i:a)b/i
3585: ab
1.1 misho 3586:
1.1.1.2 misho 3587: /((?-i:a))b/i
3588: ab
1.1 misho 3589:
1.1.1.2 misho 3590: /(?-i:a)b/i
3591: aB
1.1 misho 3592:
1.1.1.2 misho 3593: /((?-i:a))b/i
3594: aB
1.1 misho 3595:
1.1.1.2 misho 3596: /(?-i:a)b/i
3597: *** Failers
3598: AB
3599: Ab
1.1 misho 3600:
1.1.1.2 misho 3601: /((?-i:a))b/i
1.1 misho 3602:
1.1.1.2 misho 3603: /(?-i:a)b/i
3604: aB
1.1 misho 3605:
1.1.1.2 misho 3606: /((?-i:a))b/i
3607: aB
1.1 misho 3608:
1.1.1.2 misho 3609: /(?-i:a)b/i
3610: *** Failers
3611: Ab
3612: AB
1.1 misho 3613:
1.1.1.2 misho 3614: /((?-i:a))b/i
1.1 misho 3615:
1.1.1.2 misho 3616: /((?-i:a.))b/i
1.1 misho 3617: *** Failers
1.1.1.2 misho 3618: AB
3619: a\nB
1.1 misho 3620:
1.1.1.2 misho 3621: /((?s-i:a.))b/i
3622: a\nB
1.1 misho 3623:
1.1.1.2 misho 3624: /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3625: cabbbb
1.1 misho 3626:
1.1.1.2 misho 3627: /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3628: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
1.1 misho 3629:
1.1.1.2 misho 3630: /foo\w*\d{4}baz/
3631: foobar1234baz
1.1 misho 3632:
1.1.1.2 misho 3633: /x(~~)*(?:(?:F)?)?/
3634: x~~
1.1 misho 3635:
1.1.1.2 misho 3636: /^a(?#xxx){3}c/
3637: aaac
1.1 misho 3638:
1.1.1.2 misho 3639: /^a (?#xxx) (?#yyy) {3}c/x
3640: aaac
1.1 misho 3641:
1.1.1.2 misho 3642: /(?<![cd])b/
1.1 misho 3643: *** Failers
1.1.1.2 misho 3644: B\nB
3645: dbcb
1.1 misho 3646:
1.1.1.2 misho 3647: /(?<![cd])[ab]/
3648: dbaacb
1.1 misho 3649:
1.1.1.2 misho 3650: /(?<!(c|d))b/
1.1 misho 3651:
1.1.1.2 misho 3652: /(?<!(c|d))[ab]/
3653: dbaacb
1.1 misho 3654:
1.1.1.2 misho 3655: /(?<!cd)[ab]/
3656: cdaccb
1.1 misho 3657:
1.1.1.2 misho 3658: /^(?:a?b?)*$/
1.1 misho 3659: *** Failers
1.1.1.2 misho 3660: dbcb
3661: a--
1.1 misho 3662:
1.1.1.2 misho 3663: /((?s)^a(.))((?m)^b$)/
3664: a\nb\nc\n
3665:
3666: /((?m)^b$)/
3667: a\nb\nc\n
3668:
3669: /(?m)^b/
3670: a\nb\n
3671:
3672: /(?m)^(b)/
3673: a\nb\n
3674:
3675: /((?m)^b)/
3676: a\nb\n
3677:
3678: /\n((?m)^b)/
3679: a\nb\n
3680:
3681: /((?s).)c(?!.)/
3682: a\nb\nc\n
3683: a\nb\nc\n
3684:
3685: /((?s)b.)c(?!.)/
3686: a\nb\nc\n
3687: a\nb\nc\n
1.1 misho 3688:
1.1.1.2 misho 3689: /^b/
3690:
3691: /()^b/
1.1 misho 3692: *** Failers
1.1.1.2 misho 3693: a\nb\nc\n
3694: a\nb\nc\n
3695:
3696: /((?m)^b)/
3697: a\nb\nc\n
3698:
3699: /(?(?!a)a|b)/
3700:
3701: /(?(?!a)b|a)/
3702: a
1.1 misho 3703:
1.1.1.2 misho 3704: /(?(?=a)b|a)/
1.1 misho 3705: *** Failers
1.1.1.2 misho 3706: a
3707: a
3708:
3709: /(?(?=a)a|b)/
3710: a
3711:
3712: /(\w+:)+/
3713: one:
3714:
3715: /$(?<=^(a))/
3716: a
3717:
3718: /([\w:]+::)?(\w+)$/
3719: abcd
3720: xy:z:::abcd
3721:
3722: /^[^bcd]*(c+)/
3723: aexycd
1.1 misho 3724:
1.1.1.2 misho 3725: /(a*)b+/
3726: caab
3727:
3728: /([\w:]+::)?(\w+)$/
3729: abcd
3730: xy:z:::abcd
1.1 misho 3731: *** Failers
1.1.1.2 misho 3732: abcd:
3733: abcd:
1.1 misho 3734:
1.1.1.2 misho 3735: /^[^bcd]*(c+)/
3736: aexycd
1.1 misho 3737:
1.1.1.2 misho 3738: /(>a+)ab/
1.1 misho 3739:
1.1.1.2 misho 3740: /(?>a+)b/
3741: aaab
1.1 misho 3742:
1.1.1.2 misho 3743: /([[:]+)/
3744: a:[b]:
1.1 misho 3745:
1.1.1.2 misho 3746: /([[=]+)/
3747: a=[b]=
1.1 misho 3748:
1.1.1.2 misho 3749: /([[.]+)/
3750: a.[b].
1.1 misho 3751:
1.1.1.2 misho 3752: /((?>a+)b)/
3753: aaab
1.1 misho 3754:
1.1.1.2 misho 3755: /(?>(a+))b/
3756: aaab
1.1 misho 3757:
1.1.1.2 misho 3758: /((?>[^()]+)|\([^()]*\))+/
3759: ((abc(ade)ufh()()x
3760:
3761: /a\Z/
3762: *** Failers
3763: aaab
3764: a\nb\n
1.1 misho 3765:
1.1.1.2 misho 3766: /b\Z/
3767: a\nb\n
1.1 misho 3768:
1.1.1.2 misho 3769: /b\z/
1.1 misho 3770:
1.1.1.2 misho 3771: /b\Z/
3772: a\nb
1.1 misho 3773:
1.1.1.2 misho 3774: /b\z/
3775: a\nb
3776: *** Failers
3777:
3778: /(?>.*)(?<=(abcd|wxyz))/
3779: alphabetabcd
3780: endingwxyz
1.1 misho 3781: *** Failers
1.1.1.2 misho 3782: a rather long string that doesn't end with one of them
1.1 misho 3783:
1.1.1.2 misho 3784: /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3785: word cat dog elephant mussel cow horse canary baboon snake shark otherword
3786: word cat dog elephant mussel cow horse canary baboon snake shark
3787:
3788: /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3789: 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
3790:
3791: /(?<=\d{3}(?!999))foo/
3792: 999foo
3793: 123999foo
3794: *** Failers
3795: 123abcfoo
3796:
3797: /(?<=(?!...999)\d{3})foo/
3798: 999foo
3799: 123999foo
1.1 misho 3800: *** Failers
1.1.1.2 misho 3801: 123abcfoo
1.1 misho 3802:
1.1.1.2 misho 3803: /(?<=\d{3}(?!999)...)foo/
3804: 123abcfoo
3805: 123456foo
1.1 misho 3806: *** Failers
1.1.1.2 misho 3807: 123999foo
3808:
3809: /(?<=\d{3}...)(?<!999)foo/
3810: 123abcfoo
3811: 123456foo
3812: *** Failers
3813: 123999foo
3814:
3815: /((Z)+|A)*/
3816: ZABCDEFG
3817:
3818: /(Z()|A)*/
3819: ZABCDEFG
3820:
3821: /(Z(())|A)*/
3822: ZABCDEFG
3823:
3824: /((?>Z)+|A)*/
3825: ZABCDEFG
3826:
3827: /((?>)+|A)*/
3828: ZABCDEFG
3829:
3830: /a*/g
3831: abbab
1.1 misho 3832:
1.1.1.2 misho 3833: /^[\d-a]/
3834: abcde
3835: -things
3836: 0digit
1.1 misho 3837: *** Failers
1.1.1.2 misho 3838: bcdef
3839:
3840: /[[:space:]]+/
3841: > \x09\x0a\x0c\x0d\x0b<
3842:
3843: /[[:blank:]]+/
3844: > \x09\x0a\x0c\x0d\x0b<
3845:
3846: /[\s]+/
3847: > \x09\x0a\x0c\x0d\x0b<
3848:
3849: /\s+/
3850: > \x09\x0a\x0c\x0d\x0b<
3851:
3852: /ab/x
3853: ab
3854:
3855: /(?!\A)x/m
3856: a\nxb\n
3857:
3858: /(?!^)x/m
3859: a\nxb\n
1.1 misho 3860:
1.1.1.2 misho 3861: /abc\Qabc\Eabc/
3862: abcabcabc
3863:
3864: /abc\Q(*+|\Eabc/
3865: abc(*+|abc
3866:
3867: / abc\Q abc\Eabc/x
3868: abc abcabc
1.1 misho 3869: *** Failers
1.1.1.2 misho 3870: abcabcabc
3871:
3872: /abc#comment
3873: \Q#not comment
3874: literal\E/x
3875: abc#not comment\n literal
3876:
3877: /abc#comment
3878: \Q#not comment
3879: literal/x
3880: abc#not comment\n literal
3881:
3882: /abc#comment
3883: \Q#not comment
3884: literal\E #more comment
3885: /x
3886: abc#not comment\n literal
3887:
3888: /abc#comment
3889: \Q#not comment
3890: literal\E #more comment/x
3891: abc#not comment\n literal
1.1 misho 3892:
1.1.1.2 misho 3893: /\Qabc\$xyz\E/
3894: abc\\\$xyz
3895:
3896: /\Qabc\E\$\Qxyz\E/
3897: abc\$xyz
3898:
3899: /\Gabc/
3900: abc
1.1 misho 3901: *** Failers
1.1.1.2 misho 3902: xyzabc
1.1 misho 3903:
1.1.1.2 misho 3904: /\Gabc./g
3905: abc1abc2xyzabc3
1.1 misho 3906:
1.1.1.2 misho 3907: /abc./g
3908: abc1abc2xyzabc3
1.1 misho 3909:
1.1.1.2 misho 3910: /a(?x: b c )d/
3911: XabcdY
3912: *** Failers
3913: Xa b c d Y
1.1 misho 3914:
1.1.1.2 misho 3915: /((?x)x y z | a b c)/
3916: XabcY
3917: AxyzB
1.1 misho 3918:
1.1.1.2 misho 3919: /(?i)AB(?-i)C/
3920: XabCY
3921: *** Failers
3922: XabcY
1.1 misho 3923:
1.1.1.2 misho 3924: /((?i)AB(?-i)C|D)E/
3925: abCE
3926: DE
3927: *** Failers
3928: abcE
3929: abCe
3930: dE
3931: De
1.1 misho 3932:
1.1.1.2 misho 3933: /[z\Qa-d]\E]/
3934: z
3935: a
3936: -
3937: d
3938: ]
3939: *** Failers
3940: b
1.1 misho 3941:
1.1.1.2 misho 3942: /[\z\C]/
3943: z
3944: C
3945:
3946: /\M/
3947: M
3948:
3949: /(a+)*b/
3950: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3951:
3952: /(?i)reg(?:ul(?:[a]|ae)r|ex)/
3953: REGular
3954: regulaer
3955: Regex
3956: regulr
3957:
3958: /[--]+/
3959:
3960:
3961:
3962:
3963:
3964: /(?<=Z)X./
3965: \x84XAZXB
3966:
3967: /^(?(2)a|(1)(2))+$/
3968: 123a
3969:
3970: /(?<=a|bbbb)c/
3971: ac
3972: bbbbc
3973:
3974: /abc/SS>testsavedregex
3975: <testsavedregex
3976: abc
3977: *** Failers
3978: bca
3979:
3980: /abc/FSS>testsavedregex
3981: <testsavedregex
3982: abc
3983: *** Failers
3984: bca
3985:
3986: /(a|b)/S>testsavedregex
3987: <testsavedregex
3988: abc
3989: *** Failers
3990: def
3991:
3992: /(a|b)/SF>testsavedregex
3993: <testsavedregex
3994: abc
3995: *** Failers
3996: def
3997:
3998: /line\nbreak/
3999: this is a line\nbreak
4000: line one\nthis is a line\nbreak in the second line
4001:
4002: /line\nbreak/f
4003: this is a line\nbreak
4004: ** Failers
4005: line one\nthis is a line\nbreak in the second line
4006:
4007: /line\nbreak/mf
4008: this is a line\nbreak
4009: ** Failers
4010: line one\nthis is a line\nbreak in the second line
4011:
4012: /1234/
4013: 123\P
4014: a4\P\R
4015:
4016: /1234/
4017: 123\P
4018: 4\P\R
4019:
4020: /^/mg
4021: a\nb\nc\n
4022: \
4023:
4024: /(?<=C\n)^/mg
4025: A\nC\nC\n
1.1 misho 4026:
1.1.1.2 misho 4027: /(?s)A?B/
4028: AB
4029: aB
4030:
4031: /(?s)A*B/
4032: AB
4033: aB
4034:
4035: /(?m)A?B/
4036: AB
4037: aB
4038:
4039: /(?m)A*B/
4040: AB
4041: aB
4042:
4043: /Content-Type\x3A[^\r\n]{6,}/
4044: Content-Type:xxxxxyyy
4045:
4046: /Content-Type\x3A[^\r\n]{6,}z/
4047: Content-Type:xxxxxyyyz
4048:
4049: /Content-Type\x3A[^a]{6,}/
4050: Content-Type:xxxyyy
4051:
4052: /Content-Type\x3A[^a]{6,}z/
4053: Content-Type:xxxyyyz
4054:
4055: /^abc/m
4056: xyz\nabc
4057: xyz\nabc\<lf>
4058: xyz\r\nabc\<lf>
4059: xyz\rabc\<cr>
4060: xyz\r\nabc\<crlf>
4061: ** Failers
4062: xyz\nabc\<cr>
4063: xyz\r\nabc\<cr>
4064: xyz\nabc\<crlf>
4065: xyz\rabc\<crlf>
4066: xyz\rabc\<lf>
4067:
4068: /abc$/m<lf>
4069: xyzabc
4070: xyzabc\n
4071: xyzabc\npqr
4072: xyzabc\r\<cr>
4073: xyzabc\rpqr\<cr>
4074: xyzabc\r\n\<crlf>
4075: xyzabc\r\npqr\<crlf>
4076: ** Failers
4077: xyzabc\r
4078: xyzabc\rpqr
4079: xyzabc\r\n
4080: xyzabc\r\npqr
4081:
4082: /^abc/m<cr>
4083: xyz\rabcdef
4084: xyz\nabcdef\<lf>
4085: ** Failers
4086: xyz\nabcdef
4087:
4088: /^abc/m<lf>
4089: xyz\nabcdef
4090: xyz\rabcdef\<cr>
4091: ** Failers
4092: xyz\rabcdef
4093:
4094: /^abc/m<crlf>
4095: xyz\r\nabcdef
4096: xyz\rabcdef\<cr>
4097: ** Failers
4098: xyz\rabcdef
4099:
4100: /.*/<lf>
4101: abc\ndef
4102: abc\rdef
4103: abc\r\ndef
4104: \<cr>abc\ndef
4105: \<cr>abc\rdef
4106: \<cr>abc\r\ndef
4107: \<crlf>abc\ndef
4108: \<crlf>abc\rdef
4109: \<crlf>abc\r\ndef
4110:
4111: /\w+(.)(.)?def/s
4112: abc\ndef
4113: abc\rdef
4114: abc\r\ndef
4115:
4116: /^\w+=.*(\\\n.*)*/
4117: abc=xyz\\\npqr
4118:
4119: /^(a()*)*/
4120: aaaa
4121:
4122: /^(?:a(?:(?:))*)*/
4123: aaaa
4124:
4125: /^(a()+)+/
4126: aaaa
4127:
4128: /^(?:a(?:(?:))+)+/
4129: aaaa
4130:
4131: /(a|)*\d/
4132: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4133: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4134:
4135: /(?>a|)*\d/
4136: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4137: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4138:
4139: /(?:a|)*\d/
4140: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4141: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
1.1 misho 4142:
1.1.1.2 misho 4143: /^a.b/<lf>
4144: a\rb
4145: a\nb\<cr>
4146: ** Failers
4147: a\nb
4148: a\nb\<any>
4149: a\rb\<cr>
4150: a\rb\<any>
1.1 misho 4151:
1.1.1.2 misho 4152: /^abc./mgx<any>
4153: abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
1.1 misho 4154:
1.1.1.2 misho 4155: /abc.$/mgx<any>
4156: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
1.1 misho 4157:
1.1.1.2 misho 4158: /^a\Rb/<bsr_unicode>
1.1 misho 4159: a\nb
4160: a\rb
4161: a\r\nb
4162: a\x0bb
4163: a\x0cb
1.1.1.2 misho 4164: a\x85b
1.1 misho 4165: ** Failers
4166: a\n\rb
4167:
1.1.1.2 misho 4168: /^a\R*b/<bsr_unicode>
1.1 misho 4169: ab
4170: a\nb
4171: a\rb
4172: a\r\nb
4173: a\x0bb
1.1.1.2 misho 4174: a\x0cb
4175: a\x85b
1.1 misho 4176: a\n\rb
1.1.1.2 misho 4177: a\n\r\x85\x0cb
1.1 misho 4178:
1.1.1.2 misho 4179: /^a\R+b/<bsr_unicode>
1.1 misho 4180: a\nb
4181: a\rb
4182: a\r\nb
4183: a\x0bb
1.1.1.2 misho 4184: a\x0cb
4185: a\x85b
1.1 misho 4186: a\n\rb
1.1.1.2 misho 4187: a\n\r\x85\x0cb
1.1 misho 4188: ** Failers
4189: ab
1.1.1.2 misho 4190:
4191: /^a\R{1,3}b/<bsr_unicode>
1.1 misho 4192: a\nb
4193: a\n\rb
1.1.1.2 misho 4194: a\n\r\x85b
1.1 misho 4195: a\r\n\r\nb
4196: a\r\n\r\n\r\nb
4197: a\n\r\n\rb
4198: a\n\n\r\nb
4199: ** Failers
4200: a\n\n\n\rb
4201: a\r
4202:
1.1.1.2 misho 4203: /^a[\R]b/<bsr_unicode>
4204: aRb
4205: ** Failers
4206: a\nb
4207:
4208: /.+foo/
4209: afoo
4210: ** Failers
4211: \r\nfoo
4212: \nfoo
4213:
4214: /.+foo/<crlf>
4215: afoo
4216: \nfoo
4217: ** Failers
4218: \r\nfoo
4219:
4220: /.+foo/<any>
4221: afoo
4222: ** Failers
4223: \nfoo
4224: \r\nfoo
4225:
4226: /.+foo/s
4227: afoo
4228: \r\nfoo
4229: \nfoo
4230:
4231: /^$/mg<any>
4232: abc\r\rxyz
4233: abc\n\rxyz
4234: ** Failers
4235: abc\r\nxyz
1.1 misho 4236:
1.1.1.2 misho 4237: /^X/m
4238: XABC
4239: ** Failers
4240: XABC\B
1.1 misho 4241:
1.1.1.2 misho 4242: /(?m)^$/<any>g+
4243: abc\r\n\r\n
1.1 misho 4244:
1.1.1.2 misho 4245: /(?m)^$|^\r\n/<any>g+
4246: abc\r\n\r\n
4247:
4248: /(?m)$/<any>g+
4249: abc\r\n\r\n
1.1 misho 4250:
1.1.1.2 misho 4251: /(?|(abc)|(xyz))/
4252: >abc<
4253: >xyz<
4254:
4255: /(x)(?|(abc)|(xyz))(x)/
4256: xabcx
4257: xxyzx
4258:
4259: /(x)(?|(abc)(pqr)|(xyz))(x)/
4260: xabcpqrx
4261: xxyzx
4262:
4263: /(?|(abc)|(xyz))(?1)/
4264: abcabc
4265: xyzabc
4266: ** Failers
4267: xyzxyz
4268:
4269: /\H\h\V\v/
1.1 misho 4270: X X\x0a
4271: X\x09X\x0b
4272: ** Failers
1.1.1.2 misho 4273: \xa0 X\x0a
1.1 misho 4274:
1.1.1.2 misho 4275: /\H*\h+\V?\v{3,4}/
4276: \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4277: \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4278: \x09\x20\xa0\x0a\x0b\x0c
1.1 misho 4279: ** Failers
1.1.1.2 misho 4280: \x09\x20\xa0\x0a\x0b
1.1 misho 4281:
1.1.1.2 misho 4282: /\H{3,4}/
4283: XY ABCDE
4284: XY PQR ST
4285:
4286: /.\h{3,4}./
4287: XY AB PQRS
4288:
4289: /\h*X\h?\H+Y\H?Z/
4290: >XNNNYZ
4291: > X NYQZ
4292: ** Failers
4293: >XYZ
4294: > X NY Z
4295:
4296: /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4297: >XY\x0aZ\x0aA\x0bNN\x0c
4298: >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4299:
4300: /.+A/<crlf>
4301: \r\nA
4302:
4303: /\nA/<crlf>
4304: \r\nA
4305:
4306: /[\r\n]A/<crlf>
4307: \r\nA
4308:
4309: /(\r|\n)A/<crlf>
4310: \r\nA
4311:
4312: /a\Rb/I<bsr_anycrlf>
1.1 misho 4313: a\rb
4314: a\nb
4315: a\r\nb
4316: ** Failers
1.1.1.2 misho 4317: a\x85b
1.1 misho 4318: a\x0bb
4319:
1.1.1.2 misho 4320: /a\Rb/I<bsr_unicode>
1.1 misho 4321: a\rb
4322: a\nb
4323: a\r\nb
1.1.1.2 misho 4324: a\x85b
1.1 misho 4325: a\x0bb
4326: ** Failers
1.1.1.2 misho 4327: a\x85b\<bsr_anycrlf>
1.1 misho 4328: a\x0bb\<bsr_anycrlf>
4329:
1.1.1.2 misho 4330: /a\R?b/I<bsr_anycrlf>
1.1 misho 4331: a\rb
4332: a\nb
4333: a\r\nb
4334: ** Failers
1.1.1.2 misho 4335: a\x85b
1.1 misho 4336: a\x0bb
4337:
1.1.1.2 misho 4338: /a\R?b/I<bsr_unicode>
1.1 misho 4339: a\rb
4340: a\nb
4341: a\r\nb
1.1.1.2 misho 4342: a\x85b
1.1 misho 4343: a\x0bb
4344: ** Failers
1.1.1.2 misho 4345: a\x85b\<bsr_anycrlf>
1.1 misho 4346: a\x0bb\<bsr_anycrlf>
1.1.1.2 misho 4347:
4348: /a\R{2,4}b/I<bsr_anycrlf>
4349: a\r\n\nb
4350: a\n\r\rb
4351: a\r\n\r\n\r\n\r\nb
4352: ** Failers
4353: a\x85\85b
4354: a\x0b\0bb
4355:
4356: /a\R{2,4}b/I<bsr_unicode>
4357: a\r\rb
4358: a\n\n\nb
4359: a\r\n\n\r\rb
4360: a\x85\85b
4361: a\x0b\0bb
4362: ** Failers
4363: a\r\r\r\r\rb
4364: a\x85\85b\<bsr_anycrlf>
4365: a\x0b\0bb\<bsr_anycrlf>
4366:
4367: /a(?!)|\wbc/
4368: abc
4369:
4370: /a[]b/<JS>
4371: ** Failers
4372: ab
4373:
4374: /a[]+b/<JS>
4375: ** Failers
4376: ab
4377:
4378: /a[]*+b/<JS>
4379: ** Failers
4380: ab
4381:
4382: /a[^]b/<JS>
4383: aXb
4384: a\nb
4385: ** Failers
4386: ab
4387:
4388: /a[^]+b/<JS>
4389: aXb
4390: a\nX\nXb
4391: ** Failers
4392: ab
4393:
4394: /X$/E
4395: X
4396: ** Failers
4397: X\n
4398:
4399: /X$/
4400: X
4401: X\n
4402:
4403: /xyz/C
4404: xyz
4405: abcxyz
4406: abcxyz\Y
4407: ** Failers
4408: abc
4409: abc\Y
4410: abcxypqr
4411: abcxypqr\Y
4412:
4413: /(*NO_START_OPT)xyz/C
4414: abcxyz
4415:
4416: /(?C)ab/
4417: ab
4418: \C-ab
4419:
4420: /ab/C
4421: ab
4422: \C-ab
4423:
4424: /^"((?(?=[a])[^"])|b)*"$/C
4425: "ab"
4426: \C-"ab"
4427:
4428: /\d+X|9+Y/
4429: ++++123999\P
4430: ++++123999Y\P
4431:
4432: /Z(*F)/
4433: Z\P
4434: ZA\P
4435:
4436: /Z(?!)/
4437: Z\P
4438: ZA\P
4439:
4440: /dog(sbody)?/
4441: dogs\P
4442: dogs\P\P
4443:
4444: /dog(sbody)??/
4445: dogs\P
4446: dogs\P\P
4447:
4448: /dog|dogsbody/
4449: dogs\P
4450: dogs\P\P
1.1 misho 4451:
1.1.1.2 misho 4452: /dogsbody|dog/
4453: dogs\P
4454: dogs\P\P
4455:
4456: /Z(*F)Q|ZXY/
4457: Z\P
4458: ZA\P
4459: X\P
4460:
4461: /\bthe cat\b/
4462: the cat\P
4463: the cat\P\P
4464:
4465: /dog(sbody)?/
4466: dogs\D\P
4467: body\D\R
4468:
4469: /dog(sbody)?/
4470: dogs\D\P\P
4471: body\D\R
4472:
4473: /abc/
4474: abc\P
4475: abc\P\P
4476:
4477: /abc\K123/
4478: xyzabc123pqr
4479:
4480: /(?<=abc)123/
4481: xyzabc123pqr
4482: xyzabc12\P
4483: xyzabc12\P\P
4484:
4485: /\babc\b/
4486: +++abc+++
4487: +++ab\P
4488: +++ab\P\P
4489:
4490: /(?=C)/g+
4491: ABCDECBA
4492:
4493: /(abc|def|xyz)/I
4494: terhjk;abcdaadsfe
4495: the quick xyz brown fox
4496: \Yterhjk;abcdaadsfe
4497: \Ythe quick xyz brown fox
4498: ** Failers
4499: thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4500: \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4501:
4502: /(abc|def|xyz)/SI
4503: terhjk;abcdaadsfe
4504: the quick xyz brown fox
4505: \Yterhjk;abcdaadsfe
4506: \Ythe quick xyz brown fox
4507: ** Failers
4508: thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
4509: \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
1.1 misho 4510:
1.1.1.2 misho 4511: /abcd*/+
1.1 misho 4512: xxxxabcd\P
4513: xxxxabcd\P\P
1.1.1.2 misho 4514: dddxxx\R
4515: xxxxabcd\P\P
4516: xxx\R
1.1 misho 4517:
1.1.1.2 misho 4518: /abcd*/i
1.1 misho 4519: xxxxabcd\P
4520: xxxxabcd\P\P
4521: XXXXABCD\P
4522: XXXXABCD\P\P
4523:
1.1.1.2 misho 4524: /abc\d*/
1.1 misho 4525: xxxxabc1\P
4526: xxxxabc1\P\P
4527:
1.1.1.2 misho 4528: /abc[de]*/
1.1 misho 4529: xxxxabcde\P
4530: xxxxabcde\P\P
4531:
1.1.1.2 misho 4532: /(?:(?1)|B)(A(*F)|C)/
4533: ABCD
4534: CCD
4535: ** Failers
4536: CAD
1.1 misho 4537:
1.1.1.2 misho 4538: /^(?:(?1)|B)(A(*F)|C)/
4539: CCD
4540: BCD
4541: ** Failers
4542: ABCD
4543: CAD
4544: BAD
1.1 misho 4545:
1.1.1.2 misho 4546: /^(?!a(*SKIP)b)/
4547: ac
4548:
4549: /^(?=a(*SKIP)b|ac)/
4550: ** Failers
4551: ac
4552:
4553: /^(?=a(*THEN)b|ac)/
4554: ac
4555:
4556: /^(?=a(*PRUNE)b)/
4557: ab
4558: ** Failers
4559: ac
4560:
4561: /^(?(?!a(*SKIP)b))/
4562: ac
4563:
4564: /(?<=abc)def/
4565: abc\P\P
4566:
4567: /abc$/
4568: abc
4569: abc\P
4570: abc\P\P
4571:
4572: /abc$/m
4573: abc
4574: abc\n
4575: abc\P\P
4576: abc\n\P\P
4577: abc\P
4578: abc\n\P
4579:
4580: /abc\z/
4581: abc
4582: abc\P
4583: abc\P\P
4584:
4585: /abc\Z/
4586: abc
4587: abc\P
4588: abc\P\P
4589:
4590: /abc\b/
4591: abc
4592: abc\P
4593: abc\P\P
4594:
4595: /abc\B/
4596: abc
4597: abc\P
4598: abc\P\P
4599:
4600: /.+/
4601: abc\>0
4602: abc\>1
4603: abc\>2
4604: abc\>3
4605: abc\>4
4606: abc\>-4
4607:
4608: /^(?:a)++\w/
4609: aaaab
4610: ** Failers
4611: aaaa
4612: bbb
4613:
4614: /^(?:aa|(?:a)++\w)/
4615: aaaab
4616: aaaa
4617: ** Failers
4618: bbb
4619:
4620: /^(?:a)*+\w/
4621: aaaab
4622: bbb
4623: ** Failers
4624: aaaa
4625:
4626: /^(a)++\w/
4627: aaaab
4628: ** Failers
4629: aaaa
4630: bbb
4631:
4632: /^(a|)++\w/
4633: aaaab
4634: ** Failers
4635: aaaa
4636: bbb
4637:
4638: /(?=abc){3}abc/+
4639: abcabcabc
4640: ** Failers
4641: xyz
4642:
4643: /(?=abc)+abc/+
4644: abcabcabc
4645: ** Failers
4646: xyz
4647:
4648: /(?=abc)++abc/+
4649: abcabcabc
4650: ** Failers
4651: xyz
4652:
4653: /(?=abc){0}xyz/
4654: xyz
4655:
4656: /(?=abc){1}xyz/
4657: ** Failers
4658: xyz
4659:
4660: /(?=(a))?./
4661: ab
4662: bc
4663:
4664: /(?=(a))??./
4665: ab
4666: bc
4667:
4668: /^(?=(a)){0}b(?1)/
4669: backgammon
4670:
4671: /^(?=(?1))?[az]([abc])d/
4672: abd
4673: zcdxx
4674:
4675: /^(?!a){0}\w+/
4676: aaaaa
4677:
4678: /(?<=(abc))?xyz/
4679: abcxyz
4680: pqrxyz
4681:
4682: /((?2))((?1))/
4683: abc
1.1 misho 4684:
1.1.1.2 misho 4685: /(?(R)a+|(?R)b)/
4686: aaaabcde
4687:
4688: /(?(R)a+|((?R))b)/
4689: aaaabcde
4690:
4691: /((?(R)a+|(?1)b))/
4692: aaaabcde
4693:
4694: /((?(R2)a+|(?1)b))/
4695: aaaabcde
4696:
4697: /(?(R)a*(?1)|((?R))b)/
4698: aaaabcde
4699:
1.1.1.5 ! misho 4700: /(a+)/O
1.1.1.2 misho 4701: \O6aaaa
4702: \O8aaaa
4703:
4704: /ab\Cde/
4705: abXde
4706:
4707: /(?<=ab\Cde)X/
4708: abZdeX
1.1 misho 4709:
1.1.1.3 misho 4710: /^\R/
4711: \r\P
4712: \r\P\P
4713:
4714: /^\R{2,3}x/
4715: \r\P
4716: \r\P\P
4717: \r\r\P
4718: \r\r\P\P
4719: \r\r\r\P
4720: \r\r\r\P\P
4721: \r\rx
4722: \r\r\rx
4723:
4724: /^\R{2,3}?x/
4725: \r\P
4726: \r\P\P
4727: \r\r\P
4728: \r\r\P\P
4729: \r\r\r\P
4730: \r\r\r\P\P
4731: \r\rx
4732: \r\r\rx
4733:
4734: /^\R?x/
4735: \r\P
4736: \r\P\P
4737: x
4738: \rx
4739:
4740: /^\R+x/
4741: \r\P
4742: \r\P\P
4743: \r\n\P
4744: \r\n\P\P
4745: \rx
4746:
4747: /^a$/<CRLF>
4748: a\r\P
4749: a\r\P\P
4750:
4751: /^a$/m<CRLF>
4752: a\r\P
4753: a\r\P\P
4754:
4755: /^(a$|a\r)/<CRLF>
4756: a\r\P
4757: a\r\P\P
4758:
4759: /^(a$|a\r)/m<CRLF>
4760: a\r\P
4761: a\r\P\P
4762:
4763: /./<CRLF>
4764: \r\P
4765: \r\P\P
4766:
4767: /.{2,3}/<CRLF>
4768: \r\P
4769: \r\P\P
4770: \r\r\P
4771: \r\r\P\P
4772: \r\r\r\P
4773: \r\r\r\P\P
4774:
4775: /.{2,3}?/<CRLF>
4776: \r\P
4777: \r\P\P
4778: \r\r\P
4779: \r\r\P\P
4780: \r\r\r\P
4781: \r\r\r\P\P
4782:
4783: /-- Test simple validity check for restarts --/
4784:
4785: /abcdef/
4786: abc\R
4787:
4788: /<H((?(?!<H|F>)(.)|(?R))++)*F>/
4789: text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
4790:
4791: /^(?>.{4})abc|^\w\w.xabcd/
4792: xxxxabcd
4793: xx\xa0xabcd
4794:
4795: /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
4796: xxxxxxxxabcd
4797: xx\xa0xxxxxabcd
4798:
1.1.1.4 misho 4799: /abcd/
4800: abcd\O0
4801:
1.1.1.5 ! misho 4802: /-- These tests show up auto-possessification --/
! 4803:
! 4804: /[ab]*/
! 4805: aaaa
! 4806:
! 4807: /[ab]*?/
! 4808: aaaa
! 4809:
! 4810: /[ab]?/
! 4811: aaaa
! 4812:
! 4813: /[ab]??/
! 4814: aaaa
! 4815:
! 4816: /[ab]+/
! 4817: aaaa
! 4818:
! 4819: /[ab]+?/
! 4820: aaaa
! 4821:
! 4822: /[ab]{2,3}/
! 4823: aaaa
! 4824:
! 4825: /[ab]{2,3}?/
! 4826: aaaa
! 4827:
! 4828: /[ab]{2,}/
! 4829: aaaa
! 4830:
! 4831: /[ab]{2,}?/
! 4832: aaaa
! 4833:
1.1.1.2 misho 4834: /-- End of testinput8 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>