1 /-- This set of tests is for features that are compatible with all versions of
2 Perl >= 5.10, in non-UTF-8 mode. It should run clean for the 8-bit, 16-bit,
3 and 32-bit PCRE libraries. --/
5 < forbid 89?=ABCDEFfGILMNPTUWXZ<
10 What do you know about the quick brown fox?
11 What do you know about THE QUICK BROWN FOX?
13 /The quick brown fox/i
16 What do you know about the quick brown fox?
17 What do you know about THE QUICK BROWN FOX?
19 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
20 abcd\t\n\r\f\a\e9;\$\\?caxyz
22 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
23 abxyzpqrrrabbxyyyypqAzz
24 abxyzpqrrrabbxyyyypqAzz
25 aabxyzpqrrrabbxyyyypqAzz
26 aaabxyzpqrrrabbxyyyypqAzz
27 aaaabxyzpqrrrabbxyyyypqAzz
28 abcxyzpqrrrabbxyyyypqAzz
29 aabcxyzpqrrrabbxyyyypqAzz
30 aaabcxyzpqrrrabbxyyyypAzz
31 aaabcxyzpqrrrabbxyyyypqAzz
32 aaabcxyzpqrrrabbxyyyypqqAzz
33 aaabcxyzpqrrrabbxyyyypqqqAzz
34 aaabcxyzpqrrrabbxyyyypqqqqAzz
35 aaabcxyzpqrrrabbxyyyypqqqqqAzz
36 aaabcxyzpqrrrabbxyyyypqqqqqqAzz
37 aaaabcxyzpqrrrabbxyyyypqAzz
38 abxyzzpqrrrabbxyyyypqAzz
39 aabxyzzzpqrrrabbxyyyypqAzz
40 aaabxyzzzzpqrrrabbxyyyypqAzz
41 aaaabxyzzzzpqrrrabbxyyyypqAzz
42 abcxyzzpqrrrabbxyyyypqAzz
43 aabcxyzzzpqrrrabbxyyyypqAzz
44 aaabcxyzzzzpqrrrabbxyyyypqAzz
45 aaaabcxyzzzzpqrrrabbxyyyypqAzz
46 aaaabcxyzzzzpqrrrabbbxyyyypqAzz
47 aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
48 aaabcxyzpqrrrabbxyyyypABzz
49 aaabcxyzpqrrrabbxyyyypABBzz
50 >>>aaabxyzpqrrrabbxyyyypqAzz
51 >aaaabxyzpqrrrabbxyyyypqAzz
52 >>>>abcxyzpqrrrabbxyyyypqAzz
54 abxyzpqrrabbxyyyypqAzz
55 abxyzpqrrrrabbxyyyypqAzz
56 abxyzpqrrrabxyyyypqAzz
57 aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
58 aaaabcxyzzzzpqrrrabbbxyyypqAzz
59 aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
192 /^.+[0-9][0-9][0-9]$/
200 /^.+?[0-9][0-9][0-9]$/
208 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
209 abc!pqr=apquxz.ixr.zzz.ac.uk
211 !pqr=apquxz.ixr.zzz.ac.uk
212 abc!=apquxz.ixr.zzz.ac.uk
213 abc!pqr=apquxz:ixr.zzz.ac.uk
214 abc!pqr=apquxz.ixr.zzz.ac.ukk
217 Well, we need a colon: somewhere
235 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
243 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
244 1 IN SOA non-sp1 non-sp2(
245 1 IN SOA non-sp1 non-sp2 (
247 1IN SOA non-sp1 non-sp2(
249 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
259 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
270 /^(?=ab(de))(abd)(e)/
273 /^(?!(ab)de|x)(abd)(f)/
279 /^[\da-f](\.[\da-f])*$/i
295 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
301 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
314 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
317 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
320 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
382 /\A(abc|def)=(\1){2,3}\Z/
388 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
392 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
394 catatonic catatonic23
395 caterpillar caterpillar23
398 /^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]/
399 From abcd Mon Sep 01 12:33:02 1997
401 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
402 From abcd Mon Sep 01 12:33:02 1997
403 From abcd Mon Sep 1 12:33:02 1997
405 From abcd Sep 01 12:33:02 1997
412 the quick brown\t fox
415 foobar is foolish see?
417 /(?:(?!foo)...|^.{0,2})bar(.*)/
423 /^(\D*)(?=\d)(?!123)/
428 /^1234(?# test newlines
432 /^1234 #comment in extended re
465 /^[ab]{1,3}?(ab*?|b)/
472 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
473 \) )* # optional leading comment
475 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
476 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
478 " (?: # opening quote...
479 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
481 \\ [^\x80-\xff] # Escaped something (something != CR)
484 (?: (?: [\040\t] | \(
485 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
486 \) )* \. (?: [\040\t] | \(
487 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
489 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
490 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
492 " (?: # opening quote...
493 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
495 \\ [^\x80-\xff] # Escaped something (something != CR)
497 ) )* # further okay, if led by a period
499 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
500 \) )* @ (?: [\040\t] | \(
501 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
503 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
504 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
506 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
508 ) # initial subdomain
511 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
512 \) )* \. # if led by a period...
514 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
516 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
517 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
519 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
526 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
527 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
529 " (?: # opening quote...
530 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
532 \\ [^\x80-\xff] # Escaped something (something != CR)
534 ) # one word, optionally followed by....
536 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
538 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
539 \) | # comments, or...
541 " (?: # opening quote...
542 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
544 \\ [^\x80-\xff] # Escaped something (something != CR)
549 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
551 (?: @ (?: [\040\t] | \(
552 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
554 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
555 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
557 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
559 ) # initial subdomain
562 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
563 \) )* \. # if led by a period...
565 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
567 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
568 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
570 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
575 (?: (?: [\040\t] | \(
576 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
577 \) )* , (?: [\040\t] | \(
578 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
579 \) )* @ (?: [\040\t] | \(
580 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
582 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
583 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
585 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
587 ) # initial subdomain
590 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
591 \) )* \. # if led by a period...
593 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
595 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
596 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
598 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
602 )* # further okay, if led by comma
605 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
606 \) )* )? # optional route
608 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
609 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
611 " (?: # opening quote...
612 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
614 \\ [^\x80-\xff] # Escaped something (something != CR)
617 (?: (?: [\040\t] | \(
618 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
619 \) )* \. (?: [\040\t] | \(
620 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
622 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
623 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
625 " (?: # opening quote...
626 [^\\\x80-\xff\n\015"] # Anything except backslash and quote
628 \\ [^\x80-\xff] # Escaped something (something != CR)
630 ) )* # further okay, if led by a period
632 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
633 \) )* @ (?: [\040\t] | \(
634 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
636 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
637 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
639 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
641 ) # initial subdomain
644 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
645 \) )* \. # if led by a period...
647 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
649 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
650 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
652 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
658 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
662 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
663 \) )* # optional trailing comment
665 Alan Other <user\@dom.ain>
668 \"A. Other\" <user.1234\@dom.ain> (a comment)
669 A. Other <user.1234\@dom.ain> (a comment)
670 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
671 A missing angle <user\@some.where
675 /[\040\t]* # Nab whitespace.
678 [^\\\x80-\xff\n\015()] * # normal*
680 (?: \\ [^\x80-\xff] |
682 [^\\\x80-\xff\n\015()] * # normal*
683 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
686 [^\\\x80-\xff\n\015()] * # normal*
689 [\040\t]* )* # If comment found, allow more spaces.
690 # optional leading comment
693 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
694 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
698 [^\\\x80-\xff\n\015"] * # normal
699 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
703 [\040\t]* # Nab whitespace.
706 [^\\\x80-\xff\n\015()] * # normal*
708 (?: \\ [^\x80-\xff] |
710 [^\\\x80-\xff\n\015()] * # normal*
711 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
714 [^\\\x80-\xff\n\015()] * # normal*
717 [\040\t]* )* # If comment found, allow more spaces.
720 [\040\t]* # Nab whitespace.
723 [^\\\x80-\xff\n\015()] * # normal*
725 (?: \\ [^\x80-\xff] |
727 [^\\\x80-\xff\n\015()] * # normal*
728 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
731 [^\\\x80-\xff\n\015()] * # normal*
734 [\040\t]* )* # If comment found, allow more spaces.
736 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
737 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
741 [^\\\x80-\xff\n\015"] * # normal
742 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
746 [\040\t]* # Nab whitespace.
749 [^\\\x80-\xff\n\015()] * # normal*
751 (?: \\ [^\x80-\xff] |
753 [^\\\x80-\xff\n\015()] * # normal*
754 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
757 [^\\\x80-\xff\n\015()] * # normal*
760 [\040\t]* )* # If comment found, allow more spaces.
764 [\040\t]* # Nab whitespace.
767 [^\\\x80-\xff\n\015()] * # normal*
769 (?: \\ [^\x80-\xff] |
771 [^\\\x80-\xff\n\015()] * # normal*
772 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
775 [^\\\x80-\xff\n\015()] * # normal*
778 [\040\t]* )* # If comment found, allow more spaces.
780 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
781 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
784 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
787 [\040\t]* # Nab whitespace.
790 [^\\\x80-\xff\n\015()] * # normal*
792 (?: \\ [^\x80-\xff] |
794 [^\\\x80-\xff\n\015()] * # normal*
795 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
798 [^\\\x80-\xff\n\015()] * # normal*
801 [\040\t]* )* # If comment found, allow more spaces.
802 # optional trailing comments
805 [\040\t]* # Nab whitespace.
808 [^\\\x80-\xff\n\015()] * # normal*
810 (?: \\ [^\x80-\xff] |
812 [^\\\x80-\xff\n\015()] * # normal*
813 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
816 [^\\\x80-\xff\n\015()] * # normal*
819 [\040\t]* )* # If comment found, allow more spaces.
821 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
822 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
825 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
828 [\040\t]* # Nab whitespace.
831 [^\\\x80-\xff\n\015()] * # normal*
833 (?: \\ [^\x80-\xff] |
835 [^\\\x80-\xff\n\015()] * # normal*
836 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
839 [^\\\x80-\xff\n\015()] * # normal*
842 [\040\t]* )* # If comment found, allow more spaces.
843 # optional trailing comments
848 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
849 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
853 [^\\\x80-\xff\n\015"] * # normal
854 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
859 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
863 [^\\\x80-\xff\n\015()] * # normal*
865 (?: \\ [^\x80-\xff] |
867 [^\\\x80-\xff\n\015()] * # normal*
868 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
871 [^\\\x80-\xff\n\015()] * # normal*
876 [^\\\x80-\xff\n\015"] * # normal
877 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
879 ) # "special" comment or quoted string
880 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
883 [\040\t]* # Nab whitespace.
886 [^\\\x80-\xff\n\015()] * # normal*
888 (?: \\ [^\x80-\xff] |
890 [^\\\x80-\xff\n\015()] * # normal*
891 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
894 [^\\\x80-\xff\n\015()] * # normal*
897 [\040\t]* )* # If comment found, allow more spaces.
901 [\040\t]* # Nab whitespace.
904 [^\\\x80-\xff\n\015()] * # normal*
906 (?: \\ [^\x80-\xff] |
908 [^\\\x80-\xff\n\015()] * # normal*
909 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
912 [^\\\x80-\xff\n\015()] * # normal*
915 [\040\t]* )* # If comment found, allow more spaces.
917 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
918 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
921 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
924 [\040\t]* # Nab whitespace.
927 [^\\\x80-\xff\n\015()] * # normal*
929 (?: \\ [^\x80-\xff] |
931 [^\\\x80-\xff\n\015()] * # normal*
932 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
935 [^\\\x80-\xff\n\015()] * # normal*
938 [\040\t]* )* # If comment found, allow more spaces.
939 # optional trailing comments
942 [\040\t]* # Nab whitespace.
945 [^\\\x80-\xff\n\015()] * # normal*
947 (?: \\ [^\x80-\xff] |
949 [^\\\x80-\xff\n\015()] * # normal*
950 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
953 [^\\\x80-\xff\n\015()] * # normal*
956 [\040\t]* )* # If comment found, allow more spaces.
958 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
959 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
962 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
965 [\040\t]* # Nab whitespace.
968 [^\\\x80-\xff\n\015()] * # normal*
970 (?: \\ [^\x80-\xff] |
972 [^\\\x80-\xff\n\015()] * # normal*
973 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
976 [^\\\x80-\xff\n\015()] * # normal*
979 [\040\t]* )* # If comment found, allow more spaces.
980 # optional trailing comments
983 [\040\t]* # Nab whitespace.
986 [^\\\x80-\xff\n\015()] * # normal*
988 (?: \\ [^\x80-\xff] |
990 [^\\\x80-\xff\n\015()] * # normal*
991 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
994 [^\\\x80-\xff\n\015()] * # normal*
997 [\040\t]* )* # If comment found, allow more spaces.
999 [\040\t]* # Nab whitespace.
1002 [^\\\x80-\xff\n\015()] * # normal*
1004 (?: \\ [^\x80-\xff] |
1006 [^\\\x80-\xff\n\015()] * # normal*
1007 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1010 [^\\\x80-\xff\n\015()] * # normal*
1013 [\040\t]* )* # If comment found, allow more spaces.
1015 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1016 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1019 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1022 [\040\t]* # Nab whitespace.
1025 [^\\\x80-\xff\n\015()] * # normal*
1027 (?: \\ [^\x80-\xff] |
1029 [^\\\x80-\xff\n\015()] * # normal*
1030 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1033 [^\\\x80-\xff\n\015()] * # normal*
1036 [\040\t]* )* # If comment found, allow more spaces.
1037 # optional trailing comments
1040 [\040\t]* # Nab whitespace.
1043 [^\\\x80-\xff\n\015()] * # normal*
1045 (?: \\ [^\x80-\xff] |
1047 [^\\\x80-\xff\n\015()] * # normal*
1048 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1051 [^\\\x80-\xff\n\015()] * # normal*
1054 [\040\t]* )* # If comment found, allow more spaces.
1056 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1057 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1060 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1063 [\040\t]* # Nab whitespace.
1066 [^\\\x80-\xff\n\015()] * # normal*
1068 (?: \\ [^\x80-\xff] |
1070 [^\\\x80-\xff\n\015()] * # normal*
1071 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1074 [^\\\x80-\xff\n\015()] * # normal*
1077 [\040\t]* )* # If comment found, allow more spaces.
1078 # optional trailing comments
1080 )* # additional domains
1082 [\040\t]* # Nab whitespace.
1085 [^\\\x80-\xff\n\015()] * # normal*
1087 (?: \\ [^\x80-\xff] |
1089 [^\\\x80-\xff\n\015()] * # normal*
1090 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1093 [^\\\x80-\xff\n\015()] * # normal*
1096 [\040\t]* )* # If comment found, allow more spaces.
1097 # optional trailing comments
1100 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1101 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1105 [^\\\x80-\xff\n\015"] * # normal
1106 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1110 [\040\t]* # Nab whitespace.
1113 [^\\\x80-\xff\n\015()] * # normal*
1115 (?: \\ [^\x80-\xff] |
1117 [^\\\x80-\xff\n\015()] * # normal*
1118 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1121 [^\\\x80-\xff\n\015()] * # normal*
1124 [\040\t]* )* # If comment found, allow more spaces.
1127 [\040\t]* # Nab whitespace.
1130 [^\\\x80-\xff\n\015()] * # normal*
1132 (?: \\ [^\x80-\xff] |
1134 [^\\\x80-\xff\n\015()] * # normal*
1135 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1138 [^\\\x80-\xff\n\015()] * # normal*
1141 [\040\t]* )* # If comment found, allow more spaces.
1143 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1144 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1148 [^\\\x80-\xff\n\015"] * # normal
1149 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
1153 [\040\t]* # Nab whitespace.
1156 [^\\\x80-\xff\n\015()] * # normal*
1158 (?: \\ [^\x80-\xff] |
1160 [^\\\x80-\xff\n\015()] * # normal*
1161 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1164 [^\\\x80-\xff\n\015()] * # normal*
1167 [\040\t]* )* # If comment found, allow more spaces.
1171 [\040\t]* # Nab whitespace.
1174 [^\\\x80-\xff\n\015()] * # normal*
1176 (?: \\ [^\x80-\xff] |
1178 [^\\\x80-\xff\n\015()] * # normal*
1179 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1182 [^\\\x80-\xff\n\015()] * # normal*
1185 [\040\t]* )* # If comment found, allow more spaces.
1187 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1188 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1191 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1194 [\040\t]* # Nab whitespace.
1197 [^\\\x80-\xff\n\015()] * # normal*
1199 (?: \\ [^\x80-\xff] |
1201 [^\\\x80-\xff\n\015()] * # normal*
1202 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1205 [^\\\x80-\xff\n\015()] * # normal*
1208 [\040\t]* )* # If comment found, allow more spaces.
1209 # optional trailing comments
1212 [\040\t]* # Nab whitespace.
1215 [^\\\x80-\xff\n\015()] * # normal*
1217 (?: \\ [^\x80-\xff] |
1219 [^\\\x80-\xff\n\015()] * # normal*
1220 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1223 [^\\\x80-\xff\n\015()] * # normal*
1226 [\040\t]* )* # If comment found, allow more spaces.
1228 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
1229 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1232 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1235 [\040\t]* # Nab whitespace.
1238 [^\\\x80-\xff\n\015()] * # normal*
1240 (?: \\ [^\x80-\xff] |
1242 [^\\\x80-\xff\n\015()] * # normal*
1243 (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
1246 [^\\\x80-\xff\n\015()] * # normal*
1249 [\040\t]* )* # If comment found, allow more spaces.
1250 # optional trailing comments
1257 Alan Other <user\@dom.ain>
1260 \"A. Other\" <user.1234\@dom.ain> (a comment)
1261 A. Other <user.1234\@dom.ain> (a comment)
1262 \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1263 A missing angle <user\@some.where
1267 /abc\0def\00pqr\000xyz\0000AB/
1268 abc\0def\00pqr\000xyz\0000AB
1269 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1271 /abc\x0def\x00pqr\x000xyz\x0000AB/
1272 abc\x0def\x00pqr\x000xyz\x0000AB
1273 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1355 /([^.]*)\.([^:]*):[T ]+(.*)/
1356 track1.title:TBlah blah blah
1358 /([^.]*)\.([^:]*):[T ]+(.*)/i
1359 track1.title:TBlah blah blah
1361 /([^.]*)\.([^:]*):[t ]+(.*)/i
1362 track1.title:TBlah blah blah
1494 /^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
1502 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1505 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1529 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1597 /\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/
1598 \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
1600 /P[^*]TAIRE[^*]{1,6}?LL/
1601 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1603 /P[^*]TAIRE[^*]{1,}?LL/
1604 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1611 /(\.\d\d((?=0)|\d(?=\d)))/
1621 Food is on the foo table
1624 The food is under the bar in the barn.
1627 The food is under the bar in the barn.
1630 I have 2 numbers: 53147
1633 I have 2 numbers: 53147
1636 I have 2 numbers: 53147
1639 I have 2 numbers: 53147
1642 I have 2 numbers: 53147
1645 I have 2 numbers: 53147
1648 I have 2 numbers: 53147
1651 I have 2 numbers: 53147
1656 /^(\D*)(?=\d)(?!123)/
1684 /\d\d\/\d\d\/\d\d\d\d/
1687 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1688 word cat dog elephant mussel cow horse canary baboon snake shark otherword
1689 word cat dog elephant mussel cow horse canary baboon snake shark
1691 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1692 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
1773 borfle\nbib.gif\nno\n
1776 borfle\nbib.gif\nno\n
1779 borfle\nbib.gif\nno\n
1782 borfle\nbib.gif\nno\n
1837 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1840 /^\d\d\d\d\d\d\d\d\d\d\d\d/
1843 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1855 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1888 the \"quick\" brown fox
1889 \"the \\\"quick\\\" brown fox\"
1903 /<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
1904 <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>
1987 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1990 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1992 /(?>(\.\d\d[1-9]?))\d+/
1998 /^((?>\w+)|(?>\s+))*$/
1999 now is the time for all good men to come to the aid of the party
2001 this is not a line with only words and spaces!
2027 /((?>[^()]+)|\([^()]*\))+/
2030 /\(((?>[^()]+)|\([^()]+\))+\)/
2034 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2050 /(a b(?x)c d (?-x)e f)/
2088 /(?s-i:more.*than).*million/i
2091 more \n than Million
2094 more \n than \n million
2096 /(?:(?s-i)more.*than).*million/i
2099 more \n than Million
2102 more \n than \n million
2121 /(?<=a(?i)b)(\w\w)c/
2129 /(?:(a)|b)(?(1)A|B)/
2143 /^(?(?=abc)\w{3}:|\d\d)$/
2150 /^(?(?!abc)\d\d|\w{3}:)$/
2157 /(?(?<=foo)bar|cat)/
2165 /(?(?<!foo)cat|bar)/
2173 /( \( )? [^()]+ (?(1) \) |) /x
2176 the quick (abcd) fox
2179 /( \( )? [^()]+ (?(1) \) ) /x
2182 the quick (abcd) fox
2202 /((?i)blah)\s+(?i:\1)/
2274 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2287 /(?i:saturday|sunday)/
2307 /^([ab](?i)[cd]|[ef])/
2318 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2335 /(?<=(?<!foo)bar)baz/
2343 /The cases of aaaa and aaaaaa are missed out below because Perl does things/
2344 /differently. We know that odd, and maybe incorrect, things happen with/
2345 /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
2363 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
2381 /The following tests are taken from the Perl 5.005 test suite; some of them/
2382 /are compatible with 5.004, but I'd rather not have to sort them out./
2724 /[a-zA-Z_][a-zA-Z0-9_]*/
2727 /^a(bc+|b[eh])g|.h$/
2730 /(bc+d$|ef*g.|h?i(j|k))/
2738 /((((((((((a))))))))))/
2741 /((((((((((a))))))))))\10/
2744 /(((((((((a)))))))))/
2747 /multiple words of text/
2753 multiple words, yeah
2794 bbaababbabaaaaabbaaaabba
3061 /[a-zA-Z_][a-zA-Z0-9_]*/i
3064 /^a(bc+|b[eh])g|.h$/i
3067 /(bc+d$|ef*g.|h?i(j|k))/i
3076 /((((((((((a))))))))))/i
3079 /((((((((((a))))))))))\10/i
3082 /(((((((((a)))))))))/i
3085 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3088 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3091 /multiple words of text/i
3097 MULTIPLE WORDS, YEAH
3147 /a(?:b|c|d){4,5}(.)/
3150 /a(?:b|c|d){4,5}?(.)/
3156 /a(?:b|c|d){6,7}(.)/
3159 /a(?:b|c|d){6,7}?(.)/
3162 /a(?:b|c|d){5,6}(.)/
3165 /a(?:b|c|d){5,6}?(.)/
3168 /a(?:b|c|d){5,7}(.)/
3171 /a(?:b|c|d){5,7}?(.)/
3174 /a(?:b|(c|e){1,2}?|d)+?(.)/
3199 /(?:(f)(o)(o)|(b)(a)(r))*/
3219 /^(?:b|a(?=(.)))*\1/
3350 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3353 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3354 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3369 /^a (?#xxx) (?#yyy) {3}c/x
3398 /((?s)^a(.))((?m)^b$)/
3450 /^(\()?blah(?(1)(\)))$/
3458 /^(\(+)?blah(?(1)(\)))$/
3537 /((?>[^()]+)|\([^()]*\))+/
3557 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
3577 the.quick.brown.fox-
3578 the.quick.brown.fox.
3579 the.quick.brown.fox_
3580 the.quick.brown.fox+
3582 /(?>.*)(?<=(abcd|wxyz))/
3586 a rather long string that doesn't end with one of them
3588 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3589 word cat dog elephant mussel cow horse canary baboon snake shark otherword
3590 word cat dog elephant mussel cow horse canary baboon snake shark
3592 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3593 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
3595 /(?<=\d{3}(?!999))foo/
3601 /(?<=(?!...999)\d{3})foo/
3607 /(?<=\d{3}(?!999)...)foo/
3613 /(?<=\d{3}...)(?<!999)foo/
3619 /<a[\s]+href[\s]*=[\s]* # find <a href=
3620 ([\"\'])? # find single or double quote
3621 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
3622 # quote, otherwise match up to next space
3625 <a href=\"abcd xyz pqr\" cats
3626 <a href=\'abcd xyz pqr\' cats
3628 /<a\s+href\s*=\s* # find <a href=
3629 (["'])? # find single or double quote
3630 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3631 # quote, otherwise match up to next space
3634 <a href=\"abcd xyz pqr\" cats
3635 <a href = \'abcd xyz pqr\' cats
3637 /<a\s+href(?>\s*)=(?>\s*) # find <a href=
3638 (["'])? # find single or double quote
3639 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3640 # quote, otherwise match up to next space
3643 <a href=\"abcd xyz pqr\" cats
3644 <a href = \'abcd xyz pqr\' cats
3672 > \x09\x0a\x0c\x0d\x0b<
3675 > \x09\x0a\x0c\x0d\x0b<
3678 > \x09\x0a\x0c\x0d\x0b<
3681 > \x09\x0a\x0c\x0d\x0b<
3706 abc#not comment\n literal
3711 abc#not comment\n literal
3715 literal\E #more comment
3717 abc#not comment\n literal
3721 literal\E #more comment/x
3722 abc#not comment\n literal
3746 /((?x)x y z | a b c)/
3776 /-- This tests for an IPv6 address in the form where it can have up to
3777 eight components, one and only one of which is empty. This must be
3778 an internal component. --/
3780 /^(?!:) # colon disallowed at start
3782 (?: [0-9a-f]{1,4} | # 1-4 hex digits or
3783 (?(1)0 | () ) ) # if null previously matched, fail; else null
3784 : # followed by colon
3785 ){1,7} # end item; 1-7 of them required
3786 [0-9a-f]{1,4} $ # final hex number at end of string
3787 (?(1)|.) # check that there was an empty component
3791 a123:b342::324e:abcd
3792 a123:ddde:b342::324e:abcd
3793 a123:ddde:b342::324e:dcba:abcd
3794 a123:ddde:9999:b342::324e:dcba:abcd
3797 a123:bce:ddde:9999:b342::324e:dcba:abcd
3798 a123::9999:b342::324e:dcba:abcd
3822 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3824 /(?i)reg(?:ul(?:[aä]|ae)r|ex)/
3872 /(?:(?(1)\1a|b)(X|Y))+/
3876 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
3887 "(?x)(?-x: \s*#\s*)"
3892 "(?x-is)(?:(?-ixs) \s*#\s*) include"
3987 /(a){0,3}(?(1)b|(c|))*D/
3993 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3994 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3997 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3998 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4001 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4002 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4007 /^(?s)(?>.*)(?<!\n)/
4022 /( (A | (?(1)0|) )* )/x
4025 /( ( (?(1)0|) )* )/x
4067 /^%((?(?=[a])[^%])|b)*%$/
4152 /(?:(?>(a))b|(a)c)++/
4155 /(?=(?>(a))b|(a)c)(..)/
4161 /(?:(?>([ab])))+a=/+
4167 /((?>(a+)b)+(aabab))/
4224 /^(?=(?1))?[az]([abc])d/
4326 \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4327 \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4328 \x09\x20\xa0\x0a\x0b\x0c
4330 \x09\x20\xa0\x0a\x0b
4346 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4347 >XY\x0aZ\x0aA\x0bNN\x0c
4348 >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4374 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
4377 /(?<A>tom|bon)-\g{A}/
4391 /(?|(abc)|(xyz))(?1)/
4397 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
4400 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
4403 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
4406 /(?'abc'\w+):\k<abc>{2}/
4413 /(?'abc'\w+):\g{abc}{2}/
4420 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
4430 /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
4433 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
4440 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
4448 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
4457 now is the time for all good men to come to the aid of the party
4459 this is not a line with only words and spaces!
4475 /([^()]++|\([^()]*\))+/
4478 /\(([^()]++|\([^()]+\))+\)/
4482 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4484 /^([^()]|\((?1)*\))*$/
4491 /^>abc>([^()]|\((?1)*\))*<xyz<$/
4496 /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
4498 Satanoscillatemymetallicsonatas
4499 AmanaplanacanalPanama
4504 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
4518 /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x
4534 /a+b?(*PRUNE)c+(*FAIL)/
4537 /a+b?(*COMMIT)c+(*FAIL)/
4540 /a+b?(*SKIP)c+(*FAIL)/
4543 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4552 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4561 /a+b?(*THEN)c+(*FAIL)/
4564 /(A (A|B(*ACCEPT)|C) D)(E)/x
4572 /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
4574 Satan, oscillate my metallic sonatas!
4575 A man, a plan, a canal: Panama!
4576 Able was I ere I saw Elba.
4600 /(?<X>a)(?<=b(?&X))/
4603 /^(?|(abc)|(def))\1/
4610 /^(?|(abc)|(def))(?1)/
4617 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
4623 /(?:(?1)|B)(A(*F)|C)/
4629 /^(?:(?1)|B)(A(*F)|C)/
4637 /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
4647 /(?(DEFINE)(A))B(?1)C/
4650 /(?(DEFINE)((A)\2))B(?1)C/
4653 /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
4683 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4686 /^([^()]|\((?1)*\))*$/
4690 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4695 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4700 /--- This one does fail, as expected, in Perl. It needs the complex item at the
4701 end of the pattern. A single letter instead of (B|D) makes it not fail,
4702 which I think is a Perl bug. --- /
4707 /--- Check the use of names for failure ---/
4709 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
4714 /--- Force no study, otherwise mark is not seen. The studied version is in
4715 test 2 because it isn't Perl-compatible. ---/
4717 /(*MARK:A)(*SKIP:B)(C|X)/KSS
4721 /^(A(*THEN:A)B|C(*THEN:B)D)/K
4725 /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
4728 /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
4731 /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
4732 that we have to have something complicated such as (B|Z) at the end because,
4733 for Perl, a simple character somehow causes an unwanted optimization to mess
4734 with the handling of backtracking verbs. ---/
4736 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
4739 /--- Test skipping over a non-matching mark. ---/
4741 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
4744 /--- Check shorthand for MARK ---/
4746 /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
4749 /--- Don't loop! Force no study, otherwise mark is not seen. ---/
4751 /(*:A)A+(*SKIP:A)(B|Z)/KSS
4754 /--- This should succeed, as a non-existent skip name disables the skip ---/
4756 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
4759 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
4762 /--- COMMIT at the start of a pattern should act like an anchor. Again,
4763 however, we need the complication for Perl. ---/
4765 /(*COMMIT)(A|P)(B|P)(C|P)/
4770 /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
4772 /(\w+)(?>b(*COMMIT))\w{2}/
4775 /(\w+)b(*COMMIT)\w{2}/
4778 /--- Check opening parens in comment when seeking forward reference. ---/
4780 /(?&t)(?#()(?(DEFINE)(?<t>a))/
4783 /--- COMMIT should override THEN ---/
4785 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4788 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4801 /(?P<abn>(?P=abn)xxx|)+/
4813 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4818 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
4884 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4885 foo(bar(baz)+baz(bop))
4887 /(A (A|B(*ACCEPT)|C) D)(E)/x
4905 /(?(?=(a(*ACCEPT)z))a)/
4920 /(?(DEFINE)(a))?b(?1)/
4951 /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
4956 /--- Checking revised (*THEN) handling ---/
4960 /^.*? (a(*THEN)b) c/x
4963 /^.*? (a(*THEN)b|(*F)) c/x
4966 /^.*? ( (a(*THEN)b) | (*F) ) c/x
4969 /^.*? ( (a(*THEN)b) ) c/x
4972 /--- Non-capture ---/
4974 /^.*? (?:a(*THEN)b) c/x
4977 /^.*? (?:a(*THEN)b|(*F)) c/x
4980 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
4983 /^.*? (?: (?:a(*THEN)b) ) c/x
4988 /^.*? (?>a(*THEN)b) c/x
4991 /^.*? (?>a(*THEN)b|(*F)) c/x
4994 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
4997 /^.*? (?> (?>a(*THEN)b) ) c/x
5000 /--- Possessive capture ---/
5002 /^.*? (a(*THEN)b)++ c/x
5005 /^.*? (a(*THEN)b|(*F))++ c/x
5008 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
5011 /^.*? ( (a(*THEN)b)++ )++ c/x
5014 /--- Possessive non-capture ---/
5016 /^.*? (?:a(*THEN)b)++ c/x
5019 /^.*? (?:a(*THEN)b|(*F))++ c/x
5022 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
5025 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
5028 /--- Condition assertion ---/
5030 /^(?(?=a(*THEN)b)ab|ac)/
5035 /^.*?(?(?=a)a|b(*THEN)c)/
5038 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5041 /^.*?(?(?=a)a(*THEN)b|c)/
5049 /------------------------------/
5054 /(?>(a)(*:m))/imsxSK
5060 /(?<=(a(*ACCEPT)b))c/
5063 /(?<=(a(*COMMIT)b))c/
5087 /(*MARK:A)(*PRUNE:B)(C|X)/KS
5091 /(*MARK:A)(*PRUNE:B)(C|X)/KSS
5095 /(*MARK:A)(*THEN:B)(C|X)/KS
5099 /(*MARK:A)(*THEN:B)(C|X)/KSY
5103 /(*MARK:A)(*THEN:B)(C|X)/KSS
5107 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
5109 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
5114 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
5117 /A(*:A)A+(*SKIP)(B|Z) | AC/xK
5120 /--- This should fail, as a null name is the same as no name ---/
5122 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
5125 /--- A check on what happens after hitting a mark and them bumping along to
5126 something that does not even start. Perl reports tags after the failures here,
5127 though it does not when the individual letters are made into something
5128 more complicated. ---/
5139 /^(A(*THEN:A)B|C(*THEN:B)D)/K
5146 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
5153 /--- An empty name does not pass back an empty string. It is the same as if no
5154 name were given. ---/
5156 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
5160 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
5165 /--- Mark names can be duplicated ---/
5182 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
5185 /a(*PRUNE:X)bc|qq/KY
5193 /(?=a(*MARK:A)b)..x/K
5198 /(?=a(*MARK:A)b)..(*:Y)x/K
5203 /(?=a(*PRUNE:A)b)..x/K
5208 /(?=a(*PRUNE:A)b)..(*:Y)x/K
5213 /(?=a(*THEN:A)b)..x/K
5218 /(?=a(*THEN:A)b)..(*:Y)x/K
5223 /(another)?(\1?)test/
5226 /(another)?(\1+)test/
5229 /(a(*COMMIT)b){0}a(?1)|aac/
5265 /(?>.*?)(?<=(abcd)|(wxyz))/
5269 /(?>.*)(?<=(abcd)|(wxyz))/
5279 /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
5282 /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
5288 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
5291 /a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K
5294 /A(*SKIP:m)x|A(*SKIP:n)x|AB/K
5297 /((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K
5300 /-- Tests that try to figure out how Perl works. My hypothesis is that the
5301 first verb that is backtracked onto is the one that acts. This seems to be
5302 the case almost all the time, but there is one exception that is perhaps a
5305 /-- This matches "aaaac"; each PRUNE advances one character until the subject
5306 no longer starts with 5 'a's. --/
5308 /aaaaa(*PRUNE)b|a+c/
5311 /-- Putting SKIP in front of PRUNE makes no difference, as it is never
5312 backtracked onto, whether or not it has a label. --/
5314 /aaaaa(*SKIP)(*PRUNE)b|a+c/
5317 /aaaaa(*SKIP:N)(*PRUNE)b|a+c/
5320 /aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
5323 /-- Putting THEN in front makes no difference. */
5325 /aaaaa(*THEN)(*PRUNE)b|a+c/
5328 /-- However, putting COMMIT in front of the prune changes it to "no match". I
5329 think this is inconsistent and possibly a bug. For the moment, running this
5330 test is moved out of the Perl-compatible file. --/
5332 /aaaaa(*COMMIT)(*PRUNE)b|a+c/
5335 /---- OK, lets play the same game again using SKIP instead of PRUNE. ----/
5337 /-- This matches "ac" because SKIP forces the next match to start on the
5343 /-- Putting PRUNE in front makes no difference. --/
5345 /aaaaa(*PRUNE)(*SKIP)b|a+c/
5348 /-- Putting THEN in front makes no difference. --/
5350 /aaaaa(*THEN)(*SKIP)b|a+c/
5353 /-- In this case, neither does COMMIT. This still matches "ac". --/
5355 /aaaaa(*COMMIT)(*SKIP)b|a+c/
5358 /-- This gives "no match", as expected. --/
5360 /aaaaa(*COMMIT)b|a+c/
5364 /------ Tests using THEN ------/
5366 /-- This matches "aaaaaac", as expected. --/
5371 /-- Putting SKIP in front makes no difference. --/
5373 /aaaaa(*SKIP)(*THEN)b|a+c/
5376 /-- Putting PRUNE in front makes no difference. --/
5378 /aaaaa(*PRUNE)(*THEN)b|a+c/
5381 /-- Putting COMMIT in front makes no difference. --/
5383 /aaaaa(*COMMIT)(*THEN)b|a+c/
5386 /-- End of "priority" tests --/
5388 /aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
5391 /aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
5394 /aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
5397 /aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
5400 /a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
5403 /a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
5406 /aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
5409 /aaa(*MARK:A)a(*SKIP:A)b|a+c/
5412 /a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K
5418 /(a(*COMMIT)b)c|abd/
5422 /(?=a(*COMMIT)b)abc|abd/
5426 /(?>a(*COMMIT)b)c|abd/
5430 /a(?=b(*COMMIT)c)[^d]|abd/
5438 /a(?>b(*COMMIT)c)d|abd/
5444 /(?>a(*COMMIT)b)c|abd/
5447 /(?>a(*COMMIT)c)d|abd/
5450 /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
5453 /-- These tests were formerly in test 2, but changes in PCRE and Perl have
5454 made them compatible. --/
5473 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
5476 /^((abc|abcx)(*THEN)y|abcd)/
5481 /^((yes|no)(*THEN)(*F))?/
5484 /(A (.*) C? (*THEN) | A D) (*FAIL)/x
5487 /(A (.*) C? (*THEN) | A D) z/x
5490 /(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
5493 /(A (.*) C? (*THEN) | A D) \s* z/x
5496 /(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
5499 /(A (.*) (?:C|) (*THEN) | A D) z/x
5502 /(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
5505 /(A (.*) C{0,6} (*THEN) | A D) z/x
5508 /(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
5511 /(A (.*) (CE){0,6} (*THEN) | A D) z/x
5514 /(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
5517 /(A (.*) (CE*){0,6} (*THEN) | A D) z/x
5520 /(?=a(*COMMIT)b|ac)ac|ac/
5523 /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
5528 /(?(?!b(*THEN)a)bn|bnn)/
5531 /(?!b(*SKIP)a)bn|bnn/
5534 /(?(?!b(*SKIP)a)bn|bnn)/
5537 /(?!b(*PRUNE)a)bn|bnn/
5540 /(?(?!b(*PRUNE)a)bn|bnn)/
5543 /(?!b(*COMMIT)a)bn|bnn/
5546 /(?(?!b(*COMMIT)a)bn|bnn)/
5549 /(?=b(*SKIP)a)bn|bnn/
5552 /(?=b(*THEN)a)bn|bnn/
5573 /(?!a(*COMMIT)b)ac|cd/
5579 /^(A(*THEN)B|C(*THEN)D)/
5582 /(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5585 /(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5588 /(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5591 /(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5618 /(?:(?<n>foo)|(?<n>bar))\k<n>/J
5622 /(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/J
5629 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
5630 1 IN SOA non-sp1 non-sp2(
5632 /^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/xJ
5654 / ^ (?> a + ) b $ /x
5657 / ^ ( a + ) + + \w $ /x
5675 /(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
5678 '\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
5679 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5681 '\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
5682 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5684 '\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
5685 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5687 '\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
5688 NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5690 /^\w+(?>\s*)(?<=\w)/
5693 /(?P<same>a)(?P<same>b)/gJ
5696 /(?P<same>a)(?P<same>b)(?P=same)/gJ
5699 /(?P=same)?(?P<same>a)(?P<same>b)/gJ
5702 /(?:(?P=same)?(?:(?P<same>a)|(?P<same>b))(?P=same))+/gJ
5705 /(?:(?P=same)?(?:(?P=same)(?P<same>a)(?P=same)|(?P=same)?(?P<same>b)(?P=same)){2}(?P=same)(?P<same>c)(?P=same)){2}(?P<same>z)?/gJ
5708 /(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
5723 /(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
5733 "(?|(\k'Pm')|(?'Pm'))"
5736 /-- End of testinput1 --/