/[pcre]/code/trunk/testdata/testoutput1
ViewVC logotype

Contents of /code/trunk/testdata/testoutput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 170 - (show annotations) (download)
Mon Jun 4 11:21:13 2007 UTC (7 years, 5 months ago) by ph10
File size: 101432 byte(s)
Fix bug in detecting potentially empty groups.

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

Properties

Name Value
svn:keywords "Author Date Id Revision Url"

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12