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