9467 lines
		
	
	
		
			133 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			9467 lines
		
	
	
		
			133 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# This set of tests is for features that are compatible with all versions of
 | 
						|
# Perl >= 5.10, in non-UTF mode. It should run clean for the 8-bit, 16-bit, and
 | 
						|
# 32-bit PCRE libraries, and also using the perltest.pl script.
 | 
						|
    
 | 
						|
#forbid_utf
 | 
						|
#perltest
 | 
						|
 | 
						|
/the quick brown fox/
 | 
						|
    the quick brown fox
 | 
						|
 0: the quick brown fox
 | 
						|
    The quick brown FOX
 | 
						|
No match
 | 
						|
    What do you know about the quick brown fox?
 | 
						|
 0: the quick brown fox
 | 
						|
    What do you know about THE QUICK BROWN FOX?
 | 
						|
No match
 | 
						|
 | 
						|
/The quick brown fox/i
 | 
						|
    the quick brown fox
 | 
						|
 0: the quick brown fox
 | 
						|
    The quick brown FOX
 | 
						|
 0: The quick brown FOX
 | 
						|
    What do you know about the quick brown fox?
 | 
						|
 0: the quick brown fox
 | 
						|
    What do you know about THE QUICK BROWN FOX?
 | 
						|
 0: THE QUICK BROWN FOX
 | 
						|
 | 
						|
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
 | 
						|
    abcd\t\n\r\f\a\e9;\$\\?caxyz
 | 
						|
 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
 | 
						|
 | 
						|
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
 | 
						|
    abxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: abxyzpqrrrabbxyyyypqAzz
 | 
						|
    abxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: abxyzpqrrrabbxyyyypqAzz
 | 
						|
    aabxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aabxyzpqrrrabbxyyyypqAzz
 | 
						|
    aaabxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaabxyzpqrrrabbxyyyypqAzz
 | 
						|
    aaaabxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaaabxyzpqrrrabbxyyyypqAzz
 | 
						|
    abcxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: abcxyzpqrrrabbxyyyypqAzz
 | 
						|
    aabcxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aabcxyzpqrrrabbxyyyypqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypqqAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypqqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypqqqAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypqqqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypqqqqAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypqqqqqAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypqqqqqqAzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
 | 
						|
    aaaabcxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaaabcxyzpqrrrabbxyyyypqAzz
 | 
						|
    abxyzzpqrrrabbxyyyypqAzz
 | 
						|
 0: abxyzzpqrrrabbxyyyypqAzz
 | 
						|
    aabxyzzzpqrrrabbxyyyypqAzz
 | 
						|
 0: aabxyzzzpqrrrabbxyyyypqAzz
 | 
						|
    aaabxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaabxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
    aaaabxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
    abcxyzzpqrrrabbxyyyypqAzz
 | 
						|
 0: abcxyzzpqrrrabbxyyyypqAzz
 | 
						|
    aabcxyzzzpqrrrabbxyyyypqAzz
 | 
						|
 0: aabcxyzzzpqrrrabbxyyyypqAzz
 | 
						|
    aaabcxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
    aaaabcxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
 | 
						|
    aaaabcxyzzzzpqrrrabbbxyyyypqAzz
 | 
						|
 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
 | 
						|
    aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
 | 
						|
 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypABzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypABzz
 | 
						|
    aaabcxyzpqrrrabbxyyyypABBzz
 | 
						|
 0: aaabcxyzpqrrrabbxyyyypABBzz
 | 
						|
    >>>aaabxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaabxyzpqrrrabbxyyyypqAzz
 | 
						|
    >aaaabxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: aaaabxyzpqrrrabbxyyyypqAzz
 | 
						|
    >>>>abcxyzpqrrrabbxyyyypqAzz
 | 
						|
 0: abcxyzpqrrrabbxyyyypqAzz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abxyzpqrrabbxyyyypqAzz
 | 
						|
No match
 | 
						|
    abxyzpqrrrrabbxyyyypqAzz
 | 
						|
No match
 | 
						|
    abxyzpqrrrabxyyyypqAzz
 | 
						|
No match
 | 
						|
    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
 | 
						|
No match
 | 
						|
    aaaabcxyzzzzpqrrrabbbxyyypqAzz
 | 
						|
No match
 | 
						|
    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
 | 
						|
No match
 | 
						|
 | 
						|
/^(abc){1,2}zz/
 | 
						|
    abczz
 | 
						|
 0: abczz
 | 
						|
 1: abc
 | 
						|
    abcabczz
 | 
						|
 0: abcabczz
 | 
						|
 1: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    zz
 | 
						|
No match
 | 
						|
    abcabcabczz
 | 
						|
No match
 | 
						|
    >>abczz
 | 
						|
No match
 | 
						|
 | 
						|
/^(b+?|a){1,2}?c/
 | 
						|
    bc
 | 
						|
 0: bc
 | 
						|
 1: b
 | 
						|
    bbc
 | 
						|
 0: bbc
 | 
						|
 1: b
 | 
						|
    bbbc
 | 
						|
 0: bbbc
 | 
						|
 1: bb
 | 
						|
    bac
 | 
						|
 0: bac
 | 
						|
 1: a
 | 
						|
    bbac
 | 
						|
 0: bbac
 | 
						|
 1: a
 | 
						|
    aac
 | 
						|
 0: aac
 | 
						|
 1: a
 | 
						|
    abbbbbbbbbbbc
 | 
						|
 0: abbbbbbbbbbbc
 | 
						|
 1: bbbbbbbbbbb
 | 
						|
    bbbbbbbbbbbac
 | 
						|
 0: bbbbbbbbbbbac
 | 
						|
 1: a
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaac
 | 
						|
No match
 | 
						|
    abbbbbbbbbbbac
 | 
						|
No match
 | 
						|
 | 
						|
/^(b+|a){1,2}c/
 | 
						|
    bc
 | 
						|
 0: bc
 | 
						|
 1: b
 | 
						|
    bbc
 | 
						|
 0: bbc
 | 
						|
 1: bb
 | 
						|
    bbbc
 | 
						|
 0: bbbc
 | 
						|
 1: bbb
 | 
						|
    bac
 | 
						|
 0: bac
 | 
						|
 1: a
 | 
						|
    bbac
 | 
						|
 0: bbac
 | 
						|
 1: a
 | 
						|
    aac
 | 
						|
 0: aac
 | 
						|
 1: a
 | 
						|
    abbbbbbbbbbbc
 | 
						|
 0: abbbbbbbbbbbc
 | 
						|
 1: bbbbbbbbbbb
 | 
						|
    bbbbbbbbbbbac
 | 
						|
 0: bbbbbbbbbbbac
 | 
						|
 1: a
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaac
 | 
						|
No match
 | 
						|
    abbbbbbbbbbbac
 | 
						|
No match
 | 
						|
 | 
						|
/^(b+|a){1,2}?bc/
 | 
						|
    bbc
 | 
						|
 0: bbc
 | 
						|
 1: b
 | 
						|
 | 
						|
/^(b*|ba){1,2}?bc/
 | 
						|
    babc
 | 
						|
 0: babc
 | 
						|
 1: ba
 | 
						|
    bbabc
 | 
						|
 0: bbabc
 | 
						|
 1: ba
 | 
						|
    bababc
 | 
						|
 0: bababc
 | 
						|
 1: ba
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    bababbc
 | 
						|
No match
 | 
						|
    babababc
 | 
						|
No match
 | 
						|
 | 
						|
/^(ba|b*){1,2}?bc/
 | 
						|
    babc
 | 
						|
 0: babc
 | 
						|
 1: ba
 | 
						|
    bbabc
 | 
						|
 0: bbabc
 | 
						|
 1: ba
 | 
						|
    bababc
 | 
						|
 0: bababc
 | 
						|
 1: ba
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    bababbc
 | 
						|
No match
 | 
						|
    babababc
 | 
						|
No match
 | 
						|
 | 
						|
/^\ca\cA\c[;\c:/
 | 
						|
    \x01\x01\e;z
 | 
						|
 0: \x01\x01\x1b;z
 | 
						|
 | 
						|
/^[ab\]cde]/
 | 
						|
    athing
 | 
						|
 0: a
 | 
						|
    bthing
 | 
						|
 0: b
 | 
						|
    ]thing
 | 
						|
 0: ]
 | 
						|
    cthing
 | 
						|
 0: c
 | 
						|
    dthing
 | 
						|
 0: d
 | 
						|
    ething
 | 
						|
 0: e
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    fthing
 | 
						|
No match
 | 
						|
    [thing
 | 
						|
No match
 | 
						|
    \\thing
 | 
						|
No match
 | 
						|
 | 
						|
/^[]cde]/
 | 
						|
    ]thing
 | 
						|
 0: ]
 | 
						|
    cthing
 | 
						|
 0: c
 | 
						|
    dthing
 | 
						|
 0: d
 | 
						|
    ething
 | 
						|
 0: e
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    athing
 | 
						|
No match
 | 
						|
    fthing
 | 
						|
No match
 | 
						|
 | 
						|
/^[^ab\]cde]/
 | 
						|
    fthing
 | 
						|
 0: f
 | 
						|
    [thing
 | 
						|
 0: [
 | 
						|
    \\thing
 | 
						|
 0: \
 | 
						|
    *** Failers
 | 
						|
 0: *
 | 
						|
    athing
 | 
						|
No match
 | 
						|
    bthing
 | 
						|
No match
 | 
						|
    ]thing
 | 
						|
No match
 | 
						|
    cthing
 | 
						|
No match
 | 
						|
    dthing
 | 
						|
No match
 | 
						|
    ething
 | 
						|
No match
 | 
						|
 | 
						|
/^[^]cde]/
 | 
						|
    athing
 | 
						|
 0: a
 | 
						|
    fthing
 | 
						|
 0: f
 | 
						|
    *** Failers
 | 
						|
 0: *
 | 
						|
    ]thing
 | 
						|
No match
 | 
						|
    cthing
 | 
						|
No match
 | 
						|
    dthing
 | 
						|
No match
 | 
						|
    ething
 | 
						|
No match
 | 
						|
 | 
						|
/^\�/
 | 
						|
    �
 | 
						|
 0: \x81
 | 
						|
 | 
						|
/^�/
 | 
						|
    �
 | 
						|
 0: \xff
 | 
						|
 | 
						|
/^[0-9]+$/
 | 
						|
    0
 | 
						|
 0: 0
 | 
						|
    1
 | 
						|
 0: 1
 | 
						|
    2
 | 
						|
 0: 2
 | 
						|
    3
 | 
						|
 0: 3
 | 
						|
    4
 | 
						|
 0: 4
 | 
						|
    5
 | 
						|
 0: 5
 | 
						|
    6
 | 
						|
 0: 6
 | 
						|
    7
 | 
						|
 0: 7
 | 
						|
    8
 | 
						|
 0: 8
 | 
						|
    9
 | 
						|
 0: 9
 | 
						|
    10
 | 
						|
 0: 10
 | 
						|
    100
 | 
						|
 0: 100
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
 | 
						|
/^.*nter/
 | 
						|
    enter
 | 
						|
 0: enter
 | 
						|
    inter
 | 
						|
 0: inter
 | 
						|
    uponter
 | 
						|
 0: uponter
 | 
						|
 | 
						|
/^xxx[0-9]+$/
 | 
						|
    xxx0
 | 
						|
 0: xxx0
 | 
						|
    xxx1234
 | 
						|
 0: xxx1234
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    xxx
 | 
						|
No match
 | 
						|
 | 
						|
/^.+[0-9][0-9][0-9]$/
 | 
						|
    x123
 | 
						|
 0: x123
 | 
						|
    xx123
 | 
						|
 0: xx123
 | 
						|
    123456
 | 
						|
 0: 123456
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123
 | 
						|
No match
 | 
						|
    x1234
 | 
						|
 0: x1234
 | 
						|
 | 
						|
/^.+?[0-9][0-9][0-9]$/
 | 
						|
    x123
 | 
						|
 0: x123
 | 
						|
    xx123
 | 
						|
 0: xx123
 | 
						|
    123456
 | 
						|
 0: 123456
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123
 | 
						|
No match
 | 
						|
    x1234
 | 
						|
 0: x1234
 | 
						|
 | 
						|
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
 | 
						|
    abc!pqr=apquxz.ixr.zzz.ac.uk
 | 
						|
 0: abc!pqr=apquxz.ixr.zzz.ac.uk
 | 
						|
 1: abc
 | 
						|
 2: pqr
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    !pqr=apquxz.ixr.zzz.ac.uk
 | 
						|
No match
 | 
						|
    abc!=apquxz.ixr.zzz.ac.uk
 | 
						|
No match
 | 
						|
    abc!pqr=apquxz:ixr.zzz.ac.uk
 | 
						|
No match
 | 
						|
    abc!pqr=apquxz.ixr.zzz.ac.ukk
 | 
						|
No match
 | 
						|
 | 
						|
/:/
 | 
						|
    Well, we need a colon: somewhere
 | 
						|
 0: :
 | 
						|
    *** Fail if we don't
 | 
						|
No match
 | 
						|
 | 
						|
/([\da-f:]+)$/i
 | 
						|
    0abc
 | 
						|
 0: 0abc
 | 
						|
 1: 0abc
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: abc
 | 
						|
    fed
 | 
						|
 0: fed
 | 
						|
 1: fed
 | 
						|
    E
 | 
						|
 0: E
 | 
						|
 1: E
 | 
						|
    ::
 | 
						|
 0: ::
 | 
						|
 1: ::
 | 
						|
    5f03:12C0::932e
 | 
						|
 0: 5f03:12C0::932e
 | 
						|
 1: 5f03:12C0::932e
 | 
						|
    fed def
 | 
						|
 0: def
 | 
						|
 1: def
 | 
						|
    Any old stuff
 | 
						|
 0: ff
 | 
						|
 1: ff
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    0zzz
 | 
						|
No match
 | 
						|
    gzzz
 | 
						|
No match
 | 
						|
    fed\x20
 | 
						|
No match
 | 
						|
    Any old rubbish
 | 
						|
No match
 | 
						|
 | 
						|
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
 | 
						|
    .1.2.3
 | 
						|
 0: .1.2.3
 | 
						|
 1: 1
 | 
						|
 2: 2
 | 
						|
 3: 3
 | 
						|
    A.12.123.0
 | 
						|
 0: A.12.123.0
 | 
						|
 1: 12
 | 
						|
 2: 123
 | 
						|
 3: 0
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    .1.2.3333
 | 
						|
No match
 | 
						|
    1.2.3
 | 
						|
No match
 | 
						|
    1234.2.3
 | 
						|
No match
 | 
						|
 | 
						|
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
 | 
						|
    1 IN SOA non-sp1 non-sp2(
 | 
						|
 0: 1 IN SOA non-sp1 non-sp2(
 | 
						|
 1: 1
 | 
						|
 2: non-sp1
 | 
						|
 3: non-sp2
 | 
						|
    1    IN    SOA    non-sp1    non-sp2   (
 | 
						|
 0: 1    IN    SOA    non-sp1    non-sp2   (
 | 
						|
 1: 1
 | 
						|
 2: non-sp1
 | 
						|
 3: non-sp2
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    1IN SOA non-sp1 non-sp2(
 | 
						|
No match
 | 
						|
 | 
						|
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
 | 
						|
    a.
 | 
						|
 0: a.
 | 
						|
    Z.
 | 
						|
 0: Z.
 | 
						|
    2.
 | 
						|
 0: 2.
 | 
						|
    ab-c.pq-r.
 | 
						|
 0: ab-c.pq-r.
 | 
						|
 1: .pq-r
 | 
						|
    sxk.zzz.ac.uk.
 | 
						|
 0: sxk.zzz.ac.uk.
 | 
						|
 1: .uk
 | 
						|
    x-.y-.
 | 
						|
 0: x-.y-.
 | 
						|
 1: .y-
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    -abc.peq.
 | 
						|
No match
 | 
						|
 | 
						|
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
 | 
						|
    *.a
 | 
						|
 0: *.a
 | 
						|
    *.b0-a
 | 
						|
 0: *.b0-a
 | 
						|
 1: 0-a
 | 
						|
    *.c3-b.c
 | 
						|
 0: *.c3-b.c
 | 
						|
 1: 3-b
 | 
						|
 2: .c
 | 
						|
    *.c-a.b-c
 | 
						|
 0: *.c-a.b-c
 | 
						|
 1: -a
 | 
						|
 2: .b-c
 | 
						|
 3: -c
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    *.0
 | 
						|
No match
 | 
						|
    *.a-
 | 
						|
No match
 | 
						|
    *.a-b.c-
 | 
						|
No match
 | 
						|
    *.c-a.0-c
 | 
						|
No match
 | 
						|
 | 
						|
/^(?=ab(de))(abd)(e)/
 | 
						|
    abde
 | 
						|
 0: abde
 | 
						|
 1: de
 | 
						|
 2: abd
 | 
						|
 3: e
 | 
						|
 | 
						|
/^(?!(ab)de|x)(abd)(f)/
 | 
						|
    abdf
 | 
						|
 0: abdf
 | 
						|
 1: <unset>
 | 
						|
 2: abd
 | 
						|
 3: f
 | 
						|
 | 
						|
/^(?=(ab(cd)))(ab)/
 | 
						|
    abcd
 | 
						|
 0: ab
 | 
						|
 1: abcd
 | 
						|
 2: cd
 | 
						|
 3: ab
 | 
						|
 | 
						|
/^[\da-f](\.[\da-f])*$/i
 | 
						|
    a.b.c.d
 | 
						|
 0: a.b.c.d
 | 
						|
 1: .d
 | 
						|
    A.B.C.D
 | 
						|
 0: A.B.C.D
 | 
						|
 1: .D
 | 
						|
    a.b.c.1.2.3.C
 | 
						|
 0: a.b.c.1.2.3.C
 | 
						|
 1: .C
 | 
						|
 | 
						|
/^\".*\"\s*(;.*)?$/
 | 
						|
    \"1234\"
 | 
						|
 0: "1234"
 | 
						|
    \"abcd\" ;
 | 
						|
 0: "abcd" ;
 | 
						|
 1: ;
 | 
						|
    \"\" ; rhubarb
 | 
						|
 0: "" ; rhubarb
 | 
						|
 1: ; rhubarb
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    \"1234\" : things
 | 
						|
No match
 | 
						|
 | 
						|
/^$/
 | 
						|
    \
 | 
						|
 0: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
 | 
						|
/   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
 | 
						|
    ab c
 | 
						|
 0: ab c
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
    ab cde
 | 
						|
No match
 | 
						|
 | 
						|
/(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
 | 
						|
    ab c
 | 
						|
 0: ab c
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
    ab cde
 | 
						|
No match
 | 
						|
 | 
						|
/^   a\ b[c ]d       $/x
 | 
						|
    a bcd
 | 
						|
 0: a bcd
 | 
						|
    a b d
 | 
						|
 0: a b d
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcd
 | 
						|
No match
 | 
						|
    ab d
 | 
						|
No match
 | 
						|
 | 
						|
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
 | 
						|
    abcdefhijklm
 | 
						|
 0: abcdefhijklm
 | 
						|
 1: abc
 | 
						|
 2: bc
 | 
						|
 3: c
 | 
						|
 4: def
 | 
						|
 5: ef
 | 
						|
 6: f
 | 
						|
 7: hij
 | 
						|
 8: ij
 | 
						|
 9: j
 | 
						|
10: klm
 | 
						|
11: lm
 | 
						|
12: m
 | 
						|
 | 
						|
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
 | 
						|
    abcdefhijklm
 | 
						|
 0: abcdefhijklm
 | 
						|
 1: bc
 | 
						|
 2: c
 | 
						|
 3: ef
 | 
						|
 4: f
 | 
						|
 5: ij
 | 
						|
 6: j
 | 
						|
 7: lm
 | 
						|
 8: m
 | 
						|
 | 
						|
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
 | 
						|
    a+ Z0+\x08\n\x1d\x12
 | 
						|
 0: a+ Z0+\x08\x0a\x1d\x12
 | 
						|
 | 
						|
/^[.^$|()*+?{,}]+/
 | 
						|
    .^\$(*+)|{?,?}
 | 
						|
 0: .^$(*+)|{?,?}
 | 
						|
 | 
						|
/^a*\w/
 | 
						|
    z
 | 
						|
 0: z
 | 
						|
    az
 | 
						|
 0: az
 | 
						|
    aaaz
 | 
						|
 0: aaaz
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    a+
 | 
						|
 0: a
 | 
						|
    aa+
 | 
						|
 0: aa
 | 
						|
 | 
						|
/^a*?\w/
 | 
						|
    z
 | 
						|
 0: z
 | 
						|
    az
 | 
						|
 0: a
 | 
						|
    aaaz
 | 
						|
 0: a
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    aa
 | 
						|
 0: a
 | 
						|
    aaaa
 | 
						|
 0: a
 | 
						|
    a+
 | 
						|
 0: a
 | 
						|
    aa+
 | 
						|
 0: a
 | 
						|
 | 
						|
/^a+\w/
 | 
						|
    az
 | 
						|
 0: az
 | 
						|
    aaaz
 | 
						|
 0: aaaz
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    aa+
 | 
						|
 0: aa
 | 
						|
 | 
						|
/^a+?\w/
 | 
						|
    az
 | 
						|
 0: az
 | 
						|
    aaaz
 | 
						|
 0: aa
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
    aaaa
 | 
						|
 0: aa
 | 
						|
    aa+
 | 
						|
 0: aa
 | 
						|
 | 
						|
/^\d{8}\w{2,}/
 | 
						|
    1234567890
 | 
						|
 0: 1234567890
 | 
						|
    12345678ab
 | 
						|
 0: 12345678ab
 | 
						|
    12345678__
 | 
						|
 0: 12345678__
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    1234567
 | 
						|
No match
 | 
						|
 | 
						|
/^[aeiou\d]{4,5}$/
 | 
						|
    uoie
 | 
						|
 0: uoie
 | 
						|
    1234
 | 
						|
 0: 1234
 | 
						|
    12345
 | 
						|
 0: 12345
 | 
						|
    aaaaa
 | 
						|
 0: aaaaa
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123456
 | 
						|
No match
 | 
						|
 | 
						|
/^[aeiou\d]{4,5}?/
 | 
						|
    uoie
 | 
						|
 0: uoie
 | 
						|
    1234
 | 
						|
 0: 1234
 | 
						|
    12345
 | 
						|
 0: 1234
 | 
						|
    aaaaa
 | 
						|
 0: aaaa
 | 
						|
    123456
 | 
						|
 0: 1234
 | 
						|
 | 
						|
/\A(abc|def)=(\1){2,3}\Z/
 | 
						|
    abc=abcabc
 | 
						|
 0: abc=abcabc
 | 
						|
 1: abc
 | 
						|
 2: abc
 | 
						|
    def=defdefdef
 | 
						|
 0: def=defdefdef
 | 
						|
 1: def
 | 
						|
 2: def
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc=defdef
 | 
						|
No match
 | 
						|
 | 
						|
/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
 | 
						|
    abcdefghijkcda2
 | 
						|
 0: abcdefghijkcda2
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: c
 | 
						|
 4: d
 | 
						|
 5: e
 | 
						|
 6: f
 | 
						|
 7: g
 | 
						|
 8: h
 | 
						|
 9: i
 | 
						|
10: j
 | 
						|
11: k
 | 
						|
12: cd
 | 
						|
    abcdefghijkkkkcda2
 | 
						|
 0: abcdefghijkkkkcda2
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: c
 | 
						|
 4: d
 | 
						|
 5: e
 | 
						|
 6: f
 | 
						|
 7: g
 | 
						|
 8: h
 | 
						|
 9: i
 | 
						|
10: j
 | 
						|
11: k
 | 
						|
12: cd
 | 
						|
 | 
						|
/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
 | 
						|
    cataract cataract23
 | 
						|
 0: cataract cataract23
 | 
						|
 1: cataract
 | 
						|
 2: aract
 | 
						|
 3: ract
 | 
						|
 4: 
 | 
						|
 5: 3
 | 
						|
    catatonic catatonic23
 | 
						|
 0: catatonic catatonic23
 | 
						|
 1: catatonic
 | 
						|
 2: atonic
 | 
						|
 3: tonic
 | 
						|
 4: 
 | 
						|
 5: 3
 | 
						|
    caterpillar caterpillar23
 | 
						|
 0: caterpillar caterpillar23
 | 
						|
 1: caterpillar
 | 
						|
 2: erpillar
 | 
						|
 3: <unset>
 | 
						|
 4: 
 | 
						|
 5: 3
 | 
						|
 | 
						|
 | 
						|
/^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]/
 | 
						|
    From abcd  Mon Sep 01 12:33:02 1997
 | 
						|
 0: From abcd  Mon Sep 01 12:33
 | 
						|
 1: abcd
 | 
						|
 | 
						|
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
 | 
						|
    From abcd  Mon Sep 01 12:33:02 1997
 | 
						|
 0: From abcd  Mon Sep 01 12:33
 | 
						|
 1: Sep 
 | 
						|
    From abcd  Mon Sep  1 12:33:02 1997
 | 
						|
 0: From abcd  Mon Sep  1 12:33
 | 
						|
 1: Sep  
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    From abcd  Sep 01 12:33:02 1997
 | 
						|
No match
 | 
						|
 | 
						|
/^12.34/s
 | 
						|
    12\n34
 | 
						|
 0: 12\x0a34
 | 
						|
    12\r34
 | 
						|
 0: 12\x0d34
 | 
						|
 | 
						|
/\w+(?=\t)/
 | 
						|
    the quick brown\t fox
 | 
						|
 0: brown
 | 
						|
 | 
						|
/foo(?!bar)(.*)/
 | 
						|
    foobar is foolish see?
 | 
						|
 0: foolish see?
 | 
						|
 1: lish see?
 | 
						|
 | 
						|
/(?:(?!foo)...|^.{0,2})bar(.*)/
 | 
						|
    foobar crowbar etc
 | 
						|
 0: rowbar etc
 | 
						|
 1:  etc
 | 
						|
    barrel
 | 
						|
 0: barrel
 | 
						|
 1: rel
 | 
						|
    2barrel
 | 
						|
 0: 2barrel
 | 
						|
 1: rel
 | 
						|
    A barrel
 | 
						|
 0: A barrel
 | 
						|
 1: rel
 | 
						|
 | 
						|
/^(\D*)(?=\d)(?!123)/
 | 
						|
    abc456
 | 
						|
 0: abc
 | 
						|
 1: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc123
 | 
						|
No match
 | 
						|
 | 
						|
/^1234(?# test newlines
 | 
						|
  inside)/
 | 
						|
    1234
 | 
						|
 0: 1234
 | 
						|
 | 
						|
/^1234 #comment in extended re
 | 
						|
  /x
 | 
						|
    1234
 | 
						|
 0: 1234
 | 
						|
 | 
						|
/#rhubarb
 | 
						|
  abcd/x
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 | 
						|
/^abcd#rhubarb/x
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 | 
						|
/^(a)\1{2,3}(.)/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
    aaaaab
 | 
						|
 0: aaaaa
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
    aaaaaab
 | 
						|
 0: aaaaa
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 | 
						|
/(?!^)abc/
 | 
						|
    the abc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
 | 
						|
/(?=^)abc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    the abc
 | 
						|
No match
 | 
						|
 | 
						|
/^[ab]{1,3}(ab*|b)/
 | 
						|
    aabbbbb
 | 
						|
 0: aabb
 | 
						|
 1: b
 | 
						|
 | 
						|
/^[ab]{1,3}?(ab*|b)/
 | 
						|
    aabbbbb
 | 
						|
 0: aabbbbb
 | 
						|
 1: abbbbb
 | 
						|
 | 
						|
/^[ab]{1,3}?(ab*?|b)/
 | 
						|
    aabbbbb
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
 | 
						|
/^[ab]{1,3}(ab*?|b)/
 | 
						|
    aabbbbb
 | 
						|
 0: aabb
 | 
						|
 1: b
 | 
						|
 | 
						|
/  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*                          # optional leading comment
 | 
						|
(?:    (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
" (?:                      # opening quote...
 | 
						|
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 | 
						|
|                     #    or
 | 
						|
\\ [^\x80-\xff]           #   Escaped something (something != CR)
 | 
						|
)* "  # closing quote
 | 
						|
)                    # initial word
 | 
						|
(?:  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  \.  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*   (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
" (?:                      # opening quote...
 | 
						|
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 | 
						|
|                     #    or
 | 
						|
\\ [^\x80-\xff]           #   Escaped something (something != CR)
 | 
						|
)* "  # closing quote
 | 
						|
)  )* # further okay, if led by a period
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  @  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*    (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                           # initial subdomain
 | 
						|
(?:                                  #
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  \.                        # if led by a period...
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*   (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                     #   ...further okay
 | 
						|
)*
 | 
						|
# address
 | 
						|
|                     #  or
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
" (?:                      # opening quote...
 | 
						|
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 | 
						|
|                     #    or
 | 
						|
\\ [^\x80-\xff]           #   Escaped something (something != CR)
 | 
						|
)* "  # closing quote
 | 
						|
)             # one word, optionally followed by....
 | 
						|
(?:
 | 
						|
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
 | 
						|
\(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)       |  # comments, or...
 | 
						|
 | 
						|
" (?:                      # opening quote...
 | 
						|
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 | 
						|
|                     #    or
 | 
						|
\\ [^\x80-\xff]           #   Escaped something (something != CR)
 | 
						|
)* "  # closing quote
 | 
						|
# quoted strings
 | 
						|
)*
 | 
						|
<  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*                     # leading <
 | 
						|
(?:  @  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*    (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                           # initial subdomain
 | 
						|
(?:                                  #
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  \.                        # if led by a period...
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*   (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                     #   ...further okay
 | 
						|
)*
 | 
						|
 | 
						|
(?:  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  ,  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  @  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*    (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                           # initial subdomain
 | 
						|
(?:                                  #
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  \.                        # if led by a period...
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*   (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                     #   ...further okay
 | 
						|
)*
 | 
						|
)* # further okay, if led by comma
 | 
						|
:                                # closing colon
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  )? #       optional route
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
" (?:                      # opening quote...
 | 
						|
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 | 
						|
|                     #    or
 | 
						|
\\ [^\x80-\xff]           #   Escaped something (something != CR)
 | 
						|
)* "  # closing quote
 | 
						|
)                    # initial word
 | 
						|
(?:  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  \.  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*   (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
" (?:                      # opening quote...
 | 
						|
[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
 | 
						|
|                     #    or
 | 
						|
\\ [^\x80-\xff]           #   Escaped something (something != CR)
 | 
						|
)* "  # closing quote
 | 
						|
)  )* # further okay, if led by a period
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  @  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*    (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                           # initial subdomain
 | 
						|
(?:                                  #
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  \.                        # if led by a period...
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*   (?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|   \[                         # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
 | 
						|
\]                        #           ]
 | 
						|
)                     #   ...further okay
 | 
						|
)*
 | 
						|
#       address spec
 | 
						|
(?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*  > #                  trailing >
 | 
						|
# name and address
 | 
						|
)  (?: [\040\t] |  \(
 | 
						|
(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
 | 
						|
\)  )*                       # optional trailing comment
 | 
						|
/x
 | 
						|
    Alan Other <user\@dom.ain>
 | 
						|
 0: Alan Other <user@dom.ain>
 | 
						|
    <user\@dom.ain>
 | 
						|
 0: user@dom.ain
 | 
						|
    user\@dom.ain
 | 
						|
 0: user@dom.ain
 | 
						|
    \"A. Other\" <user.1234\@dom.ain> (a comment)
 | 
						|
 0: "A. Other" <user.1234@dom.ain> (a comment)
 | 
						|
    A. Other <user.1234\@dom.ain> (a comment)
 | 
						|
 0:  Other <user.1234@dom.ain> (a comment)
 | 
						|
    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
 | 
						|
 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
 | 
						|
    A missing angle <user\@some.where
 | 
						|
 0: user@some.where
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    The quick brown fox
 | 
						|
No match
 | 
						|
 | 
						|
/[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional leading comment
 | 
						|
(?:
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
# Atom
 | 
						|
|                       #  or
 | 
						|
"                                     # "
 | 
						|
[^\\\x80-\xff\n\015"] *                            #   normal
 | 
						|
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 | 
						|
"                                     #        "
 | 
						|
# Quoted string
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
\.
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
# Atom
 | 
						|
|                       #  or
 | 
						|
"                                     # "
 | 
						|
[^\\\x80-\xff\n\015"] *                            #   normal
 | 
						|
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 | 
						|
"                                     #        "
 | 
						|
# Quoted string
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# additional words
 | 
						|
)*
 | 
						|
@
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
(?:
 | 
						|
\.
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
)*
 | 
						|
# address
 | 
						|
|                             #  or
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
# Atom
 | 
						|
|                       #  or
 | 
						|
"                                     # "
 | 
						|
[^\\\x80-\xff\n\015"] *                            #   normal
 | 
						|
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 | 
						|
"                                     #        "
 | 
						|
# Quoted string
 | 
						|
)
 | 
						|
# leading word
 | 
						|
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
 | 
						|
(?:
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
|
 | 
						|
"                                     # "
 | 
						|
[^\\\x80-\xff\n\015"] *                            #   normal
 | 
						|
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 | 
						|
"                                     #        "
 | 
						|
) # "special" comment or quoted string
 | 
						|
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
 | 
						|
)*
 | 
						|
<
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# <
 | 
						|
(?:
 | 
						|
@
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
(?:
 | 
						|
\.
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
)*
 | 
						|
(?: ,
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
@
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
(?:
 | 
						|
\.
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
)*
 | 
						|
)*  # additional domains
 | 
						|
:
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
)?     #       optional route
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
# Atom
 | 
						|
|                       #  or
 | 
						|
"                                     # "
 | 
						|
[^\\\x80-\xff\n\015"] *                            #   normal
 | 
						|
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 | 
						|
"                                     #        "
 | 
						|
# Quoted string
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
\.
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
# Atom
 | 
						|
|                       #  or
 | 
						|
"                                     # "
 | 
						|
[^\\\x80-\xff\n\015"] *                            #   normal
 | 
						|
(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
 | 
						|
"                                     #        "
 | 
						|
# Quoted string
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# additional words
 | 
						|
)*
 | 
						|
@
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
(?:
 | 
						|
\.
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
(?:
 | 
						|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
 | 
						|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
 | 
						|
|
 | 
						|
\[                            # [
 | 
						|
(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
 | 
						|
\]                           #           ]
 | 
						|
)
 | 
						|
[\040\t]*                    # Nab whitespace.
 | 
						|
(?:
 | 
						|
\(                              #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                             #     normal*
 | 
						|
(?:                                 #       (
 | 
						|
(?:  \\ [^\x80-\xff]  |
 | 
						|
\(                            #  (
 | 
						|
[^\\\x80-\xff\n\015()] *                            #     normal*
 | 
						|
(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
 | 
						|
\)                           #                       )
 | 
						|
)    #         special
 | 
						|
[^\\\x80-\xff\n\015()] *                         #         normal*
 | 
						|
)*                                  #            )*
 | 
						|
\)                             #                )
 | 
						|
[\040\t]* )*    # If comment found, allow more spaces.
 | 
						|
# optional trailing comments
 | 
						|
)*
 | 
						|
#       address spec
 | 
						|
>                    #                 >
 | 
						|
# name and address
 | 
						|
)
 | 
						|
/x
 | 
						|
    Alan Other <user\@dom.ain>
 | 
						|
 0: Alan Other <user@dom.ain>
 | 
						|
    <user\@dom.ain>
 | 
						|
 0: user@dom.ain
 | 
						|
    user\@dom.ain
 | 
						|
 0: user@dom.ain
 | 
						|
    \"A. Other\" <user.1234\@dom.ain> (a comment)
 | 
						|
 0: "A. Other" <user.1234@dom.ain>
 | 
						|
    A. Other <user.1234\@dom.ain> (a comment)
 | 
						|
 0:  Other <user.1234@dom.ain>
 | 
						|
    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
 | 
						|
 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
 | 
						|
    A missing angle <user\@some.where
 | 
						|
 0: user@some.where
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    The quick brown fox
 | 
						|
No match
 | 
						|
 | 
						|
/abc\0def\00pqr\000xyz\0000AB/
 | 
						|
    abc\0def\00pqr\000xyz\0000AB
 | 
						|
 0: abc\x00def\x00pqr\x00xyz\x000AB
 | 
						|
    abc456 abc\0def\00pqr\000xyz\0000ABCDE
 | 
						|
 0: abc\x00def\x00pqr\x00xyz\x000AB
 | 
						|
 | 
						|
/abc\x0def\x00pqr\x000xyz\x0000AB/
 | 
						|
    abc\x0def\x00pqr\x000xyz\x0000AB
 | 
						|
 0: abc\x0def\x00pqr\x000xyz\x0000AB
 | 
						|
    abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
 | 
						|
 0: abc\x0def\x00pqr\x000xyz\x0000AB
 | 
						|
 | 
						|
/^[\000-\037]/
 | 
						|
    \0A
 | 
						|
 0: \x00
 | 
						|
    \01B
 | 
						|
 0: \x01
 | 
						|
    \037C
 | 
						|
 0: \x1f
 | 
						|
 | 
						|
/\0*/
 | 
						|
    \0\0\0\0
 | 
						|
 0: \x00\x00\x00\x00
 | 
						|
 | 
						|
/A\x0{2,3}Z/
 | 
						|
    The A\x0\x0Z
 | 
						|
 0: A\x00\x00Z
 | 
						|
    An A\0\x0\0Z
 | 
						|
 0: A\x00\x00\x00Z
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    A\0Z
 | 
						|
No match
 | 
						|
    A\0\x0\0\x0Z
 | 
						|
No match
 | 
						|
 | 
						|
/^(cow|)\1(bell)/
 | 
						|
    cowcowbell
 | 
						|
 0: cowcowbell
 | 
						|
 1: cow
 | 
						|
 2: bell
 | 
						|
    bell
 | 
						|
 0: bell
 | 
						|
 1: 
 | 
						|
 2: bell
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    cowbell
 | 
						|
No match
 | 
						|
 | 
						|
/^\s/
 | 
						|
    \040abc
 | 
						|
 0:  
 | 
						|
    \x0cabc
 | 
						|
 0: \x0c
 | 
						|
    \nabc
 | 
						|
 0: \x0a
 | 
						|
    \rabc
 | 
						|
 0: \x0d
 | 
						|
    \tabc
 | 
						|
 0: \x09
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
 | 
						|
/^a	b
 | 
						|
      c/x
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/^(a|)\1*b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
 1: a
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    acb
 | 
						|
No match
 | 
						|
 | 
						|
/^(a|)\1+b/
 | 
						|
    aab
 | 
						|
 0: aab
 | 
						|
 1: a
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
 1: a
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ab
 | 
						|
No match
 | 
						|
 | 
						|
/^(a|)\1?b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
    aab
 | 
						|
 0: aab
 | 
						|
 1: a
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    acb
 | 
						|
No match
 | 
						|
 | 
						|
/^(a|)\1{2}b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: a
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ab
 | 
						|
No match
 | 
						|
    aab
 | 
						|
No match
 | 
						|
    aaaab
 | 
						|
No match
 | 
						|
 | 
						|
/^(a|)\1{2,3}b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: a
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
 1: a
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ab
 | 
						|
No match
 | 
						|
    aab
 | 
						|
No match
 | 
						|
    aaaaab
 | 
						|
No match
 | 
						|
 | 
						|
/ab{1,3}bc/
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
    abbbc
 | 
						|
 0: abbbc
 | 
						|
    abbc
 | 
						|
 0: abbc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
    abbbbbc
 | 
						|
No match
 | 
						|
 | 
						|
/([^.]*)\.([^:]*):[T ]+(.*)/
 | 
						|
    track1.title:TBlah blah blah
 | 
						|
 0: track1.title:TBlah blah blah
 | 
						|
 1: track1
 | 
						|
 2: title
 | 
						|
 3: Blah blah blah
 | 
						|
 | 
						|
/([^.]*)\.([^:]*):[T ]+(.*)/i
 | 
						|
    track1.title:TBlah blah blah
 | 
						|
 0: track1.title:TBlah blah blah
 | 
						|
 1: track1
 | 
						|
 2: title
 | 
						|
 3: Blah blah blah
 | 
						|
 | 
						|
/([^.]*)\.([^:]*):[t ]+(.*)/i
 | 
						|
    track1.title:TBlah blah blah
 | 
						|
 0: track1.title:TBlah blah blah
 | 
						|
 1: track1
 | 
						|
 2: title
 | 
						|
 3: Blah blah blah
 | 
						|
 | 
						|
/^[W-c]+$/
 | 
						|
    WXY_^abc
 | 
						|
 0: WXY_^abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    wxy
 | 
						|
No match
 | 
						|
 | 
						|
/^[W-c]+$/i
 | 
						|
    WXY_^abc
 | 
						|
 0: WXY_^abc
 | 
						|
    wxy_^ABC
 | 
						|
 0: wxy_^ABC
 | 
						|
 | 
						|
/^[\x3f-\x5F]+$/i
 | 
						|
    WXY_^abc
 | 
						|
 0: WXY_^abc
 | 
						|
    wxy_^ABC
 | 
						|
 0: wxy_^ABC
 | 
						|
 | 
						|
/^abc$/m
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    qqq\nabc
 | 
						|
 0: abc
 | 
						|
    abc\nzzz
 | 
						|
 0: abc
 | 
						|
    qqq\nabc\nzzz
 | 
						|
 0: abc
 | 
						|
 | 
						|
/^abc$/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    qqq\nabc
 | 
						|
No match
 | 
						|
    abc\nzzz
 | 
						|
No match
 | 
						|
    qqq\nabc\nzzz
 | 
						|
No match
 | 
						|
 | 
						|
/\Aabc\Z/m
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    abc\n 
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    qqq\nabc
 | 
						|
No match
 | 
						|
    abc\nzzz
 | 
						|
No match
 | 
						|
    qqq\nabc\nzzz
 | 
						|
No match
 | 
						|
    
 | 
						|
/\A(.)*\Z/s
 | 
						|
    abc\ndef
 | 
						|
 0: abc\x0adef
 | 
						|
 1: f
 | 
						|
 | 
						|
/\A(.)*\Z/m
 | 
						|
    *** Failers
 | 
						|
 0: *** Failers
 | 
						|
 1: s
 | 
						|
    abc\ndef
 | 
						|
No match
 | 
						|
 | 
						|
/(?:b)|(?::+)/
 | 
						|
    b::c
 | 
						|
 0: b
 | 
						|
    c::b
 | 
						|
 0: ::
 | 
						|
 | 
						|
/[-az]+/
 | 
						|
    az-
 | 
						|
 0: az-
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
    b
 | 
						|
No match
 | 
						|
 | 
						|
/[az-]+/
 | 
						|
    za-
 | 
						|
 0: za-
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
    b
 | 
						|
No match
 | 
						|
 | 
						|
/[a\-z]+/
 | 
						|
    a-z
 | 
						|
 0: a-z
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
    b
 | 
						|
No match
 | 
						|
 | 
						|
/[a-z]+/
 | 
						|
    abcdxyz
 | 
						|
 0: abcdxyz
 | 
						|
 | 
						|
/[\d-]+/
 | 
						|
    12-34
 | 
						|
 0: 12-34
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaa
 | 
						|
No match
 | 
						|
 | 
						|
/[\d-z]+/
 | 
						|
    12-34z
 | 
						|
 0: 12-34z
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaa
 | 
						|
No match
 | 
						|
 | 
						|
/\x5c/
 | 
						|
    \\
 | 
						|
 0: \
 | 
						|
 | 
						|
/\x20Z/
 | 
						|
    the Zoo
 | 
						|
 0:  Z
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Zulu
 | 
						|
No match
 | 
						|
 | 
						|
/(abc)\1/i
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
    ABCabc
 | 
						|
 0: ABCabc
 | 
						|
 1: ABC
 | 
						|
    abcABC
 | 
						|
 0: abcABC
 | 
						|
 1: abc
 | 
						|
 | 
						|
/ab{3cd/
 | 
						|
    ab{3cd
 | 
						|
 0: ab{3cd
 | 
						|
 | 
						|
/ab{3,cd/
 | 
						|
    ab{3,cd
 | 
						|
 0: ab{3,cd
 | 
						|
 | 
						|
/ab{3,4a}cd/
 | 
						|
    ab{3,4a}cd
 | 
						|
 0: ab{3,4a}cd
 | 
						|
 | 
						|
/{4,5a}bc/
 | 
						|
    {4,5a}bc
 | 
						|
 0: {4,5a}bc
 | 
						|
 | 
						|
/abc$/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    abc\n
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc\ndef
 | 
						|
No match
 | 
						|
 | 
						|
/(abc)\123/
 | 
						|
    abc\x53
 | 
						|
 0: abcS
 | 
						|
 1: abc
 | 
						|
 | 
						|
/(abc)\223/
 | 
						|
    abc\x93
 | 
						|
 0: abc\x93
 | 
						|
 1: abc
 | 
						|
 | 
						|
/(abc)\323/
 | 
						|
    abc\xd3
 | 
						|
 0: abc\xd3
 | 
						|
 1: abc
 | 
						|
 | 
						|
/(abc)\100/
 | 
						|
    abc\x40
 | 
						|
 0: abc@
 | 
						|
 1: abc
 | 
						|
    abc\100
 | 
						|
 0: abc@
 | 
						|
 1: abc
 | 
						|
 | 
						|
/(abc)\1000/
 | 
						|
    abc\x400
 | 
						|
 0: abc@0
 | 
						|
 1: abc
 | 
						|
    abc\x40\x30
 | 
						|
 0: abc@0
 | 
						|
 1: abc
 | 
						|
    abc\1000
 | 
						|
 0: abc@0
 | 
						|
 1: abc
 | 
						|
    abc\100\x30
 | 
						|
 0: abc@0
 | 
						|
 1: abc
 | 
						|
    abc\100\060
 | 
						|
 0: abc@0
 | 
						|
 1: abc
 | 
						|
    abc\100\60
 | 
						|
 0: abc@0
 | 
						|
 1: abc
 | 
						|
    
 | 
						|
/^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
 | 
						|
    ABCDEFGHIHI 
 | 
						|
 0: ABCDEFGHIHI
 | 
						|
 1: A
 | 
						|
 2: B
 | 
						|
 3: C
 | 
						|
 4: D
 | 
						|
 5: E
 | 
						|
 6: F
 | 
						|
 7: G
 | 
						|
 8: H
 | 
						|
 9: I
 | 
						|
 | 
						|
/^[A\8B\9C]+$/
 | 
						|
    A8B9C
 | 
						|
 0: A8B9C
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    A8B9C\x00
 | 
						|
No match
 | 
						|
 | 
						|
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
 | 
						|
    abcdefghijkllS
 | 
						|
 0: abcdefghijkllS
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: c
 | 
						|
 4: d
 | 
						|
 5: e
 | 
						|
 6: f
 | 
						|
 7: g
 | 
						|
 8: h
 | 
						|
 9: i
 | 
						|
10: j
 | 
						|
11: k
 | 
						|
12: l
 | 
						|
 | 
						|
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
 | 
						|
    abcdefghijk\12S
 | 
						|
 0: abcdefghijk\x0aS
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: c
 | 
						|
 4: d
 | 
						|
 5: e
 | 
						|
 6: f
 | 
						|
 7: g
 | 
						|
 8: h
 | 
						|
 9: i
 | 
						|
10: j
 | 
						|
11: k
 | 
						|
 | 
						|
/a{0}bc/
 | 
						|
    bc
 | 
						|
 0: bc
 | 
						|
 | 
						|
/(a|(bc)){0,0}?xyz/
 | 
						|
    xyz
 | 
						|
 0: xyz
 | 
						|
 | 
						|
/abc[\10]de/
 | 
						|
    abc\010de
 | 
						|
 0: abc\x08de
 | 
						|
 | 
						|
/abc[\1]de/
 | 
						|
    abc\1de
 | 
						|
 0: abc\x01de
 | 
						|
 | 
						|
/(abc)[\1]de/
 | 
						|
    abc\1de
 | 
						|
 0: abc\x01de
 | 
						|
 1: abc
 | 
						|
 | 
						|
/(?s)a.b/
 | 
						|
    a\nb
 | 
						|
 0: a\x0ab
 | 
						|
 | 
						|
/^([^a])([^\b])([^c]*)([^d]{3,4})/
 | 
						|
    baNOTccccd
 | 
						|
 0: baNOTcccc
 | 
						|
 1: b
 | 
						|
 2: a
 | 
						|
 3: NOT
 | 
						|
 4: cccc
 | 
						|
    baNOTcccd
 | 
						|
 0: baNOTccc
 | 
						|
 1: b
 | 
						|
 2: a
 | 
						|
 3: NOT
 | 
						|
 4: ccc
 | 
						|
    baNOTccd
 | 
						|
 0: baNOTcc
 | 
						|
 1: b
 | 
						|
 2: a
 | 
						|
 3: NO
 | 
						|
 4: Tcc
 | 
						|
    bacccd
 | 
						|
 0: baccc
 | 
						|
 1: b
 | 
						|
 2: a
 | 
						|
 3: 
 | 
						|
 4: ccc
 | 
						|
    *** Failers
 | 
						|
 0: *** Failers
 | 
						|
 1: *
 | 
						|
 2: *
 | 
						|
 3: * Fail
 | 
						|
 4: ers
 | 
						|
    anything
 | 
						|
No match
 | 
						|
    b\bc   
 | 
						|
No match
 | 
						|
    baccd
 | 
						|
No match
 | 
						|
 | 
						|
/[^a]/
 | 
						|
    Abc
 | 
						|
 0: A
 | 
						|
  
 | 
						|
/[^a]/i
 | 
						|
    Abc 
 | 
						|
 0: b
 | 
						|
 | 
						|
/[^a]+/
 | 
						|
    AAAaAbc
 | 
						|
 0: AAA
 | 
						|
  
 | 
						|
/[^a]+/i
 | 
						|
    AAAaAbc 
 | 
						|
 0: bc
 | 
						|
 | 
						|
/[^a]+/
 | 
						|
    bbb\nccc
 | 
						|
 0: bbb\x0accc
 | 
						|
   
 | 
						|
/[^k]$/
 | 
						|
    abc
 | 
						|
 0: c
 | 
						|
    *** Failers
 | 
						|
 0: s
 | 
						|
    abk   
 | 
						|
No match
 | 
						|
   
 | 
						|
/[^k]{2,3}$/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    kbc
 | 
						|
 0: bc
 | 
						|
    kabc 
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
 0: ers
 | 
						|
    abk
 | 
						|
No match
 | 
						|
    akb
 | 
						|
No match
 | 
						|
    akk 
 | 
						|
No match
 | 
						|
 | 
						|
/^\d{8,}\@.+[^k]$/
 | 
						|
    12345678\@a.b.c.d
 | 
						|
 0: 12345678@a.b.c.d
 | 
						|
    123456789\@x.y.z
 | 
						|
 0: 123456789@x.y.z
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    12345678\@x.y.uk
 | 
						|
No match
 | 
						|
    1234567\@a.b.c.d       
 | 
						|
No match
 | 
						|
 | 
						|
/(a)\1{8,}/
 | 
						|
    aaaaaaaaa
 | 
						|
 0: aaaaaaaaa
 | 
						|
 1: a
 | 
						|
    aaaaaaaaaa
 | 
						|
 0: aaaaaaaaaa
 | 
						|
 1: a
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaaaaaa   
 | 
						|
No match
 | 
						|
 | 
						|
/[^a]/
 | 
						|
    aaaabcd
 | 
						|
 0: b
 | 
						|
    aaAabcd 
 | 
						|
 0: A
 | 
						|
 | 
						|
/[^a]/i
 | 
						|
    aaaabcd
 | 
						|
 0: b
 | 
						|
    aaAabcd 
 | 
						|
 0: b
 | 
						|
 | 
						|
/[^az]/
 | 
						|
    aaaabcd
 | 
						|
 0: b
 | 
						|
    aaAabcd 
 | 
						|
 0: A
 | 
						|
 | 
						|
/[^az]/i
 | 
						|
    aaaabcd
 | 
						|
 0: b
 | 
						|
    aaAabcd 
 | 
						|
 0: b
 | 
						|
 | 
						|
/\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/
 | 
						|
 \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
 | 
						|
 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
 | 
						|
 | 
						|
/P[^*]TAIRE[^*]{1,6}?LL/
 | 
						|
    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
 | 
						|
 0: PSTAIREISLL
 | 
						|
 | 
						|
/P[^*]TAIRE[^*]{1,}?LL/
 | 
						|
    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
 | 
						|
 0: PSTAIREISLL
 | 
						|
 | 
						|
/(\.\d\d[1-9]?)\d+/
 | 
						|
    1.230003938
 | 
						|
 0: .230003938
 | 
						|
 1: .23
 | 
						|
    1.875000282   
 | 
						|
 0: .875000282
 | 
						|
 1: .875
 | 
						|
    1.235  
 | 
						|
 0: .235
 | 
						|
 1: .23
 | 
						|
                  
 | 
						|
/(\.\d\d((?=0)|\d(?=\d)))/
 | 
						|
    1.230003938      
 | 
						|
 0: .23
 | 
						|
 1: .23
 | 
						|
 2: 
 | 
						|
    1.875000282
 | 
						|
 0: .875
 | 
						|
 1: .875
 | 
						|
 2: 5
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    1.235 
 | 
						|
No match
 | 
						|
    
 | 
						|
/a(?)b/
 | 
						|
    ab 
 | 
						|
 0: ab
 | 
						|
 
 | 
						|
/\b(foo)\s+(\w+)/i
 | 
						|
    Food is on the foo table
 | 
						|
 0: foo table
 | 
						|
 1: foo
 | 
						|
 2: table
 | 
						|
    
 | 
						|
/foo(.*)bar/
 | 
						|
    The food is under the bar in the barn.
 | 
						|
 0: food is under the bar in the bar
 | 
						|
 1: d is under the bar in the 
 | 
						|
    
 | 
						|
/foo(.*?)bar/
 | 
						|
    The food is under the bar in the barn.
 | 
						|
 0: food is under the bar
 | 
						|
 1: d is under the 
 | 
						|
 | 
						|
/(.*)(\d*)/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2 numbers: 53147
 | 
						|
 1: I have 2 numbers: 53147
 | 
						|
 2: 
 | 
						|
    
 | 
						|
/(.*)(\d+)/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2 numbers: 53147
 | 
						|
 1: I have 2 numbers: 5314
 | 
						|
 2: 7
 | 
						|
 
 | 
						|
/(.*?)(\d*)/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 2: 
 | 
						|
 | 
						|
/(.*?)(\d+)/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2
 | 
						|
 1: I have 
 | 
						|
 2: 2
 | 
						|
 | 
						|
/(.*)(\d+)$/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2 numbers: 53147
 | 
						|
 1: I have 2 numbers: 5314
 | 
						|
 2: 7
 | 
						|
 | 
						|
/(.*?)(\d+)$/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2 numbers: 53147
 | 
						|
 1: I have 2 numbers: 
 | 
						|
 2: 53147
 | 
						|
 | 
						|
/(.*)\b(\d+)$/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2 numbers: 53147
 | 
						|
 1: I have 2 numbers: 
 | 
						|
 2: 53147
 | 
						|
 | 
						|
/(.*\D)(\d+)$/
 | 
						|
    I have 2 numbers: 53147
 | 
						|
 0: I have 2 numbers: 53147
 | 
						|
 1: I have 2 numbers: 
 | 
						|
 2: 53147
 | 
						|
 | 
						|
/^\D*(?!123)/
 | 
						|
    ABC123
 | 
						|
 0: AB
 | 
						|
     
 | 
						|
/^(\D*)(?=\d)(?!123)/
 | 
						|
    ABC445
 | 
						|
 0: ABC
 | 
						|
 1: ABC
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ABC123
 | 
						|
No match
 | 
						|
    
 | 
						|
/^[W-]46]/
 | 
						|
    W46]789 
 | 
						|
 0: W46]
 | 
						|
    -46]789
 | 
						|
 0: -46]
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Wall
 | 
						|
No match
 | 
						|
    Zebra
 | 
						|
No match
 | 
						|
    42
 | 
						|
No match
 | 
						|
    [abcd] 
 | 
						|
No match
 | 
						|
    ]abcd[
 | 
						|
No match
 | 
						|
       
 | 
						|
/^[W-\]46]/
 | 
						|
    W46]789 
 | 
						|
 0: W
 | 
						|
    Wall
 | 
						|
 0: W
 | 
						|
    Zebra
 | 
						|
 0: Z
 | 
						|
    Xylophone  
 | 
						|
 0: X
 | 
						|
    42
 | 
						|
 0: 4
 | 
						|
    [abcd] 
 | 
						|
 0: [
 | 
						|
    ]abcd[
 | 
						|
 0: ]
 | 
						|
    \\backslash 
 | 
						|
 0: \
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    -46]789
 | 
						|
No match
 | 
						|
    well
 | 
						|
No match
 | 
						|
    
 | 
						|
/\d\d\/\d\d\/\d\d\d\d/
 | 
						|
    01/01/2000
 | 
						|
 0: 01/01/2000
 | 
						|
 | 
						|
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
 | 
						|
  word cat dog elephant mussel cow horse canary baboon snake shark otherword
 | 
						|
 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
 | 
						|
  word cat dog elephant mussel cow horse canary baboon snake shark
 | 
						|
No match
 | 
						|
 | 
						|
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
 | 
						|
  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
 | 
						|
No match
 | 
						|
 | 
						|
/^(a){0,0}/
 | 
						|
    bcd
 | 
						|
 0: 
 | 
						|
    abc
 | 
						|
 0: 
 | 
						|
    aab     
 | 
						|
 0: 
 | 
						|
 | 
						|
/^(a){0,1}/
 | 
						|
    bcd
 | 
						|
 0: 
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab  
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){0,2}/
 | 
						|
    bcd
 | 
						|
 0: 
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab  
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){0,3}/
 | 
						|
    bcd
 | 
						|
 0: 
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    aaa   
 | 
						|
 0: aaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){0,}/
 | 
						|
    bcd
 | 
						|
 0: 
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    aaa
 | 
						|
 0: aaa
 | 
						|
 1: a
 | 
						|
    aaaaaaaa    
 | 
						|
 0: aaaaaaaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){1,1}/
 | 
						|
    bcd
 | 
						|
No match
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab  
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){1,2}/
 | 
						|
    bcd
 | 
						|
No match
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab  
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){1,3}/
 | 
						|
    bcd
 | 
						|
No match
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    aaa   
 | 
						|
 0: aaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a){1,}/
 | 
						|
    bcd
 | 
						|
No match
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aab
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    aaa
 | 
						|
 0: aaa
 | 
						|
 1: a
 | 
						|
    aaaaaaaa    
 | 
						|
 0: aaaaaaaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/.*\.gif/
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: bib.gif
 | 
						|
 | 
						|
/.{0,}\.gif/
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: bib.gif
 | 
						|
 | 
						|
/.*\.gif/m
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: bib.gif
 | 
						|
 | 
						|
/.*\.gif/s
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: borfle\x0abib.gif
 | 
						|
 | 
						|
/.*\.gif/ms
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: borfle\x0abib.gif
 | 
						|
    
 | 
						|
/.*$/
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: no
 | 
						|
 | 
						|
/.*$/m
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: borfle
 | 
						|
 | 
						|
/.*$/s
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: borfle\x0abib.gif\x0ano
 | 
						|
 | 
						|
/.*$/ms
 | 
						|
    borfle\nbib.gif\nno
 | 
						|
 0: borfle\x0abib.gif\x0ano
 | 
						|
    
 | 
						|
/.*$/
 | 
						|
    borfle\nbib.gif\nno\n
 | 
						|
 0: no
 | 
						|
 | 
						|
/.*$/m
 | 
						|
    borfle\nbib.gif\nno\n
 | 
						|
 0: borfle
 | 
						|
 | 
						|
/.*$/s
 | 
						|
    borfle\nbib.gif\nno\n
 | 
						|
 0: borfle\x0abib.gif\x0ano\x0a
 | 
						|
 | 
						|
/.*$/ms
 | 
						|
    borfle\nbib.gif\nno\n
 | 
						|
 0: borfle\x0abib.gif\x0ano\x0a
 | 
						|
    
 | 
						|
/(.*X|^B)/
 | 
						|
    abcde\n1234Xyz
 | 
						|
 0: 1234X
 | 
						|
 1: 1234X
 | 
						|
    BarFoo 
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcde\nBar  
 | 
						|
No match
 | 
						|
 | 
						|
/(.*X|^B)/m
 | 
						|
    abcde\n1234Xyz
 | 
						|
 0: 1234X
 | 
						|
 1: 1234X
 | 
						|
    BarFoo 
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
    abcde\nBar  
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
 | 
						|
/(.*X|^B)/s
 | 
						|
    abcde\n1234Xyz
 | 
						|
 0: abcde\x0a1234X
 | 
						|
 1: abcde\x0a1234X
 | 
						|
    BarFoo 
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcde\nBar  
 | 
						|
No match
 | 
						|
 | 
						|
/(.*X|^B)/ms
 | 
						|
    abcde\n1234Xyz
 | 
						|
 0: abcde\x0a1234X
 | 
						|
 1: abcde\x0a1234X
 | 
						|
    BarFoo 
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
    abcde\nBar  
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
 | 
						|
/(?s)(.*X|^B)/
 | 
						|
    abcde\n1234Xyz
 | 
						|
 0: abcde\x0a1234X
 | 
						|
 1: abcde\x0a1234X
 | 
						|
    BarFoo 
 | 
						|
 0: B
 | 
						|
 1: B
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    abcde\nBar  
 | 
						|
No match
 | 
						|
 | 
						|
/(?s:.*X|^B)/
 | 
						|
    abcde\n1234Xyz
 | 
						|
 0: abcde\x0a1234X
 | 
						|
    BarFoo 
 | 
						|
 0: B
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    abcde\nBar  
 | 
						|
No match
 | 
						|
 | 
						|
/^.*B/
 | 
						|
    **** Failers
 | 
						|
No match
 | 
						|
    abc\nB
 | 
						|
No match
 | 
						|
     
 | 
						|
/(?s)^.*B/
 | 
						|
    abc\nB
 | 
						|
 0: abc\x0aB
 | 
						|
 | 
						|
/(?m)^.*B/
 | 
						|
    abc\nB
 | 
						|
 0: B
 | 
						|
     
 | 
						|
/(?ms)^.*B/
 | 
						|
    abc\nB
 | 
						|
 0: abc\x0aB
 | 
						|
 | 
						|
/(?ms)^B/
 | 
						|
    abc\nB
 | 
						|
 0: B
 | 
						|
 | 
						|
/(?s)B$/
 | 
						|
    B\n
 | 
						|
 0: B
 | 
						|
 | 
						|
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
 | 
						|
    123456654321
 | 
						|
 0: 123456654321
 | 
						|
  
 | 
						|
/^\d\d\d\d\d\d\d\d\d\d\d\d/
 | 
						|
    123456654321 
 | 
						|
 0: 123456654321
 | 
						|
 | 
						|
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
 | 
						|
    123456654321
 | 
						|
 0: 123456654321
 | 
						|
  
 | 
						|
/^[abc]{12}/
 | 
						|
    abcabcabcabc
 | 
						|
 0: abcabcabcabc
 | 
						|
    
 | 
						|
/^[a-c]{12}/
 | 
						|
    abcabcabcabc
 | 
						|
 0: abcabcabcabc
 | 
						|
    
 | 
						|
/^(a|b|c){12}/
 | 
						|
    abcabcabcabc 
 | 
						|
 0: abcabcabcabc
 | 
						|
 1: c
 | 
						|
 | 
						|
/^[abcdefghijklmnopqrstuvwxy0123456789]/
 | 
						|
    n
 | 
						|
 0: n
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    z 
 | 
						|
No match
 | 
						|
 | 
						|
/abcde{0,0}/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abce  
 | 
						|
No match
 | 
						|
 | 
						|
/ab[cd]{0,0}e/
 | 
						|
    abe
 | 
						|
 0: abe
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcde 
 | 
						|
No match
 | 
						|
    
 | 
						|
/ab(c){0,0}d/
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcd   
 | 
						|
No match
 | 
						|
 | 
						|
/a(b*)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: 
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: b
 | 
						|
    abbbb
 | 
						|
 0: abbbb
 | 
						|
 1: bbbb
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
 1: 
 | 
						|
    bbbbb    
 | 
						|
No match
 | 
						|
    
 | 
						|
/ab\d{0}e/
 | 
						|
    abe
 | 
						|
 0: abe
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ab1e   
 | 
						|
No match
 | 
						|
    
 | 
						|
/"([^\\"]+|\\.)*"/
 | 
						|
    the \"quick\" brown fox
 | 
						|
 0: "quick"
 | 
						|
 1: quick
 | 
						|
    \"the \\\"quick\\\" brown fox\" 
 | 
						|
 0: "the \"quick\" brown fox"
 | 
						|
 1:  brown fox
 | 
						|
 | 
						|
/.*?/g,aftertext
 | 
						|
    abc
 | 
						|
 0: 
 | 
						|
 0+ abc
 | 
						|
 0: a
 | 
						|
 0+ bc
 | 
						|
 0: 
 | 
						|
 0+ bc
 | 
						|
 0: b
 | 
						|
 0+ c
 | 
						|
 0: 
 | 
						|
 0+ c
 | 
						|
 0: c
 | 
						|
 0+ 
 | 
						|
 0: 
 | 
						|
 0+ 
 | 
						|
  
 | 
						|
/\b/g,aftertext
 | 
						|
    abc 
 | 
						|
 0: 
 | 
						|
 0+ abc
 | 
						|
 0: 
 | 
						|
 0+ 
 | 
						|
 | 
						|
/\b/g,aftertext
 | 
						|
    abc 
 | 
						|
 0: 
 | 
						|
 0+ abc
 | 
						|
 0: 
 | 
						|
 0+ 
 | 
						|
 | 
						|
//g
 | 
						|
    abc
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
 | 
						|
/<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
 | 
						|
  <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>
 | 
						|
 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>
 | 
						|
 1:  BGCOLOR='#DBE9E9'
 | 
						|
 2:  align=left valign=top
 | 
						|
 3: 43.
 | 
						|
 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
 | 
						|
 5: 
 | 
						|
 6: 
 | 
						|
 7: <unset>
 | 
						|
 8:  align=left valign=top
 | 
						|
 9: Lega lstaff.com
 | 
						|
10:  align=left valign=top
 | 
						|
11: CA - Statewide
 | 
						|
 | 
						|
/a[^a]b/
 | 
						|
    acb
 | 
						|
 0: acb
 | 
						|
    a\nb
 | 
						|
 0: a\x0ab
 | 
						|
    
 | 
						|
/a.b/
 | 
						|
    acb
 | 
						|
 0: acb
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    a\nb   
 | 
						|
No match
 | 
						|
    
 | 
						|
/a[^a]b/s
 | 
						|
    acb
 | 
						|
 0: acb
 | 
						|
    a\nb  
 | 
						|
 0: a\x0ab
 | 
						|
    
 | 
						|
/a.b/s
 | 
						|
    acb
 | 
						|
 0: acb
 | 
						|
    a\nb  
 | 
						|
 0: a\x0ab
 | 
						|
 | 
						|
/^(b+?|a){1,2}?c/
 | 
						|
    bac
 | 
						|
 0: bac
 | 
						|
 1: a
 | 
						|
    bbac
 | 
						|
 0: bbac
 | 
						|
 1: a
 | 
						|
    bbbac
 | 
						|
 0: bbbac
 | 
						|
 1: a
 | 
						|
    bbbbac
 | 
						|
 0: bbbbac
 | 
						|
 1: a
 | 
						|
    bbbbbac 
 | 
						|
 0: bbbbbac
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(b+|a){1,2}?c/
 | 
						|
    bac
 | 
						|
 0: bac
 | 
						|
 1: a
 | 
						|
    bbac
 | 
						|
 0: bbac
 | 
						|
 1: a
 | 
						|
    bbbac
 | 
						|
 0: bbbac
 | 
						|
 1: a
 | 
						|
    bbbbac
 | 
						|
 0: bbbbac
 | 
						|
 1: a
 | 
						|
    bbbbbac 
 | 
						|
 0: bbbbbac
 | 
						|
 1: a
 | 
						|
    
 | 
						|
/(?!\A)x/m
 | 
						|
    x\nb\n
 | 
						|
No match
 | 
						|
    a\bx\n  
 | 
						|
 0: x
 | 
						|
    
 | 
						|
/\x0{ab}/
 | 
						|
    \0{ab} 
 | 
						|
 0: \x00{ab}
 | 
						|
 | 
						|
/(A|B)*?CD/
 | 
						|
    CD 
 | 
						|
 0: CD
 | 
						|
    
 | 
						|
/(A|B)*CD/
 | 
						|
    CD 
 | 
						|
 0: CD
 | 
						|
 | 
						|
/(AB)*?\1/
 | 
						|
    ABABAB
 | 
						|
 0: ABAB
 | 
						|
 1: AB
 | 
						|
 | 
						|
/(AB)*\1/
 | 
						|
    ABABAB
 | 
						|
 0: ABABAB
 | 
						|
 1: AB
 | 
						|
    
 | 
						|
/(?<!bar)foo/
 | 
						|
    foo
 | 
						|
 0: foo
 | 
						|
    catfood
 | 
						|
 0: foo
 | 
						|
    arfootle
 | 
						|
 0: foo
 | 
						|
    rfoosh
 | 
						|
 0: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    barfoo
 | 
						|
No match
 | 
						|
    towbarfoo
 | 
						|
No match
 | 
						|
 | 
						|
/\w{3}(?<!bar)foo/
 | 
						|
    catfood
 | 
						|
 0: catfoo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    foo
 | 
						|
No match
 | 
						|
    barfoo
 | 
						|
No match
 | 
						|
    towbarfoo
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=(foo)a)bar/
 | 
						|
    fooabar
 | 
						|
 0: bar
 | 
						|
 1: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    bar
 | 
						|
No match
 | 
						|
    foobbar
 | 
						|
No match
 | 
						|
      
 | 
						|
/\Aabc\z/m
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc\n   
 | 
						|
No match
 | 
						|
    qqq\nabc
 | 
						|
No match
 | 
						|
    abc\nzzz
 | 
						|
No match
 | 
						|
    qqq\nabc\nzzz
 | 
						|
No match
 | 
						|
 | 
						|
"(?>.*/)foo"
 | 
						|
    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
 | 
						|
No match
 | 
						|
 | 
						|
"(?>.*/)foo"
 | 
						|
    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
 | 
						|
 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
 | 
						|
 | 
						|
/(?>(\.\d\d[1-9]?))\d+/
 | 
						|
    1.230003938
 | 
						|
 0: .230003938
 | 
						|
 1: .23
 | 
						|
    1.875000282
 | 
						|
 0: .875000282
 | 
						|
 1: .875
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    1.235 
 | 
						|
No match
 | 
						|
 | 
						|
/^((?>\w+)|(?>\s+))*$/
 | 
						|
    now is the time for all good men to come to the aid of the party
 | 
						|
 0: now is the time for all good men to come to the aid of the party
 | 
						|
 1: party
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    this is not a line with only words and spaces!
 | 
						|
No match
 | 
						|
    
 | 
						|
/(\d+)(\w)/
 | 
						|
    12345a
 | 
						|
 0: 12345a
 | 
						|
 1: 12345
 | 
						|
 2: a
 | 
						|
    12345+ 
 | 
						|
 0: 12345
 | 
						|
 1: 1234
 | 
						|
 2: 5
 | 
						|
 | 
						|
/((?>\d+))(\w)/
 | 
						|
    12345a
 | 
						|
 0: 12345a
 | 
						|
 1: 12345
 | 
						|
 2: a
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    12345+ 
 | 
						|
No match
 | 
						|
 | 
						|
/(?>a+)b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 | 
						|
/((?>a+)b)/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: aaab
 | 
						|
 | 
						|
/(?>(a+))b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: aaa
 | 
						|
 | 
						|
/(?>b)+/
 | 
						|
    aaabbbccc
 | 
						|
 0: bbb
 | 
						|
 | 
						|
/(?>a+|b+|c+)*c/
 | 
						|
    aaabbbbccccd
 | 
						|
 0: aaabbbbc
 | 
						|
 | 
						|
/((?>[^()]+)|\([^()]*\))+/
 | 
						|
    ((abc(ade)ufh()()x
 | 
						|
 0: abc(ade)ufh()()x
 | 
						|
 1: x
 | 
						|
    
 | 
						|
/\(((?>[^()]+)|\([^()]+\))+\)/
 | 
						|
    (abc)
 | 
						|
 0: (abc)
 | 
						|
 1: abc
 | 
						|
    (abc(def)xyz)
 | 
						|
 0: (abc(def)xyz)
 | 
						|
 1: xyz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
 | 
						|
No match
 | 
						|
 | 
						|
/a(?-i)b/i
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
    Ab
 | 
						|
 0: Ab
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    aB
 | 
						|
No match
 | 
						|
    AB
 | 
						|
No match
 | 
						|
        
 | 
						|
/(a (?x)b c)d e/
 | 
						|
    a bcd e
 | 
						|
 0: a bcd e
 | 
						|
 1: a bc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a b cd e
 | 
						|
No match
 | 
						|
    abcd e   
 | 
						|
No match
 | 
						|
    a bcde 
 | 
						|
No match
 | 
						|
 
 | 
						|
/(a b(?x)c d (?-x)e f)/
 | 
						|
    a bcde f
 | 
						|
 0: a bcde f
 | 
						|
 1: a bcde f
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcdef  
 | 
						|
No match
 | 
						|
 | 
						|
/(a(?i)b)c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: ab
 | 
						|
    aBc
 | 
						|
 0: aBc
 | 
						|
 1: aB
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abC
 | 
						|
No match
 | 
						|
    aBC  
 | 
						|
No match
 | 
						|
    Abc
 | 
						|
No match
 | 
						|
    ABc
 | 
						|
No match
 | 
						|
    ABC
 | 
						|
No match
 | 
						|
    AbC
 | 
						|
No match
 | 
						|
    
 | 
						|
/a(?i:b)c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    aBc
 | 
						|
 0: aBc
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    ABC
 | 
						|
No match
 | 
						|
    abC
 | 
						|
No match
 | 
						|
    aBC
 | 
						|
No match
 | 
						|
    
 | 
						|
/a(?i:b)*c/
 | 
						|
    aBc
 | 
						|
 0: aBc
 | 
						|
    aBBc
 | 
						|
 0: aBBc
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    aBC
 | 
						|
No match
 | 
						|
    aBBC
 | 
						|
No match
 | 
						|
    
 | 
						|
/a(?=b(?i)c)\w\wd/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
    abCd
 | 
						|
 0: abCd
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aBCd
 | 
						|
No match
 | 
						|
    abcD     
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?s-i:more.*than).*million/i
 | 
						|
    more than million
 | 
						|
 0: more than million
 | 
						|
    more than MILLION
 | 
						|
 0: more than MILLION
 | 
						|
    more \n than Million 
 | 
						|
 0: more \x0a than Million
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    MORE THAN MILLION    
 | 
						|
No match
 | 
						|
    more \n than \n million 
 | 
						|
No match
 | 
						|
 | 
						|
/(?:(?s-i)more.*than).*million/i
 | 
						|
    more than million
 | 
						|
 0: more than million
 | 
						|
    more than MILLION
 | 
						|
 0: more than MILLION
 | 
						|
    more \n than Million 
 | 
						|
 0: more \x0a than Million
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    MORE THAN MILLION    
 | 
						|
No match
 | 
						|
    more \n than \n million 
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?>a(?i)b+)+c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    aBbc
 | 
						|
 0: aBbc
 | 
						|
    aBBc 
 | 
						|
 0: aBBc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Abc
 | 
						|
No match
 | 
						|
    abAb    
 | 
						|
No match
 | 
						|
    abbC 
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?=a(?i)b)\w\wc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    aBc
 | 
						|
 0: aBc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Ab 
 | 
						|
No match
 | 
						|
    abC
 | 
						|
No match
 | 
						|
    aBC     
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?<=a(?i)b)(\w\w)c/
 | 
						|
    abxxc
 | 
						|
 0: xxc
 | 
						|
 1: xx
 | 
						|
    aBxxc
 | 
						|
 0: xxc
 | 
						|
 1: xx
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Abxxc
 | 
						|
No match
 | 
						|
    ABxxc
 | 
						|
No match
 | 
						|
    abxxC      
 | 
						|
No match
 | 
						|
 | 
						|
/(?:(a)|b)(?(1)A|B)/
 | 
						|
    aA
 | 
						|
 0: aA
 | 
						|
 1: a
 | 
						|
    bB
 | 
						|
 0: bB
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aB
 | 
						|
No match
 | 
						|
    bA    
 | 
						|
No match
 | 
						|
 | 
						|
/^(a)?(?(1)a|b)+$/
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
    bb  
 | 
						|
 0: bb
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ab   
 | 
						|
No match
 | 
						|
    
 | 
						|
# Perl gets this next one wrong if the pattern ends with $; in that case it
 | 
						|
# fails to match "12". 
 | 
						|
 | 
						|
/^(?(?=abc)\w{3}:|\d\d)/
 | 
						|
    abc:
 | 
						|
 0: abc:
 | 
						|
    12
 | 
						|
 0: 12
 | 
						|
    123
 | 
						|
 0: 12
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    xyz    
 | 
						|
No match
 | 
						|
 | 
						|
/^(?(?!abc)\d\d|\w{3}:)$/
 | 
						|
    abc:
 | 
						|
 0: abc:
 | 
						|
    12
 | 
						|
 0: 12
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123
 | 
						|
No match
 | 
						|
    xyz    
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?(?<=foo)bar|cat)/
 | 
						|
    foobar
 | 
						|
 0: bar
 | 
						|
    cat
 | 
						|
 0: cat
 | 
						|
    fcat
 | 
						|
 0: cat
 | 
						|
    focat   
 | 
						|
 0: cat
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    foocat  
 | 
						|
No match
 | 
						|
 | 
						|
/(?(?<!foo)cat|bar)/
 | 
						|
    foobar
 | 
						|
 0: bar
 | 
						|
    cat
 | 
						|
 0: cat
 | 
						|
    fcat
 | 
						|
 0: cat
 | 
						|
    focat   
 | 
						|
 0: cat
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    foocat  
 | 
						|
No match
 | 
						|
 | 
						|
/( \( )? [^()]+ (?(1) \) |) /x
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
    (abcd)
 | 
						|
 0: (abcd)
 | 
						|
 1: (
 | 
						|
    the quick (abcd) fox
 | 
						|
 0: the quick 
 | 
						|
    (abcd   
 | 
						|
 0: abcd
 | 
						|
 | 
						|
/( \( )? [^()]+ (?(1) \) ) /x
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
    (abcd)
 | 
						|
 0: (abcd)
 | 
						|
 1: (
 | 
						|
    the quick (abcd) fox
 | 
						|
 0: the quick 
 | 
						|
    (abcd   
 | 
						|
 0: abcd
 | 
						|
 | 
						|
/^(?(2)a|(1)(2))+$/
 | 
						|
    12
 | 
						|
 0: 12
 | 
						|
 1: 1
 | 
						|
 2: 2
 | 
						|
    12a
 | 
						|
 0: 12a
 | 
						|
 1: 1
 | 
						|
 2: 2
 | 
						|
    12aa
 | 
						|
 0: 12aa
 | 
						|
 1: 1
 | 
						|
 2: 2
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    1234    
 | 
						|
No match
 | 
						|
 | 
						|
/((?i)blah)\s+\1/
 | 
						|
    blah blah
 | 
						|
 0: blah blah
 | 
						|
 1: blah
 | 
						|
    BLAH BLAH
 | 
						|
 0: BLAH BLAH
 | 
						|
 1: BLAH
 | 
						|
    Blah Blah
 | 
						|
 0: Blah Blah
 | 
						|
 1: Blah
 | 
						|
    blaH blaH
 | 
						|
 0: blaH blaH
 | 
						|
 1: blaH
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    blah BLAH
 | 
						|
No match
 | 
						|
    Blah blah      
 | 
						|
No match
 | 
						|
    blaH blah 
 | 
						|
No match
 | 
						|
 | 
						|
/((?i)blah)\s+(?i:\1)/
 | 
						|
    blah blah
 | 
						|
 0: blah blah
 | 
						|
 1: blah
 | 
						|
    BLAH BLAH
 | 
						|
 0: BLAH BLAH
 | 
						|
 1: BLAH
 | 
						|
    Blah Blah
 | 
						|
 0: Blah Blah
 | 
						|
 1: Blah
 | 
						|
    blaH blaH
 | 
						|
 0: blaH blaH
 | 
						|
 1: blaH
 | 
						|
    blah BLAH
 | 
						|
 0: blah BLAH
 | 
						|
 1: blah
 | 
						|
    Blah blah      
 | 
						|
 0: Blah blah
 | 
						|
 1: Blah
 | 
						|
    blaH blah 
 | 
						|
 0: blaH blah
 | 
						|
 1: blaH
 | 
						|
 | 
						|
/(?>a*)*/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    
 | 
						|
/(abc|)+/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: 
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: 
 | 
						|
    abcabcabc
 | 
						|
 0: abcabcabc
 | 
						|
 1: 
 | 
						|
    xyz      
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
/([a]*)*/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: 
 | 
						|
    aaaaa 
 | 
						|
 0: aaaaa
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([ab]*)*/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: 
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    ababab
 | 
						|
 0: ababab
 | 
						|
 1: 
 | 
						|
    aaaabcde
 | 
						|
 0: aaaab
 | 
						|
 1: 
 | 
						|
    bbbb    
 | 
						|
 0: bbbb
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([^a]*)*/
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    bbbb
 | 
						|
 0: bbbb
 | 
						|
 1: 
 | 
						|
    aaa   
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([^ab]*)*/
 | 
						|
    cccc
 | 
						|
 0: cccc
 | 
						|
 1: 
 | 
						|
    abab  
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([a]*?)*/
 | 
						|
    a
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    aaaa 
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([ab]*?)*/
 | 
						|
    a
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    b
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    abab
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    baba   
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([^a]*?)*/
 | 
						|
    b
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    bbbb
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    aaa   
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/([^ab]*?)*/
 | 
						|
    c
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    cccc
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    baba   
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/(?>a*)*/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    aaabcde 
 | 
						|
 0: aaa
 | 
						|
 
 | 
						|
/((?>a*))*/
 | 
						|
    aaaaa
 | 
						|
 0: aaaaa
 | 
						|
 1: 
 | 
						|
    aabbaa 
 | 
						|
 0: aa
 | 
						|
 1: 
 | 
						|
 
 | 
						|
/((?>a*?))*/
 | 
						|
    aaaaa
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
    aabbaa 
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
/(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
 | 
						|
    12-sep-98
 | 
						|
 0: 12-sep-98
 | 
						|
    12-09-98
 | 
						|
 0: 12-09-98
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    sep-12-98
 | 
						|
No match
 | 
						|
        
 | 
						|
/(?<=(foo))bar\1/
 | 
						|
    foobarfoo
 | 
						|
 0: barfoo
 | 
						|
 1: foo
 | 
						|
    foobarfootling 
 | 
						|
 0: barfoo
 | 
						|
 1: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    foobar
 | 
						|
No match
 | 
						|
    barfoo   
 | 
						|
No match
 | 
						|
 | 
						|
/(?i:saturday|sunday)/
 | 
						|
    saturday
 | 
						|
 0: saturday
 | 
						|
    sunday
 | 
						|
 0: sunday
 | 
						|
    Saturday
 | 
						|
 0: Saturday
 | 
						|
    Sunday
 | 
						|
 0: Sunday
 | 
						|
    SATURDAY
 | 
						|
 0: SATURDAY
 | 
						|
    SUNDAY
 | 
						|
 0: SUNDAY
 | 
						|
    SunDay
 | 
						|
 0: SunDay
 | 
						|
    
 | 
						|
/(a(?i)bc|BB)x/
 | 
						|
    abcx
 | 
						|
 0: abcx
 | 
						|
 1: abc
 | 
						|
    aBCx
 | 
						|
 0: aBCx
 | 
						|
 1: aBC
 | 
						|
    bbx
 | 
						|
 0: bbx
 | 
						|
 1: bb
 | 
						|
    BBx
 | 
						|
 0: BBx
 | 
						|
 1: BB
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcX
 | 
						|
No match
 | 
						|
    aBCX
 | 
						|
No match
 | 
						|
    bbX
 | 
						|
No match
 | 
						|
    BBX               
 | 
						|
No match
 | 
						|
 | 
						|
/^([ab](?i)[cd]|[ef])/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: ac
 | 
						|
    aC
 | 
						|
 0: aC
 | 
						|
 1: aC
 | 
						|
    bD
 | 
						|
 0: bD
 | 
						|
 1: bD
 | 
						|
    elephant
 | 
						|
 0: e
 | 
						|
 1: e
 | 
						|
    Europe 
 | 
						|
 0: E
 | 
						|
 1: E
 | 
						|
    frog
 | 
						|
 0: f
 | 
						|
 1: f
 | 
						|
    France
 | 
						|
 0: F
 | 
						|
 1: F
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Africa     
 | 
						|
No match
 | 
						|
 | 
						|
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: ab
 | 
						|
    aBd
 | 
						|
 0: aBd
 | 
						|
 1: aBd
 | 
						|
    xy
 | 
						|
 0: xy
 | 
						|
 1: xy
 | 
						|
    xY
 | 
						|
 0: xY
 | 
						|
 1: xY
 | 
						|
    zebra
 | 
						|
 0: z
 | 
						|
 1: z
 | 
						|
    Zambesi
 | 
						|
 0: Z
 | 
						|
 1: Z
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aCD  
 | 
						|
No match
 | 
						|
    XY  
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=foo\n)^bar/m
 | 
						|
    foo\nbar
 | 
						|
 0: bar
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    bar
 | 
						|
No match
 | 
						|
    baz\nbar   
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=(?<!foo)bar)baz/
 | 
						|
    barbaz
 | 
						|
 0: baz
 | 
						|
    barbarbaz 
 | 
						|
 0: baz
 | 
						|
    koobarbaz 
 | 
						|
 0: baz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    baz
 | 
						|
No match
 | 
						|
    foobarbaz 
 | 
						|
No match
 | 
						|
 | 
						|
/The cases of aaaa and aaaaaa are missed out below because Perl does things/
 | 
						|
/differently. We know that odd, and maybe incorrect, things happen with/
 | 
						|
No match
 | 
						|
/recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
 | 
						|
No match
 | 
						|
 | 
						|
/^(a\1?){4}$/
 | 
						|
    a
 | 
						|
No match
 | 
						|
    aa
 | 
						|
No match
 | 
						|
    aaa
 | 
						|
No match
 | 
						|
    aaaaa
 | 
						|
 0: aaaaa
 | 
						|
 1: a
 | 
						|
    aaaaaaa
 | 
						|
 0: aaaaaaa
 | 
						|
 1: a
 | 
						|
    aaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaa
 | 
						|
 0: aaaaaaaaaa
 | 
						|
 1: aaaa
 | 
						|
    aaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaaaaa               
 | 
						|
No match
 | 
						|
 | 
						|
/^(a\1?)(a\1?)(a\2?)(a\3?)$/
 | 
						|
    a
 | 
						|
No match
 | 
						|
    aa
 | 
						|
No match
 | 
						|
    aaa
 | 
						|
No match
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
    aaaaa
 | 
						|
 0: aaaaa
 | 
						|
 1: a
 | 
						|
 2: aa
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
    aaaaaa
 | 
						|
 0: aaaaaa
 | 
						|
 1: a
 | 
						|
 2: aa
 | 
						|
 3: a
 | 
						|
 4: aa
 | 
						|
    aaaaaaa
 | 
						|
 0: aaaaaaa
 | 
						|
 1: a
 | 
						|
 2: aa
 | 
						|
 3: aaa
 | 
						|
 4: a
 | 
						|
    aaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaa
 | 
						|
 0: aaaaaaaaaa
 | 
						|
 1: a
 | 
						|
 2: aa
 | 
						|
 3: aaa
 | 
						|
 4: aaaa
 | 
						|
    aaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaaaaaaa               
 | 
						|
No match
 | 
						|
 | 
						|
/The following tests are taken from the Perl 5.005 test suite; some of them/
 | 
						|
/are compatible with 5.004, but I'd rather not have to sort them out./
 | 
						|
No match
 | 
						|
 | 
						|
/abc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    xabcy
 | 
						|
 0: abc
 | 
						|
    ababc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    xbc
 | 
						|
No match
 | 
						|
    axc
 | 
						|
No match
 | 
						|
    abx
 | 
						|
No match
 | 
						|
 | 
						|
/ab*c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/ab*bc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    abbc
 | 
						|
 0: abbc
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
 | 
						|
/.{1}/
 | 
						|
    abbbbc
 | 
						|
 0: a
 | 
						|
 | 
						|
/.{3,4}/
 | 
						|
    abbbbc
 | 
						|
 0: abbb
 | 
						|
 | 
						|
/ab{0,}bc/
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
 | 
						|
/ab+bc/
 | 
						|
    abbc
 | 
						|
 0: abbc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
    abq
 | 
						|
No match
 | 
						|
 | 
						|
/ab{1,}bc/
 | 
						|
 | 
						|
/ab+bc/
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
 | 
						|
/ab{1,}bc/
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
 | 
						|
/ab{1,3}bc/
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
 | 
						|
/ab{3,4}bc/
 | 
						|
    abbbbc
 | 
						|
 0: abbbbc
 | 
						|
 | 
						|
/ab{4,5}bc/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abq
 | 
						|
No match
 | 
						|
    abbbbc
 | 
						|
No match
 | 
						|
 | 
						|
/ab?bc/
 | 
						|
    abbc
 | 
						|
 0: abbc
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/ab{0,1}bc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/ab?bc/
 | 
						|
 | 
						|
/ab?c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/ab{0,1}c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/^abc$/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abbbbc
 | 
						|
No match
 | 
						|
    abcc
 | 
						|
No match
 | 
						|
 | 
						|
/^abc/
 | 
						|
    abcc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/^abc$/
 | 
						|
 | 
						|
/abc$/
 | 
						|
    aabc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aabc
 | 
						|
 0: abc
 | 
						|
    aabcd
 | 
						|
No match
 | 
						|
 | 
						|
/^/
 | 
						|
    abc
 | 
						|
 0: 
 | 
						|
 | 
						|
/$/
 | 
						|
    abc
 | 
						|
 0: 
 | 
						|
 | 
						|
/a.c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    axc
 | 
						|
 0: axc
 | 
						|
 | 
						|
/a.*c/
 | 
						|
    axyzc
 | 
						|
 0: axyzc
 | 
						|
 | 
						|
/a[bc]d/
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    axyzd
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match
 | 
						|
 | 
						|
/a[b-d]e/
 | 
						|
    ace
 | 
						|
 0: ace
 | 
						|
 | 
						|
/a[b-d]/
 | 
						|
    aac
 | 
						|
 0: ac
 | 
						|
 | 
						|
/a[-b]/
 | 
						|
    a-
 | 
						|
 0: a-
 | 
						|
 | 
						|
/a[b-]/
 | 
						|
    a-
 | 
						|
 0: a-
 | 
						|
 | 
						|
/a]/
 | 
						|
    a]
 | 
						|
 0: a]
 | 
						|
 | 
						|
/a[]]b/
 | 
						|
    a]b
 | 
						|
 0: a]b
 | 
						|
 | 
						|
/a[^bc]d/
 | 
						|
    aed
 | 
						|
 0: aed
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abd
 | 
						|
No match
 | 
						|
    abd
 | 
						|
No match
 | 
						|
 | 
						|
/a[^-b]c/
 | 
						|
    adc
 | 
						|
 0: adc
 | 
						|
 | 
						|
/a[^]b]c/
 | 
						|
    adc
 | 
						|
 0: adc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a-c
 | 
						|
 0: a-c
 | 
						|
    a]c
 | 
						|
No match
 | 
						|
 | 
						|
/\ba\b/
 | 
						|
    a-
 | 
						|
 0: a
 | 
						|
    -a
 | 
						|
 0: a
 | 
						|
    -a-
 | 
						|
 0: a
 | 
						|
 | 
						|
/\by\b/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    xy
 | 
						|
No match
 | 
						|
    yz
 | 
						|
No match
 | 
						|
    xyz
 | 
						|
No match
 | 
						|
 | 
						|
/\Ba\B/
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
    a-
 | 
						|
No match
 | 
						|
    -a
 | 
						|
No match
 | 
						|
    -a-
 | 
						|
No match
 | 
						|
 | 
						|
/\By\b/
 | 
						|
    xy
 | 
						|
 0: y
 | 
						|
 | 
						|
/\by\B/
 | 
						|
    yz
 | 
						|
 0: y
 | 
						|
 | 
						|
/\By\B/
 | 
						|
    xyz
 | 
						|
 0: y
 | 
						|
 | 
						|
/\w/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/\W/
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    *** Failers
 | 
						|
 0: *
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    a
 | 
						|
No match
 | 
						|
 | 
						|
/a\sb/
 | 
						|
    a b
 | 
						|
 0: a b
 | 
						|
 | 
						|
/a\Sb/
 | 
						|
    a-b
 | 
						|
 0: a-b
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a-b
 | 
						|
 0: a-b
 | 
						|
    a b
 | 
						|
No match
 | 
						|
 | 
						|
/\d/
 | 
						|
    1
 | 
						|
 0: 1
 | 
						|
 | 
						|
/\D/
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    *** Failers
 | 
						|
 0: *
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    1
 | 
						|
No match
 | 
						|
 | 
						|
/[\w]/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/[\W]/
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    *** Failers
 | 
						|
 0: *
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    a
 | 
						|
No match
 | 
						|
 | 
						|
/a[\s]b/
 | 
						|
    a b
 | 
						|
 0: a b
 | 
						|
 | 
						|
/a[\S]b/
 | 
						|
    a-b
 | 
						|
 0: a-b
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a-b
 | 
						|
 0: a-b
 | 
						|
    a b
 | 
						|
No match
 | 
						|
 | 
						|
/[\d]/
 | 
						|
    1
 | 
						|
 0: 1
 | 
						|
 | 
						|
/[\D]/
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    *** Failers
 | 
						|
 0: *
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    1
 | 
						|
No match
 | 
						|
 | 
						|
/ab|cd/
 | 
						|
    abc
 | 
						|
 0: ab
 | 
						|
    abcd
 | 
						|
 0: ab
 | 
						|
 | 
						|
/()ef/
 | 
						|
    def
 | 
						|
 0: ef
 | 
						|
 1: 
 | 
						|
 | 
						|
/$b/
 | 
						|
 | 
						|
/a\(b/
 | 
						|
    a(b
 | 
						|
 0: a(b
 | 
						|
 | 
						|
/a\(*b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
    a((b
 | 
						|
 0: a((b
 | 
						|
 | 
						|
/a\\b/
 | 
						|
    a\\b
 | 
						|
 0: a\b
 | 
						|
 | 
						|
/((a))/
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 | 
						|
/(a)b(c)/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: a
 | 
						|
 2: c
 | 
						|
 | 
						|
/a+b+c/
 | 
						|
    aabbabc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/a{1,}b{1,}c/
 | 
						|
    aabbabc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/a.+?c/
 | 
						|
    abcabc
 | 
						|
 0: abc
 | 
						|
 | 
						|
/(a+|b)*/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: b
 | 
						|
 | 
						|
/(a+|b){0,}/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: b
 | 
						|
 | 
						|
/(a+|b)+/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: b
 | 
						|
 | 
						|
/(a+|b){1,}/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: b
 | 
						|
 | 
						|
/(a+|b)?/
 | 
						|
    ab
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/(a+|b){0,1}/
 | 
						|
    ab
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/[^ab]*/
 | 
						|
    cde
 | 
						|
 0: cde
 | 
						|
 | 
						|
/abc/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    b
 | 
						|
No match
 | 
						|
    
 | 
						|
 | 
						|
/a*/
 | 
						|
    
 | 
						|
 | 
						|
/([abc])*d/
 | 
						|
    abbbcd
 | 
						|
 0: abbbcd
 | 
						|
 1: c
 | 
						|
 | 
						|
/([abc])*bcd/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: a
 | 
						|
 | 
						|
/a|b|c|d|e/
 | 
						|
    e
 | 
						|
 0: e
 | 
						|
 | 
						|
/(a|b|c|d|e)f/
 | 
						|
    ef
 | 
						|
 0: ef
 | 
						|
 1: e
 | 
						|
 | 
						|
/abcd*efg/
 | 
						|
    abcdefg
 | 
						|
 0: abcdefg
 | 
						|
 | 
						|
/ab*/
 | 
						|
    xabyabbbz
 | 
						|
 0: ab
 | 
						|
    xayabbbz
 | 
						|
 0: a
 | 
						|
 | 
						|
/(ab|cd)e/
 | 
						|
    abcde
 | 
						|
 0: cde
 | 
						|
 1: cd
 | 
						|
 | 
						|
/[abhgefdc]ij/
 | 
						|
    hij
 | 
						|
 0: hij
 | 
						|
 | 
						|
/^(ab|cd)e/
 | 
						|
 | 
						|
/(abc|)ef/
 | 
						|
    abcdef
 | 
						|
 0: ef
 | 
						|
 1: 
 | 
						|
 | 
						|
/(a|b)c*d/
 | 
						|
    abcd
 | 
						|
 0: bcd
 | 
						|
 1: b
 | 
						|
 | 
						|
/(ab|ab*)bc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: a
 | 
						|
 | 
						|
/a([bc]*)c*/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: bc
 | 
						|
 | 
						|
/a([bc]*)(c*d)/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: bc
 | 
						|
 2: d
 | 
						|
 | 
						|
/a([bc]+)(c*d)/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: bc
 | 
						|
 2: d
 | 
						|
 | 
						|
/a([bc]*)(c+d)/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: b
 | 
						|
 2: cd
 | 
						|
 | 
						|
/a[bcd]*dcdcde/
 | 
						|
    adcdcde
 | 
						|
 0: adcdcde
 | 
						|
 | 
						|
/a[bcd]+dcdcde/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcde
 | 
						|
No match
 | 
						|
    adcdcde
 | 
						|
No match
 | 
						|
 | 
						|
/(ab|a)b*c/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: ab
 | 
						|
 | 
						|
/((a)(b)c)(d)/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: abc
 | 
						|
 2: a
 | 
						|
 3: b
 | 
						|
 4: d
 | 
						|
 | 
						|
/[a-zA-Z_][a-zA-Z0-9_]*/
 | 
						|
    alpha
 | 
						|
 0: alpha
 | 
						|
 | 
						|
/^a(bc+|b[eh])g|.h$/
 | 
						|
    abh
 | 
						|
 0: bh
 | 
						|
 | 
						|
/(bc+d$|ef*g.|h?i(j|k))/
 | 
						|
    effgz
 | 
						|
 0: effgz
 | 
						|
 1: effgz
 | 
						|
    ij
 | 
						|
 0: ij
 | 
						|
 1: ij
 | 
						|
 2: j
 | 
						|
    reffgz
 | 
						|
 0: effgz
 | 
						|
 1: effgz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    effg
 | 
						|
No match
 | 
						|
    bcdd
 | 
						|
No match
 | 
						|
 | 
						|
/((((((((((a))))))))))/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
 5: a
 | 
						|
 6: a
 | 
						|
 7: a
 | 
						|
 8: a
 | 
						|
 9: a
 | 
						|
10: a
 | 
						|
 | 
						|
/((((((((((a))))))))))\10/
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
 5: a
 | 
						|
 6: a
 | 
						|
 7: a
 | 
						|
 8: a
 | 
						|
 9: a
 | 
						|
10: a
 | 
						|
 | 
						|
/(((((((((a)))))))))/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
 5: a
 | 
						|
 6: a
 | 
						|
 7: a
 | 
						|
 8: a
 | 
						|
 9: a
 | 
						|
 | 
						|
/multiple words of text/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aa
 | 
						|
No match
 | 
						|
    uh-uh
 | 
						|
No match
 | 
						|
 | 
						|
/multiple words/
 | 
						|
    multiple words, yeah
 | 
						|
 0: multiple words
 | 
						|
 | 
						|
/(.*)c(.*)/
 | 
						|
    abcde
 | 
						|
 0: abcde
 | 
						|
 1: ab
 | 
						|
 2: de
 | 
						|
 | 
						|
/\((.*), (.*)\)/
 | 
						|
    (a, b)
 | 
						|
 0: (a, b)
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 | 
						|
/[k]/
 | 
						|
 | 
						|
/abcd/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 | 
						|
/a(bc)d/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: bc
 | 
						|
 | 
						|
/a[-]?c/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 | 
						|
/(abc)\1/
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
 | 
						|
/([a-c]*)\1/
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
 | 
						|
/(a)|\1/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    ab
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    x
 | 
						|
No match
 | 
						|
 | 
						|
/(([a-c])b*?\2)*/
 | 
						|
    ababbbcbc
 | 
						|
 0: ababb
 | 
						|
 1: bb
 | 
						|
 2: b
 | 
						|
 | 
						|
/(([a-c])b*?\2){3}/
 | 
						|
    ababbbcbc
 | 
						|
 0: ababbbcbc
 | 
						|
 1: cbc
 | 
						|
 2: c
 | 
						|
 | 
						|
/((\3|b)\2(a)x)+/
 | 
						|
    aaaxabaxbaaxbbax
 | 
						|
 0: bbax
 | 
						|
 1: bbax
 | 
						|
 2: b
 | 
						|
 3: a
 | 
						|
 | 
						|
/((\3|b)\2(a)){2,}/
 | 
						|
    bbaababbabaaaaabbaaaabba
 | 
						|
 0: bbaaaabba
 | 
						|
 1: bba
 | 
						|
 2: b
 | 
						|
 3: a
 | 
						|
 | 
						|
/abc/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
    XABCY
 | 
						|
 0: ABC
 | 
						|
    ABABC
 | 
						|
 0: ABC
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaxabxbaxbbx
 | 
						|
No match
 | 
						|
    XBC
 | 
						|
No match
 | 
						|
    AXC
 | 
						|
No match
 | 
						|
    ABX
 | 
						|
No match
 | 
						|
 | 
						|
/ab*c/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/ab*bc/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
    ABBC
 | 
						|
 0: ABBC
 | 
						|
 | 
						|
/ab*?bc/i
 | 
						|
    ABBBBC
 | 
						|
 0: ABBBBC
 | 
						|
 | 
						|
/ab{0,}?bc/i
 | 
						|
    ABBBBC
 | 
						|
 0: ABBBBC
 | 
						|
 | 
						|
/ab+?bc/i
 | 
						|
    ABBC
 | 
						|
 0: ABBC
 | 
						|
 | 
						|
/ab+bc/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ABC
 | 
						|
No match
 | 
						|
    ABQ
 | 
						|
No match
 | 
						|
 | 
						|
/ab{1,}bc/i
 | 
						|
 | 
						|
/ab+bc/i
 | 
						|
    ABBBBC
 | 
						|
 0: ABBBBC
 | 
						|
 | 
						|
/ab{1,}?bc/i
 | 
						|
    ABBBBC
 | 
						|
 0: ABBBBC
 | 
						|
 | 
						|
/ab{1,3}?bc/i
 | 
						|
    ABBBBC
 | 
						|
 0: ABBBBC
 | 
						|
 | 
						|
/ab{3,4}?bc/i
 | 
						|
    ABBBBC
 | 
						|
 0: ABBBBC
 | 
						|
 | 
						|
/ab{4,5}?bc/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ABQ
 | 
						|
No match
 | 
						|
    ABBBBC
 | 
						|
No match
 | 
						|
 | 
						|
/ab??bc/i
 | 
						|
    ABBC
 | 
						|
 0: ABBC
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/ab{0,1}?bc/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/ab??bc/i
 | 
						|
 | 
						|
/ab??c/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/ab{0,1}?c/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/^abc$/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ABBBBC
 | 
						|
No match
 | 
						|
    ABCC
 | 
						|
No match
 | 
						|
 | 
						|
/^abc/i
 | 
						|
    ABCC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/^abc$/i
 | 
						|
 | 
						|
/abc$/i
 | 
						|
    AABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/^/i
 | 
						|
    ABC
 | 
						|
 0: 
 | 
						|
 | 
						|
/$/i
 | 
						|
    ABC
 | 
						|
 0: 
 | 
						|
 | 
						|
/a.c/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
    AXC
 | 
						|
 0: AXC
 | 
						|
 | 
						|
/a.*?c/i
 | 
						|
    AXYZC
 | 
						|
 0: AXYZC
 | 
						|
 | 
						|
/a.*c/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    AABC
 | 
						|
 0: AABC
 | 
						|
    AXYZD
 | 
						|
No match
 | 
						|
 | 
						|
/a[bc]d/i
 | 
						|
    ABD
 | 
						|
 0: ABD
 | 
						|
 | 
						|
/a[b-d]e/i
 | 
						|
    ACE
 | 
						|
 0: ACE
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ABC
 | 
						|
No match
 | 
						|
    ABD
 | 
						|
No match
 | 
						|
 | 
						|
/a[b-d]/i
 | 
						|
    AAC
 | 
						|
 0: AC
 | 
						|
 | 
						|
/a[-b]/i
 | 
						|
    A-
 | 
						|
 0: A-
 | 
						|
 | 
						|
/a[b-]/i
 | 
						|
    A-
 | 
						|
 0: A-
 | 
						|
 | 
						|
/a]/i
 | 
						|
    A]
 | 
						|
 0: A]
 | 
						|
 | 
						|
/a[]]b/i
 | 
						|
    A]B
 | 
						|
 0: A]B
 | 
						|
 | 
						|
/a[^bc]d/i
 | 
						|
    AED
 | 
						|
 0: AED
 | 
						|
 | 
						|
/a[^-b]c/i
 | 
						|
    ADC
 | 
						|
 0: ADC
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ABD
 | 
						|
No match
 | 
						|
    A-C
 | 
						|
No match
 | 
						|
 | 
						|
/a[^]b]c/i
 | 
						|
    ADC
 | 
						|
 0: ADC
 | 
						|
 | 
						|
/ab|cd/i
 | 
						|
    ABC
 | 
						|
 0: AB
 | 
						|
    ABCD
 | 
						|
 0: AB
 | 
						|
 | 
						|
/()ef/i
 | 
						|
    DEF
 | 
						|
 0: EF
 | 
						|
 1: 
 | 
						|
 | 
						|
/$b/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    A]C
 | 
						|
No match
 | 
						|
    B
 | 
						|
No match
 | 
						|
 | 
						|
/a\(b/i
 | 
						|
    A(B
 | 
						|
 0: A(B
 | 
						|
 | 
						|
/a\(*b/i
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
    A((B
 | 
						|
 0: A((B
 | 
						|
 | 
						|
/a\\b/i
 | 
						|
    A\\b
 | 
						|
 0: A\b
 | 
						|
    a\\B 
 | 
						|
 0: a\B
 | 
						|
 | 
						|
/((a))/i
 | 
						|
    ABC
 | 
						|
 0: A
 | 
						|
 1: A
 | 
						|
 2: A
 | 
						|
 | 
						|
/(a)b(c)/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 1: A
 | 
						|
 2: C
 | 
						|
 | 
						|
/a+b+c/i
 | 
						|
    AABBABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/a{1,}b{1,}c/i
 | 
						|
    AABBABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/a.+?c/i
 | 
						|
    ABCABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/a.*?c/i
 | 
						|
    ABCABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/a.{0,5}?c/i
 | 
						|
    ABCABC
 | 
						|
 0: ABC
 | 
						|
 | 
						|
/(a+|b)*/i
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: B
 | 
						|
 | 
						|
/(a+|b){0,}/i
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: B
 | 
						|
 | 
						|
/(a+|b)+/i
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: B
 | 
						|
 | 
						|
/(a+|b){1,}/i
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: B
 | 
						|
 | 
						|
/(a+|b)?/i
 | 
						|
    AB
 | 
						|
 0: A
 | 
						|
 1: A
 | 
						|
 | 
						|
/(a+|b){0,1}/i
 | 
						|
    AB
 | 
						|
 0: A
 | 
						|
 1: A
 | 
						|
 | 
						|
/(a+|b){0,1}?/i
 | 
						|
    AB
 | 
						|
 0: 
 | 
						|
 | 
						|
/[^ab]*/i
 | 
						|
    CDE
 | 
						|
 0: CDE
 | 
						|
 | 
						|
/abc/i
 | 
						|
 | 
						|
/a*/i
 | 
						|
    
 | 
						|
 | 
						|
/([abc])*d/i
 | 
						|
    ABBBCD
 | 
						|
 0: ABBBCD
 | 
						|
 1: C
 | 
						|
 | 
						|
/([abc])*bcd/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 1: A
 | 
						|
 | 
						|
/a|b|c|d|e/i
 | 
						|
    E
 | 
						|
 0: E
 | 
						|
 | 
						|
/(a|b|c|d|e)f/i
 | 
						|
    EF
 | 
						|
 0: EF
 | 
						|
 1: E
 | 
						|
 | 
						|
/abcd*efg/i
 | 
						|
    ABCDEFG
 | 
						|
 0: ABCDEFG
 | 
						|
 | 
						|
/ab*/i
 | 
						|
    XABYABBBZ
 | 
						|
 0: AB
 | 
						|
    XAYABBBZ
 | 
						|
 0: A
 | 
						|
 | 
						|
/(ab|cd)e/i
 | 
						|
    ABCDE
 | 
						|
 0: CDE
 | 
						|
 1: CD
 | 
						|
 | 
						|
/[abhgefdc]ij/i
 | 
						|
    HIJ
 | 
						|
 0: HIJ
 | 
						|
 | 
						|
/^(ab|cd)e/i
 | 
						|
    ABCDE
 | 
						|
No match
 | 
						|
 | 
						|
/(abc|)ef/i
 | 
						|
    ABCDEF
 | 
						|
 0: EF
 | 
						|
 1: 
 | 
						|
 | 
						|
/(a|b)c*d/i
 | 
						|
    ABCD
 | 
						|
 0: BCD
 | 
						|
 1: B
 | 
						|
 | 
						|
/(ab|ab*)bc/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 1: A
 | 
						|
 | 
						|
/a([bc]*)c*/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 1: BC
 | 
						|
 | 
						|
/a([bc]*)(c*d)/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 1: BC
 | 
						|
 2: D
 | 
						|
 | 
						|
/a([bc]+)(c*d)/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 1: BC
 | 
						|
 2: D
 | 
						|
 | 
						|
/a([bc]*)(c+d)/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 1: B
 | 
						|
 2: CD
 | 
						|
 | 
						|
/a[bcd]*dcdcde/i
 | 
						|
    ADCDCDE
 | 
						|
 0: ADCDCDE
 | 
						|
 | 
						|
/a[bcd]+dcdcde/i
 | 
						|
 | 
						|
/(ab|a)b*c/i
 | 
						|
    ABC
 | 
						|
 0: ABC
 | 
						|
 1: AB
 | 
						|
 | 
						|
/((a)(b)c)(d)/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 1: ABC
 | 
						|
 2: A
 | 
						|
 3: B
 | 
						|
 4: D
 | 
						|
 | 
						|
/[a-zA-Z_][a-zA-Z0-9_]*/i
 | 
						|
    ALPHA
 | 
						|
 0: ALPHA
 | 
						|
 | 
						|
/^a(bc+|b[eh])g|.h$/i
 | 
						|
    ABH
 | 
						|
 0: BH
 | 
						|
 | 
						|
/(bc+d$|ef*g.|h?i(j|k))/i
 | 
						|
    EFFGZ
 | 
						|
 0: EFFGZ
 | 
						|
 1: EFFGZ
 | 
						|
    IJ
 | 
						|
 0: IJ
 | 
						|
 1: IJ
 | 
						|
 2: J
 | 
						|
    REFFGZ
 | 
						|
 0: EFFGZ
 | 
						|
 1: EFFGZ
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ADCDCDE
 | 
						|
No match
 | 
						|
    EFFG
 | 
						|
No match
 | 
						|
    BCDD
 | 
						|
No match
 | 
						|
 | 
						|
/((((((((((a))))))))))/i
 | 
						|
    A
 | 
						|
 0: A
 | 
						|
 1: A
 | 
						|
 2: A
 | 
						|
 3: A
 | 
						|
 4: A
 | 
						|
 5: A
 | 
						|
 6: A
 | 
						|
 7: A
 | 
						|
 8: A
 | 
						|
 9: A
 | 
						|
10: A
 | 
						|
 | 
						|
/((((((((((a))))))))))\10/i
 | 
						|
    AA
 | 
						|
 0: AA
 | 
						|
 1: A
 | 
						|
 2: A
 | 
						|
 3: A
 | 
						|
 4: A
 | 
						|
 5: A
 | 
						|
 6: A
 | 
						|
 7: A
 | 
						|
 8: A
 | 
						|
 9: A
 | 
						|
10: A
 | 
						|
 | 
						|
/(((((((((a)))))))))/i
 | 
						|
    A
 | 
						|
 0: A
 | 
						|
 1: A
 | 
						|
 2: A
 | 
						|
 3: A
 | 
						|
 4: A
 | 
						|
 5: A
 | 
						|
 6: A
 | 
						|
 7: A
 | 
						|
 8: A
 | 
						|
 9: A
 | 
						|
 | 
						|
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
 | 
						|
    A
 | 
						|
 0: A
 | 
						|
 1: A
 | 
						|
 | 
						|
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
 | 
						|
/multiple words of text/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    AA
 | 
						|
No match
 | 
						|
    UH-UH
 | 
						|
No match
 | 
						|
 | 
						|
/multiple words/i
 | 
						|
    MULTIPLE WORDS, YEAH
 | 
						|
 0: MULTIPLE WORDS
 | 
						|
 | 
						|
/(.*)c(.*)/i
 | 
						|
    ABCDE
 | 
						|
 0: ABCDE
 | 
						|
 1: AB
 | 
						|
 2: DE
 | 
						|
 | 
						|
/\((.*), (.*)\)/i
 | 
						|
    (A, B)
 | 
						|
 0: (A, B)
 | 
						|
 1: A
 | 
						|
 2: B
 | 
						|
 | 
						|
/[k]/i
 | 
						|
 | 
						|
/abcd/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 | 
						|
/a(bc)d/i
 | 
						|
    ABCD
 | 
						|
 0: ABCD
 | 
						|
 1: BC
 | 
						|
 | 
						|
/a[-]?c/i
 | 
						|
    AC
 | 
						|
 0: AC
 | 
						|
 | 
						|
/(abc)\1/i
 | 
						|
    ABCABC
 | 
						|
 0: ABCABC
 | 
						|
 1: ABC
 | 
						|
 | 
						|
/([a-c]*)\1/i
 | 
						|
    ABCABC
 | 
						|
 0: ABCABC
 | 
						|
 1: ABC
 | 
						|
 | 
						|
/a(?!b)./
 | 
						|
    abad
 | 
						|
 0: ad
 | 
						|
 | 
						|
/a(?=d)./
 | 
						|
    abad
 | 
						|
 0: ad
 | 
						|
 | 
						|
/a(?=c|d)./
 | 
						|
    abad
 | 
						|
 0: ad
 | 
						|
 | 
						|
/a(?:b|c|d)(.)/
 | 
						|
    ace
 | 
						|
 0: ace
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d)*(.)/
 | 
						|
    ace
 | 
						|
 0: ace
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d)+?(.)/
 | 
						|
    ace
 | 
						|
 0: ace
 | 
						|
 1: e
 | 
						|
    acdbcdbe
 | 
						|
 0: acd
 | 
						|
 1: d
 | 
						|
 | 
						|
/a(?:b|c|d)+(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdbe
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d){2}(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdb
 | 
						|
 1: b
 | 
						|
 | 
						|
/a(?:b|c|d){4,5}(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdb
 | 
						|
 1: b
 | 
						|
 | 
						|
/a(?:b|c|d){4,5}?(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcd
 | 
						|
 1: d
 | 
						|
 | 
						|
/((foo)|(bar))*/
 | 
						|
    foobar
 | 
						|
 0: foobar
 | 
						|
 1: bar
 | 
						|
 2: foo
 | 
						|
 3: bar
 | 
						|
 | 
						|
/a(?:b|c|d){6,7}(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdbe
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d){6,7}?(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdbe
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d){5,6}(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdbe
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d){5,6}?(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdb
 | 
						|
 1: b
 | 
						|
 | 
						|
/a(?:b|c|d){5,7}(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdbe
 | 
						|
 1: e
 | 
						|
 | 
						|
/a(?:b|c|d){5,7}?(.)/
 | 
						|
    acdbcdbe
 | 
						|
 0: acdbcdb
 | 
						|
 1: b
 | 
						|
 | 
						|
/a(?:b|(c|e){1,2}?|d)+?(.)/
 | 
						|
    ace
 | 
						|
 0: ace
 | 
						|
 1: c
 | 
						|
 2: e
 | 
						|
 | 
						|
/^(.+)?B/
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: A
 | 
						|
 | 
						|
/^([^a-z])|(\^)$/
 | 
						|
    .
 | 
						|
 0: .
 | 
						|
 1: .
 | 
						|
 | 
						|
/^[<>]&/
 | 
						|
    <&OUT
 | 
						|
 0: <&
 | 
						|
 | 
						|
/^(a\1?){4}$/
 | 
						|
    aaaaaaaaaa
 | 
						|
 0: aaaaaaaaaa
 | 
						|
 1: aaaa
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    AB
 | 
						|
No match
 | 
						|
    aaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaa
 | 
						|
No match
 | 
						|
 | 
						|
/^(a(?(1)\1)){4}$/
 | 
						|
    aaaaaaaaaa
 | 
						|
 0: aaaaaaaaaa
 | 
						|
 1: aaaa
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaaaaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaaaa
 | 
						|
No match
 | 
						|
 | 
						|
/(?:(f)(o)(o)|(b)(a)(r))*/
 | 
						|
    foobar
 | 
						|
 0: foobar
 | 
						|
 1: f
 | 
						|
 2: o
 | 
						|
 3: o
 | 
						|
 4: b
 | 
						|
 5: a
 | 
						|
 6: r
 | 
						|
 | 
						|
/(?<=a)b/
 | 
						|
    ab
 | 
						|
 0: b
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    cb
 | 
						|
No match
 | 
						|
    b
 | 
						|
No match
 | 
						|
 | 
						|
/(?<!c)b/
 | 
						|
    ab
 | 
						|
 0: b
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 | 
						|
/(?:..)*a/
 | 
						|
    aba
 | 
						|
 0: aba
 | 
						|
 | 
						|
/(?:..)*?a/
 | 
						|
    aba
 | 
						|
 0: a
 | 
						|
 | 
						|
/^(?:b|a(?=(.)))*\1/
 | 
						|
    abc
 | 
						|
 0: ab
 | 
						|
 1: b
 | 
						|
 | 
						|
/^(){3,5}/
 | 
						|
    abc
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
/^(a+)*ax/
 | 
						|
    aax
 | 
						|
 0: aax
 | 
						|
 1: a
 | 
						|
 | 
						|
/^((a|b)+)*ax/
 | 
						|
    aax
 | 
						|
 0: aax
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 | 
						|
/^((a|bc)+)*ax/
 | 
						|
    aax
 | 
						|
 0: aax
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 | 
						|
/(a|x)*ab/
 | 
						|
    cab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(a)*ab/
 | 
						|
    cab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(?:(?i)a)b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/((?i)a)b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?:(?i)a)b/
 | 
						|
    Ab
 | 
						|
 0: Ab
 | 
						|
 | 
						|
/((?i)a)b/
 | 
						|
    Ab
 | 
						|
 0: Ab
 | 
						|
 1: A
 | 
						|
 | 
						|
/(?:(?i)a)b/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    cb
 | 
						|
No match
 | 
						|
    aB
 | 
						|
No match
 | 
						|
 | 
						|
/((?i)a)b/
 | 
						|
 | 
						|
/(?i:a)b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/((?i:a))b/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?i:a)b/
 | 
						|
    Ab
 | 
						|
 0: Ab
 | 
						|
 | 
						|
/((?i:a))b/
 | 
						|
    Ab
 | 
						|
 0: Ab
 | 
						|
 1: A
 | 
						|
 | 
						|
/(?i:a)b/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aB
 | 
						|
No match
 | 
						|
    aB
 | 
						|
No match
 | 
						|
 | 
						|
/((?i:a))b/
 | 
						|
 | 
						|
/(?:(?-i)a)b/i
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/((?-i)a)b/i
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?:(?-i)a)b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 | 
						|
/((?-i)a)b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?:(?-i)a)b/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
    Ab
 | 
						|
No match
 | 
						|
 | 
						|
/((?-i)a)b/i
 | 
						|
 | 
						|
/(?:(?-i)a)b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 | 
						|
/((?-i)a)b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?:(?-i)a)b/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Ab
 | 
						|
No match
 | 
						|
    AB
 | 
						|
No match
 | 
						|
 | 
						|
/((?-i)a)b/i
 | 
						|
 | 
						|
/(?-i:a)b/i
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/((?-i:a))b/i
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?-i:a)b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 | 
						|
/((?-i:a))b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?-i:a)b/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    AB
 | 
						|
No match
 | 
						|
    Ab
 | 
						|
No match
 | 
						|
 | 
						|
/((?-i:a))b/i
 | 
						|
 | 
						|
/(?-i:a)b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 | 
						|
/((?-i:a))b/i
 | 
						|
    aB
 | 
						|
 0: aB
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?-i:a)b/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Ab
 | 
						|
No match
 | 
						|
    AB
 | 
						|
No match
 | 
						|
 | 
						|
/((?-i:a))b/i
 | 
						|
 | 
						|
/((?-i:a.))b/i
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    AB
 | 
						|
No match
 | 
						|
    a\nB
 | 
						|
No match
 | 
						|
 | 
						|
/((?s-i:a.))b/i
 | 
						|
    a\nB
 | 
						|
 0: a\x0aB
 | 
						|
 1: a\x0a
 | 
						|
 | 
						|
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
 | 
						|
    cabbbb
 | 
						|
 0: cabbbb
 | 
						|
 | 
						|
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
 | 
						|
    caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 | 
						|
 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 | 
						|
 | 
						|
/(ab)\d\1/i
 | 
						|
    Ab4ab
 | 
						|
 0: Ab4ab
 | 
						|
 1: Ab
 | 
						|
    ab4Ab
 | 
						|
 0: ab4Ab
 | 
						|
 1: ab
 | 
						|
 | 
						|
/foo\w*\d{4}baz/
 | 
						|
    foobar1234baz
 | 
						|
 0: foobar1234baz
 | 
						|
 | 
						|
/x(~~)*(?:(?:F)?)?/
 | 
						|
    x~~
 | 
						|
 0: x~~
 | 
						|
 1: ~~
 | 
						|
 | 
						|
/^a(?#xxx){3}c/
 | 
						|
    aaac
 | 
						|
 0: aaac
 | 
						|
 | 
						|
/^a (?#xxx) (?#yyy) {3}c/x
 | 
						|
    aaac
 | 
						|
 0: aaac
 | 
						|
 | 
						|
/(?<![cd])b/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    B\nB
 | 
						|
No match
 | 
						|
    dbcb
 | 
						|
No match
 | 
						|
 | 
						|
/(?<![cd])[ab]/
 | 
						|
    dbaacb
 | 
						|
 0: a
 | 
						|
 | 
						|
/(?<!(c|d))b/
 | 
						|
 | 
						|
/(?<!(c|d))[ab]/
 | 
						|
    dbaacb
 | 
						|
 0: a
 | 
						|
 | 
						|
/(?<!cd)[ab]/
 | 
						|
    cdaccb
 | 
						|
 0: b
 | 
						|
 | 
						|
/^(?:a?b?)*$/
 | 
						|
    \
 | 
						|
 0: 
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
    aaa   
 | 
						|
 0: aaa
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    dbcb
 | 
						|
No match
 | 
						|
    a--
 | 
						|
No match
 | 
						|
    aa-- 
 | 
						|
No match
 | 
						|
 | 
						|
/((?s)^a(.))((?m)^b$)/
 | 
						|
    a\nb\nc\n
 | 
						|
 0: a\x0ab
 | 
						|
 1: a\x0a
 | 
						|
 2: \x0a
 | 
						|
 3: b
 | 
						|
 | 
						|
/((?m)^b$)/
 | 
						|
    a\nb\nc\n
 | 
						|
 0: b
 | 
						|
 1: b
 | 
						|
 | 
						|
/(?m)^b/
 | 
						|
    a\nb\n
 | 
						|
 0: b
 | 
						|
 | 
						|
/(?m)^(b)/
 | 
						|
    a\nb\n
 | 
						|
 0: b
 | 
						|
 1: b
 | 
						|
 | 
						|
/((?m)^b)/
 | 
						|
    a\nb\n
 | 
						|
 0: b
 | 
						|
 1: b
 | 
						|
 | 
						|
/\n((?m)^b)/
 | 
						|
    a\nb\n
 | 
						|
 0: \x0ab
 | 
						|
 1: b
 | 
						|
 | 
						|
/((?s).)c(?!.)/
 | 
						|
    a\nb\nc\n
 | 
						|
 0: \x0ac
 | 
						|
 1: \x0a
 | 
						|
    a\nb\nc\n
 | 
						|
 0: \x0ac
 | 
						|
 1: \x0a
 | 
						|
 | 
						|
/((?s)b.)c(?!.)/
 | 
						|
    a\nb\nc\n
 | 
						|
 0: b\x0ac
 | 
						|
 1: b\x0a
 | 
						|
    a\nb\nc\n
 | 
						|
 0: b\x0ac
 | 
						|
 1: b\x0a
 | 
						|
 | 
						|
/^b/
 | 
						|
 | 
						|
/()^b/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a\nb\nc\n
 | 
						|
No match
 | 
						|
    a\nb\nc\n
 | 
						|
No match
 | 
						|
 | 
						|
/((?m)^b)/
 | 
						|
    a\nb\nc\n
 | 
						|
 0: b
 | 
						|
 1: b
 | 
						|
 | 
						|
/(x)?(?(1)a|b)/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a
 | 
						|
No match
 | 
						|
    a
 | 
						|
No match
 | 
						|
 | 
						|
/(x)?(?(1)b|a)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/()?(?(1)b|a)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/()(?(1)b|a)/
 | 
						|
 | 
						|
/()?(?(1)a|b)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: 
 | 
						|
 | 
						|
/^(\()?blah(?(1)(\)))$/
 | 
						|
    (blah)
 | 
						|
 0: (blah)
 | 
						|
 1: (
 | 
						|
 2: )
 | 
						|
    blah
 | 
						|
 0: blah
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a
 | 
						|
No match
 | 
						|
    blah)
 | 
						|
No match
 | 
						|
    (blah
 | 
						|
No match
 | 
						|
 | 
						|
/^(\(+)?blah(?(1)(\)))$/
 | 
						|
    (blah)
 | 
						|
 0: (blah)
 | 
						|
 1: (
 | 
						|
 2: )
 | 
						|
    blah
 | 
						|
 0: blah
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    blah)
 | 
						|
No match
 | 
						|
    (blah
 | 
						|
No match
 | 
						|
 | 
						|
/(?(?!a)a|b)/
 | 
						|
 | 
						|
/(?(?!a)b|a)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/(?(?=a)b|a)/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a
 | 
						|
No match
 | 
						|
    a
 | 
						|
No match
 | 
						|
 | 
						|
/(?(?=a)a|b)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/(?=(a+?))(\1ab)/
 | 
						|
    aaab
 | 
						|
 0: aab
 | 
						|
 1: a
 | 
						|
 2: aab
 | 
						|
 | 
						|
/^(?=(a+?))\1ab/
 | 
						|
 | 
						|
/(\w+:)+/
 | 
						|
    one:
 | 
						|
 0: one:
 | 
						|
 1: one:
 | 
						|
 | 
						|
/$(?<=^(a))/
 | 
						|
    a
 | 
						|
 0: 
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?=(a+?))(\1ab)/
 | 
						|
    aaab
 | 
						|
 0: aab
 | 
						|
 1: a
 | 
						|
 2: aab
 | 
						|
 | 
						|
/^(?=(a+?))\1ab/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaab
 | 
						|
No match
 | 
						|
    aaab
 | 
						|
No match
 | 
						|
 | 
						|
/([\w:]+::)?(\w+)$/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: <unset>
 | 
						|
 2: abcd
 | 
						|
    xy:z:::abcd
 | 
						|
 0: xy:z:::abcd
 | 
						|
 1: xy:z:::
 | 
						|
 2: abcd
 | 
						|
 | 
						|
/^[^bcd]*(c+)/
 | 
						|
    aexycd
 | 
						|
 0: aexyc
 | 
						|
 1: c
 | 
						|
 | 
						|
/(a*)b+/
 | 
						|
    caab
 | 
						|
 0: aab
 | 
						|
 1: aa
 | 
						|
 | 
						|
/([\w:]+::)?(\w+)$/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: <unset>
 | 
						|
 2: abcd
 | 
						|
    xy:z:::abcd
 | 
						|
 0: xy:z:::abcd
 | 
						|
 1: xy:z:::
 | 
						|
 2: abcd
 | 
						|
    *** Failers
 | 
						|
 0: Failers
 | 
						|
 1: <unset>
 | 
						|
 2: Failers
 | 
						|
    abcd:
 | 
						|
No match
 | 
						|
    abcd:
 | 
						|
No match
 | 
						|
 | 
						|
/^[^bcd]*(c+)/
 | 
						|
    aexycd
 | 
						|
 0: aexyc
 | 
						|
 1: c
 | 
						|
 | 
						|
/(>a+)ab/
 | 
						|
 | 
						|
/(?>a+)b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 | 
						|
/([[:]+)/
 | 
						|
    a:[b]:
 | 
						|
 0: :[
 | 
						|
 1: :[
 | 
						|
 | 
						|
/([[=]+)/
 | 
						|
    a=[b]=
 | 
						|
 0: =[
 | 
						|
 1: =[
 | 
						|
 | 
						|
/([[.]+)/
 | 
						|
    a.[b].
 | 
						|
 0: .[
 | 
						|
 1: .[
 | 
						|
 | 
						|
/((?>a+)b)/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: aaab
 | 
						|
 | 
						|
/(?>(a+))b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: aaa
 | 
						|
 | 
						|
/((?>[^()]+)|\([^()]*\))+/
 | 
						|
    ((abc(ade)ufh()()x
 | 
						|
 0: abc(ade)ufh()()x
 | 
						|
 1: x
 | 
						|
 | 
						|
/a\Z/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    aaab
 | 
						|
No match
 | 
						|
    a\nb\n
 | 
						|
No match
 | 
						|
 | 
						|
/b\Z/
 | 
						|
    a\nb\n
 | 
						|
 0: b
 | 
						|
 | 
						|
/b\z/
 | 
						|
 | 
						|
/b\Z/
 | 
						|
    a\nb
 | 
						|
 0: b
 | 
						|
 | 
						|
/b\z/
 | 
						|
    a\nb
 | 
						|
 0: b
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    
 | 
						|
/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: 
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: 
 | 
						|
    a-b
 | 
						|
 0: a-b
 | 
						|
 1: 
 | 
						|
    0-9 
 | 
						|
 0: 0-9
 | 
						|
 1: 
 | 
						|
    a.b
 | 
						|
 0: a.b
 | 
						|
 1: 
 | 
						|
    5.6.7  
 | 
						|
 0: 5.6.7
 | 
						|
 1: 
 | 
						|
    the.quick.brown.fox
 | 
						|
 0: the.quick.brown.fox
 | 
						|
 1: 
 | 
						|
    a100.b200.300c  
 | 
						|
 0: a100.b200.300c
 | 
						|
 1: 
 | 
						|
    12-ab.1245 
 | 
						|
 0: 12-ab.1245
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    \
 | 
						|
No match
 | 
						|
    .a
 | 
						|
No match
 | 
						|
    -a
 | 
						|
No match
 | 
						|
    a-
 | 
						|
No match
 | 
						|
    a.  
 | 
						|
No match
 | 
						|
    a_b 
 | 
						|
No match
 | 
						|
    a.-
 | 
						|
No match
 | 
						|
    a..  
 | 
						|
No match
 | 
						|
    ab..bc 
 | 
						|
No match
 | 
						|
    the.quick.brown.fox-
 | 
						|
No match
 | 
						|
    the.quick.brown.fox.
 | 
						|
No match
 | 
						|
    the.quick.brown.fox_
 | 
						|
No match
 | 
						|
    the.quick.brown.fox+       
 | 
						|
No match
 | 
						|
 | 
						|
/(?>.*)(?<=(abcd|wxyz))/
 | 
						|
    alphabetabcd
 | 
						|
 0: alphabetabcd
 | 
						|
 1: abcd
 | 
						|
    endingwxyz
 | 
						|
 0: endingwxyz
 | 
						|
 1: wxyz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a rather long string that doesn't end with one of them
 | 
						|
No match
 | 
						|
 | 
						|
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
 | 
						|
    word cat dog elephant mussel cow horse canary baboon snake shark otherword
 | 
						|
 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
 | 
						|
    word cat dog elephant mussel cow horse canary baboon snake shark
 | 
						|
No match
 | 
						|
  
 | 
						|
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
 | 
						|
    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
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=\d{3}(?!999))foo/
 | 
						|
    999foo
 | 
						|
 0: foo
 | 
						|
    123999foo 
 | 
						|
 0: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123abcfoo
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?<=(?!...999)\d{3})foo/
 | 
						|
    999foo
 | 
						|
 0: foo
 | 
						|
    123999foo 
 | 
						|
 0: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123abcfoo
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=\d{3}(?!999)...)foo/
 | 
						|
    123abcfoo
 | 
						|
 0: foo
 | 
						|
    123456foo 
 | 
						|
 0: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123999foo  
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?<=\d{3}...)(?<!999)foo/
 | 
						|
    123abcfoo   
 | 
						|
 0: foo
 | 
						|
    123456foo 
 | 
						|
 0: foo
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    123999foo  
 | 
						|
No match
 | 
						|
 | 
						|
/<a[\s]+href[\s]*=[\s]*          # find <a href=
 | 
						|
 ([\"\'])?                       # find single or double quote
 | 
						|
 (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
 | 
						|
                                 # quote, otherwise match up to next space
 | 
						|
/isx
 | 
						|
    <a href=abcd xyz
 | 
						|
 0: <a href=abcd
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: abcd
 | 
						|
    <a href=\"abcd xyz pqr\" cats
 | 
						|
 0: <a href="abcd xyz pqr"
 | 
						|
 1: "
 | 
						|
 2: abcd xyz pqr
 | 
						|
    <a href=\'abcd xyz pqr\' cats
 | 
						|
 0: <a href='abcd xyz pqr'
 | 
						|
 1: '
 | 
						|
 2: abcd xyz pqr
 | 
						|
 | 
						|
/<a\s+href\s*=\s*                # find <a href=
 | 
						|
 (["'])?                         # find single or double quote
 | 
						|
 (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
 | 
						|
                                 # quote, otherwise match up to next space
 | 
						|
/isx
 | 
						|
    <a href=abcd xyz
 | 
						|
 0: <a href=abcd
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: abcd
 | 
						|
    <a href=\"abcd xyz pqr\" cats
 | 
						|
 0: <a href="abcd xyz pqr"
 | 
						|
 1: "
 | 
						|
 2: abcd xyz pqr
 | 
						|
    <a href       =       \'abcd xyz pqr\' cats
 | 
						|
 0: <a href       =       'abcd xyz pqr'
 | 
						|
 1: '
 | 
						|
 2: abcd xyz pqr
 | 
						|
 | 
						|
/<a\s+href(?>\s*)=(?>\s*)        # find <a href=
 | 
						|
 (["'])?                         # find single or double quote
 | 
						|
 (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
 | 
						|
                                 # quote, otherwise match up to next space
 | 
						|
/isx
 | 
						|
    <a href=abcd xyz
 | 
						|
 0: <a href=abcd
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: abcd
 | 
						|
    <a href=\"abcd xyz pqr\" cats
 | 
						|
 0: <a href="abcd xyz pqr"
 | 
						|
 1: "
 | 
						|
 2: abcd xyz pqr
 | 
						|
    <a href       =       \'abcd xyz pqr\' cats
 | 
						|
 0: <a href       =       'abcd xyz pqr'
 | 
						|
 1: '
 | 
						|
 2: abcd xyz pqr
 | 
						|
 | 
						|
/((Z)+|A)*/
 | 
						|
    ZABCDEFG
 | 
						|
 0: ZA
 | 
						|
 1: A
 | 
						|
 2: Z
 | 
						|
 | 
						|
/(Z()|A)*/
 | 
						|
    ZABCDEFG
 | 
						|
 0: ZA
 | 
						|
 1: A
 | 
						|
 2: 
 | 
						|
 | 
						|
/(Z(())|A)*/
 | 
						|
    ZABCDEFG
 | 
						|
 0: ZA
 | 
						|
 1: A
 | 
						|
 2: 
 | 
						|
 3: 
 | 
						|
 | 
						|
/((?>Z)+|A)*/
 | 
						|
    ZABCDEFG
 | 
						|
 0: ZA
 | 
						|
 1: A
 | 
						|
 | 
						|
/((?>)+|A)*/
 | 
						|
    ZABCDEFG
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
/a*/g
 | 
						|
    abbab
 | 
						|
 0: a
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
 0: a
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
 | 
						|
/^[\d-a]/
 | 
						|
    abcde
 | 
						|
 0: a
 | 
						|
    -things
 | 
						|
 0: -
 | 
						|
    0digit
 | 
						|
 0: 0
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    bcdef    
 | 
						|
No match
 | 
						|
    
 | 
						|
/[[:space:]]+/
 | 
						|
    > \x09\x0a\x0c\x0d\x0b<
 | 
						|
 0:  \x09\x0a\x0c\x0d\x0b
 | 
						|
     
 | 
						|
/[[:blank:]]+/
 | 
						|
    > \x09\x0a\x0c\x0d\x0b<
 | 
						|
 0:  \x09
 | 
						|
     
 | 
						|
/[\s]+/
 | 
						|
    > \x09\x0a\x0c\x0d\x0b<
 | 
						|
 0:  \x09\x0a\x0c\x0d\x0b
 | 
						|
     
 | 
						|
/\s+/
 | 
						|
    > \x09\x0a\x0c\x0d\x0b<
 | 
						|
 0:  \x09\x0a\x0c\x0d\x0b
 | 
						|
     
 | 
						|
/ab/x
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(?!\A)x/m
 | 
						|
  a\nxb\n
 | 
						|
 0: x
 | 
						|
 | 
						|
/(?!^)x/m
 | 
						|
  a\nxb\n
 | 
						|
No match
 | 
						|
 | 
						|
/abc\Qabc\Eabc/
 | 
						|
    abcabcabc
 | 
						|
 0: abcabcabc
 | 
						|
    
 | 
						|
/abc\Q(*+|\Eabc/
 | 
						|
    abc(*+|abc 
 | 
						|
 0: abc(*+|abc
 | 
						|
 | 
						|
/   abc\Q abc\Eabc/x
 | 
						|
    abc abcabc
 | 
						|
 0: abc abcabc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcabcabc  
 | 
						|
No match
 | 
						|
    
 | 
						|
/abc#comment
 | 
						|
    \Q#not comment
 | 
						|
    literal\E/x
 | 
						|
    abc#not comment\n    literal     
 | 
						|
 0: abc#not comment\x0a    literal
 | 
						|
 | 
						|
/abc#comment
 | 
						|
    \Q#not comment
 | 
						|
    literal/x
 | 
						|
    abc#not comment\n    literal     
 | 
						|
 0: abc#not comment\x0a    literal
 | 
						|
 | 
						|
/abc#comment
 | 
						|
    \Q#not comment
 | 
						|
    literal\E #more comment
 | 
						|
    /x
 | 
						|
    abc#not comment\n    literal     
 | 
						|
 0: abc#not comment\x0a    literal
 | 
						|
 | 
						|
/abc#comment
 | 
						|
    \Q#not comment
 | 
						|
    literal\E #more comment/x
 | 
						|
    abc#not comment\n    literal     
 | 
						|
 0: abc#not comment\x0a    literal
 | 
						|
 | 
						|
/\Qabc\$xyz\E/
 | 
						|
    abc\\\$xyz
 | 
						|
 0: abc\$xyz
 | 
						|
 | 
						|
/\Qabc\E\$\Qxyz\E/
 | 
						|
    abc\$xyz
 | 
						|
 0: abc$xyz
 | 
						|
 | 
						|
/\Gabc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    xyzabc  
 | 
						|
No match
 | 
						|
 | 
						|
/\Gabc./g
 | 
						|
    abc1abc2xyzabc3
 | 
						|
 0: abc1
 | 
						|
 0: abc2
 | 
						|
 | 
						|
/abc./g
 | 
						|
    abc1abc2xyzabc3 
 | 
						|
 0: abc1
 | 
						|
 0: abc2
 | 
						|
 0: abc3
 | 
						|
 | 
						|
/a(?x: b c )d/
 | 
						|
    XabcdY
 | 
						|
 0: abcd
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    Xa b c d Y 
 | 
						|
No match
 | 
						|
 | 
						|
/((?x)x y z | a b c)/
 | 
						|
    XabcY
 | 
						|
 0: abc
 | 
						|
 1: abc
 | 
						|
    AxyzB 
 | 
						|
 0: xyz
 | 
						|
 1: xyz
 | 
						|
 | 
						|
/(?i)AB(?-i)C/
 | 
						|
    XabCY
 | 
						|
 0: abC
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    XabcY  
 | 
						|
No match
 | 
						|
 | 
						|
/((?i)AB(?-i)C|D)E/
 | 
						|
    abCE
 | 
						|
 0: abCE
 | 
						|
 1: abC
 | 
						|
    DE
 | 
						|
 0: DE
 | 
						|
 1: D
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    abcE
 | 
						|
No match
 | 
						|
    abCe  
 | 
						|
No match
 | 
						|
    dE
 | 
						|
No match
 | 
						|
    De    
 | 
						|
No match
 | 
						|
 | 
						|
/(.*)\d+\1/
 | 
						|
    abc123abc
 | 
						|
 0: abc123abc
 | 
						|
 1: abc
 | 
						|
    abc123bc 
 | 
						|
 0: bc123bc
 | 
						|
 1: bc
 | 
						|
 | 
						|
/(.*)\d+\1/s
 | 
						|
    abc123abc
 | 
						|
 0: abc123abc
 | 
						|
 1: abc
 | 
						|
    abc123bc 
 | 
						|
 0: bc123bc
 | 
						|
 1: bc
 | 
						|
    
 | 
						|
/((.*))\d+\1/
 | 
						|
    abc123abc
 | 
						|
 0: abc123abc
 | 
						|
 1: abc
 | 
						|
 2: abc
 | 
						|
    abc123bc  
 | 
						|
 0: bc123bc
 | 
						|
 1: bc
 | 
						|
 2: bc
 | 
						|
 | 
						|
# This tests for an IPv6 address in the form where it can have up to
 | 
						|
# eight components, one and only one of which is empty. This must be
 | 
						|
# an internal component. 
 | 
						|
 | 
						|
/^(?!:)                       # colon disallowed at start
 | 
						|
  (?:                         # start of item
 | 
						|
    (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
 | 
						|
    (?(1)0 | () ) )           # if null previously matched, fail; else null
 | 
						|
    :                         # followed by colon
 | 
						|
  ){1,7}                      # end item; 1-7 of them required               
 | 
						|
  [0-9a-f]{1,4} $             # final hex number at end of string
 | 
						|
  (?(1)|.)                    # check that there was an empty component
 | 
						|
  /ix
 | 
						|
    a123::a123
 | 
						|
 0: a123::a123
 | 
						|
 1: 
 | 
						|
    a123:b342::abcd
 | 
						|
 0: a123:b342::abcd
 | 
						|
 1: 
 | 
						|
    a123:b342::324e:abcd
 | 
						|
 0: a123:b342::324e:abcd
 | 
						|
 1: 
 | 
						|
    a123:ddde:b342::324e:abcd
 | 
						|
 0: a123:ddde:b342::324e:abcd
 | 
						|
 1: 
 | 
						|
    a123:ddde:b342::324e:dcba:abcd
 | 
						|
 0: a123:ddde:b342::324e:dcba:abcd
 | 
						|
 1: 
 | 
						|
    a123:ddde:9999:b342::324e:dcba:abcd
 | 
						|
 0: a123:ddde:9999:b342::324e:dcba:abcd
 | 
						|
 1: 
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    1:2:3:4:5:6:7:8
 | 
						|
No match
 | 
						|
    a123:bce:ddde:9999:b342::324e:dcba:abcd
 | 
						|
No match
 | 
						|
    a123::9999:b342::324e:dcba:abcd
 | 
						|
No match
 | 
						|
    abcde:2:3:4:5:6:7:8
 | 
						|
No match
 | 
						|
    ::1
 | 
						|
No match
 | 
						|
    abcd:fee0:123::   
 | 
						|
No match
 | 
						|
    :1
 | 
						|
No match
 | 
						|
    1:  
 | 
						|
No match
 | 
						|
 | 
						|
/[z\Qa-d]\E]/
 | 
						|
    z
 | 
						|
 0: z
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    -
 | 
						|
 0: -
 | 
						|
    d
 | 
						|
 0: d
 | 
						|
    ] 
 | 
						|
 0: ]
 | 
						|
    *** Failers
 | 
						|
 0: a
 | 
						|
    b     
 | 
						|
No match
 | 
						|
 | 
						|
/(a+)*b/
 | 
						|
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?i)reg(?:ul(?:[a�]|ae)r|ex)/
 | 
						|
    REGular
 | 
						|
 0: REGular
 | 
						|
    regulaer
 | 
						|
 0: regulaer
 | 
						|
    Regex  
 | 
						|
 0: Regex
 | 
						|
    regul�r 
 | 
						|
 0: regul\xe4r
 | 
						|
 | 
						|
/����[�-��-�]+/
 | 
						|
    �����
 | 
						|
 0: \xc5\xe6\xe5\xe4\xe0
 | 
						|
    �����
 | 
						|
 0: \xc5\xe6\xe5\xe4\xff
 | 
						|
    �����
 | 
						|
 0: \xc5\xe6\xe5\xe4\xc0
 | 
						|
    �����
 | 
						|
 0: \xc5\xe6\xe5\xe4\xdf
 | 
						|
 | 
						|
/(?<=Z)X./
 | 
						|
  \x84XAZXB
 | 
						|
 0: XB
 | 
						|
 | 
						|
/ab cd (?x) de fg/
 | 
						|
    ab cd defg
 | 
						|
 0: ab cd defg
 | 
						|
 | 
						|
/ab cd(?x) de fg/
 | 
						|
    ab cddefg
 | 
						|
 0: ab cddefg
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    abcddefg
 | 
						|
No match
 | 
						|
 | 
						|
/(?<![^f]oo)(bar)/
 | 
						|
    foobarX 
 | 
						|
 0: bar
 | 
						|
 1: bar
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    boobarX
 | 
						|
No match
 | 
						|
 | 
						|
/(?<![^f])X/
 | 
						|
    offX
 | 
						|
 0: X
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    onyX  
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=[^f])X/
 | 
						|
    onyX
 | 
						|
 0: X
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    offX 
 | 
						|
No match
 | 
						|
 | 
						|
/^/gm
 | 
						|
    a\nb\nc\n
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
    \ 
 | 
						|
 0: 
 | 
						|
    
 | 
						|
/(?<=C\n)^/gm
 | 
						|
    A\nC\nC\n 
 | 
						|
 0: 
 | 
						|
 | 
						|
/(?:(?(1)a|b)(X))+/
 | 
						|
    bXaX
 | 
						|
 0: bXaX
 | 
						|
 1: X
 | 
						|
 | 
						|
/(?:(?(1)\1a|b)(X|Y))+/
 | 
						|
    bXXaYYaY
 | 
						|
 0: bXXaYYaY
 | 
						|
 1: Y
 | 
						|
    bXYaXXaX  
 | 
						|
 0: bX
 | 
						|
 1: X
 | 
						|
 | 
						|
/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
 | 
						|
    bXXaYYaY
 | 
						|
 0: bX
 | 
						|
 1: 
 | 
						|
 2: 
 | 
						|
 3: 
 | 
						|
 4: 
 | 
						|
 5: 
 | 
						|
 6: 
 | 
						|
 7: 
 | 
						|
 8: 
 | 
						|
 9: 
 | 
						|
10: X
 | 
						|
 | 
						|
/[[,abc,]+]/
 | 
						|
    abc]
 | 
						|
 0: abc]
 | 
						|
    a,b]
 | 
						|
 0: a,b]
 | 
						|
    [a,b,c]  
 | 
						|
 0: [a,b,c]
 | 
						|
 | 
						|
/(?-x: )/x
 | 
						|
    A\x20B
 | 
						|
 0:  
 | 
						|
    
 | 
						|
"(?x)(?-x: \s*#\s*)"
 | 
						|
    A # B
 | 
						|
 0:  # 
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    #  
 | 
						|
No match
 | 
						|
 | 
						|
"(?x-is)(?:(?-ixs) \s*#\s*) include"
 | 
						|
    A #include
 | 
						|
 0:  #include
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    A#include  
 | 
						|
No match
 | 
						|
    A #Include
 | 
						|
No match
 | 
						|
 | 
						|
/a*b*\w/
 | 
						|
    aaabbbb
 | 
						|
 0: aaabbbb
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/a*b?\w/
 | 
						|
    aaabbbb
 | 
						|
 0: aaabb
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/a*b{0,4}\w/
 | 
						|
    aaabbbb
 | 
						|
 0: aaabbbb
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 | 
						|
/a*b{0,}\w/
 | 
						|
    aaabbbb
 | 
						|
 0: aaabbbb
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    
 | 
						|
/a*\d*\w/
 | 
						|
    0a
 | 
						|
 0: 0a
 | 
						|
    a 
 | 
						|
 0: a
 | 
						|
    
 | 
						|
/a*b *\w/x
 | 
						|
    a 
 | 
						|
 0: a
 | 
						|
 | 
						|
/a*b#comment
 | 
						|
  *\w/x
 | 
						|
    a 
 | 
						|
 0: a
 | 
						|
 | 
						|
/a* b *\w/x
 | 
						|
    a 
 | 
						|
 0: a
 | 
						|
 | 
						|
/^\w+=.*(\\\n.*)*/
 | 
						|
    abc=xyz\\\npqr
 | 
						|
 0: abc=xyz\
 | 
						|
 | 
						|
/(?=(\w+))\1:/
 | 
						|
    abcd:
 | 
						|
 0: abcd:
 | 
						|
 1: abcd
 | 
						|
 | 
						|
/^(?=(\w+))\1:/
 | 
						|
    abcd:
 | 
						|
 0: abcd:
 | 
						|
 1: abcd
 | 
						|
 | 
						|
/^\Eabc/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    
 | 
						|
/^[\Eabc]/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    E 
 | 
						|
No match
 | 
						|
    
 | 
						|
/^[a-\Ec]/
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    -
 | 
						|
No match
 | 
						|
    E    
 | 
						|
No match
 | 
						|
 | 
						|
/^[a\E\E-\Ec]/
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    -
 | 
						|
No match
 | 
						|
    E    
 | 
						|
No match
 | 
						|
 | 
						|
/^[\E\Qa\E-\Qz\E]+/
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    -  
 | 
						|
No match
 | 
						|
    
 | 
						|
/^[a\Q]bc\E]/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    ]
 | 
						|
 0: ]
 | 
						|
    c
 | 
						|
 0: c
 | 
						|
    
 | 
						|
/^[a-\Q\E]/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    -     
 | 
						|
 0: -
 | 
						|
 | 
						|
/^(a()*)*/
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
 1: a
 | 
						|
 2: 
 | 
						|
 | 
						|
/^(?:a(?:(?:))*)*/
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
 | 
						|
/^(a()+)+/
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
 1: a
 | 
						|
 2: 
 | 
						|
 | 
						|
/^(?:a(?:(?:))+)+/
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
 | 
						|
/(a){0,3}(?(1)b|(c|))*D/
 | 
						|
    abbD
 | 
						|
 0: abbD
 | 
						|
 1: a
 | 
						|
    ccccD
 | 
						|
 0: ccccD
 | 
						|
 1: <unset>
 | 
						|
 2: 
 | 
						|
    D  
 | 
						|
 0: D
 | 
						|
 1: <unset>
 | 
						|
 2: 
 | 
						|
 | 
						|
/(a|)*\d/
 | 
						|
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | 
						|
 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | 
						|
 1: 
 | 
						|
 | 
						|
/(?>a|)*\d/
 | 
						|
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | 
						|
 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | 
						|
 | 
						|
/(?:a|)*\d/
 | 
						|
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | 
						|
 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | 
						|
 | 
						|
/\Z/g
 | 
						|
  abc\n
 | 
						|
 0: 
 | 
						|
 0: 
 | 
						|
  
 | 
						|
/^(?s)(?>.*)(?<!\n)/
 | 
						|
  abc
 | 
						|
 0: abc
 | 
						|
  abc\n  
 | 
						|
No match
 | 
						|
 | 
						|
/^(?![^\n]*\n\z)/
 | 
						|
  abc
 | 
						|
 0: 
 | 
						|
  abc\n 
 | 
						|
No match
 | 
						|
  
 | 
						|
/\z(?<!\n)/
 | 
						|
  abc
 | 
						|
 0: 
 | 
						|
  abc\n  
 | 
						|
No match
 | 
						|
 | 
						|
/(.*(.)?)*/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: 
 | 
						|
 | 
						|
/( (A | (?(1)0|) )*   )/x
 | 
						|
    abcd
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 2: 
 | 
						|
 | 
						|
/( ( (?(1)0|) )*   )/x
 | 
						|
    abcd
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 2: 
 | 
						|
 | 
						|
/(  (?(1)0|)*   )/x
 | 
						|
    abcd
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
/[[:abcd:xyz]]/
 | 
						|
    a]
 | 
						|
 0: a]
 | 
						|
    :] 
 | 
						|
 0: :]
 | 
						|
    
 | 
						|
/[abc[:x\]pqr]/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    [
 | 
						|
 0: [
 | 
						|
    :
 | 
						|
 0: :
 | 
						|
    ]
 | 
						|
 0: ]
 | 
						|
    p    
 | 
						|
 0: p
 | 
						|
 | 
						|
/.*[op][xyz]/
 | 
						|
    fooabcfoo
 | 
						|
No match
 | 
						|
 | 
						|
/(?(?=.*b)b|^)/
 | 
						|
   adc
 | 
						|
 0: 
 | 
						|
   abc 
 | 
						|
 0: b
 | 
						|
 | 
						|
/(?(?=^.*b)b|^)/
 | 
						|
   adc
 | 
						|
 0: 
 | 
						|
   abc 
 | 
						|
No match
 | 
						|
 | 
						|
/(?(?=.*b)b|^)*/
 | 
						|
   adc
 | 
						|
 0: 
 | 
						|
   abc 
 | 
						|
 0: 
 | 
						|
 | 
						|
/(?(?=.*b)b|^)+/
 | 
						|
   adc
 | 
						|
 0: 
 | 
						|
   abc 
 | 
						|
 0: b
 | 
						|
 | 
						|
/(?(?=b).*b|^d)/
 | 
						|
    abc
 | 
						|
 0: b
 | 
						|
 | 
						|
/(?(?=.*b).*b|^d)/
 | 
						|
    abc
 | 
						|
 0: ab
 | 
						|
 | 
						|
/^%((?(?=[a])[^%])|b)*%$/
 | 
						|
    %ab%
 | 
						|
 0: %ab%
 | 
						|
 1: 
 | 
						|
 | 
						|
/(?i)a(?-i)b|c/
 | 
						|
    XabX
 | 
						|
 0: ab
 | 
						|
    XAbX
 | 
						|
 0: Ab
 | 
						|
    CcC 
 | 
						|
 0: c
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    XABX   
 | 
						|
No match
 | 
						|
 | 
						|
/[\x00-\xff\s]+/
 | 
						|
    \x0a\x0b\x0c\x0d
 | 
						|
 0: \x0a\x0b\x0c\x0d
 | 
						|
 | 
						|
/(abc)\1/i
 | 
						|
   abc
 | 
						|
No match
 | 
						|
 | 
						|
/(abc)\1/
 | 
						|
   abc
 | 
						|
No match
 | 
						|
 | 
						|
/[^a]*/i
 | 
						|
    12abc
 | 
						|
 0: 12
 | 
						|
    12ABC
 | 
						|
 0: 12
 | 
						|
 | 
						|
/[^a]*+/i
 | 
						|
    12abc
 | 
						|
 0: 12
 | 
						|
    12ABC
 | 
						|
 0: 12
 | 
						|
 | 
						|
/[^a]*?X/i
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    12abc
 | 
						|
No match
 | 
						|
    12ABC
 | 
						|
No match
 | 
						|
    
 | 
						|
/[^a]+?X/i
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    12abc
 | 
						|
No match
 | 
						|
    12ABC
 | 
						|
No match
 | 
						|
 | 
						|
/[^a]?X/i
 | 
						|
    12aXbcX
 | 
						|
 0: X
 | 
						|
    12AXBCX
 | 
						|
 0: X
 | 
						|
    BCX 
 | 
						|
 0: CX
 | 
						|
 | 
						|
/[^a]??X/i
 | 
						|
    12aXbcX
 | 
						|
 0: X
 | 
						|
    12AXBCX
 | 
						|
 0: X
 | 
						|
    BCX
 | 
						|
 0: CX
 | 
						|
    
 | 
						|
/[^a]?+X/i
 | 
						|
    12aXbcX
 | 
						|
 0: cX
 | 
						|
    12AXBCX
 | 
						|
 0: CX
 | 
						|
    BCX 
 | 
						|
 0: CX
 | 
						|
 | 
						|
/[^a]{2,3}/i
 | 
						|
    abcdef
 | 
						|
 0: bcd
 | 
						|
    ABCDEF  
 | 
						|
 0: BCD
 | 
						|
 | 
						|
/[^a]{2,3}?/i
 | 
						|
    abcdef
 | 
						|
 0: bc
 | 
						|
    ABCDEF  
 | 
						|
 0: BC
 | 
						|
 | 
						|
/[^a]{2,3}+/i
 | 
						|
    abcdef
 | 
						|
 0: bcd
 | 
						|
    ABCDEF  
 | 
						|
 0: BCD
 | 
						|
 | 
						|
/((a|)+)+Z/
 | 
						|
    Z
 | 
						|
 0: Z
 | 
						|
 1: 
 | 
						|
 2: 
 | 
						|
 | 
						|
/(a)b|(a)c/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: a
 | 
						|
 | 
						|
/(?>(a))b|(a)c/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: a
 | 
						|
 | 
						|
/(?=(a))ab|(a)c/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: a
 | 
						|
 | 
						|
/((?>(a))b|(a)c)/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: ac
 | 
						|
 2: <unset>
 | 
						|
 3: a
 | 
						|
 | 
						|
/((?>(a))b|(a)c)++/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: ac
 | 
						|
 2: <unset>
 | 
						|
 3: a
 | 
						|
 | 
						|
/(?:(?>(a))b|(a)c)++/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: a
 | 
						|
 | 
						|
/(?=(?>(a))b|(a)c)(..)/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: a
 | 
						|
 3: ac
 | 
						|
 | 
						|
/(?>(?>(a))b|(a)c)/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: a
 | 
						|
 | 
						|
/(?:(?>([ab])))+a=/aftertext
 | 
						|
    =ba=
 | 
						|
 0: ba=
 | 
						|
 0+ 
 | 
						|
 1: b
 | 
						|
 | 
						|
/(?>([ab]))+a=/aftertext
 | 
						|
    =ba=
 | 
						|
 0: ba=
 | 
						|
 0+ 
 | 
						|
 1: b
 | 
						|
 | 
						|
/((?>(a+)b)+(aabab))/
 | 
						|
    aaaabaaabaabab
 | 
						|
 0: aaaabaaabaabab
 | 
						|
 1: aaaabaaabaabab
 | 
						|
 2: aaa
 | 
						|
 3: aabab
 | 
						|
 | 
						|
/(?>a+|ab)+?c/
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/(?>a+|ab)+c/
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/(?:a+|ab)+c/
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/(?(?=(a))a)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?(?=(a))a)(b)/
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 | 
						|
/^(?:a|ab)++c/
 | 
						|
    aaaabc
 | 
						|
No match
 | 
						|
 | 
						|
/^(?>a|ab)++c/
 | 
						|
    aaaabc
 | 
						|
No match
 | 
						|
 | 
						|
/^(?:a|ab)+c/
 | 
						|
    aaaabc
 | 
						|
 0: aaaabc
 | 
						|
 | 
						|
/(?=abc){3}abc/aftertext
 | 
						|
    abcabcabc
 | 
						|
 0: abc
 | 
						|
 0+ abcabc
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xyz  
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?=abc)+abc/aftertext
 | 
						|
    abcabcabc
 | 
						|
 0: abc
 | 
						|
 0+ abcabc
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xyz  
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?=abc)++abc/aftertext
 | 
						|
    abcabcabc
 | 
						|
 0: abc
 | 
						|
 0+ abcabc
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xyz  
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?=abc){0}xyz/
 | 
						|
    xyz 
 | 
						|
 0: xyz
 | 
						|
 | 
						|
/(?=abc){1}xyz/
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xyz 
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?=(a))?./
 | 
						|
    ab
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    bc
 | 
						|
 0: b
 | 
						|
      
 | 
						|
/(?=(a))??./
 | 
						|
    ab
 | 
						|
 0: a
 | 
						|
    bc
 | 
						|
 0: b
 | 
						|
 | 
						|
/^(?=(?1))?[az]([abc])d/
 | 
						|
    abd 
 | 
						|
 0: abd
 | 
						|
 1: b
 | 
						|
    zcdxx 
 | 
						|
 0: zcd
 | 
						|
 1: c
 | 
						|
 | 
						|
/^(?!a){0}\w+/
 | 
						|
    aaaaa
 | 
						|
 0: aaaaa
 | 
						|
 | 
						|
/(?<=(abc))?xyz/
 | 
						|
    abcxyz
 | 
						|
 0: xyz
 | 
						|
 1: abc
 | 
						|
    pqrxyz 
 | 
						|
 0: xyz
 | 
						|
 | 
						|
/^[\g<a>]+/
 | 
						|
    ggg<<<aaa>>>
 | 
						|
 0: ggg<<<aaa>>>
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    \\ga  
 | 
						|
No match
 | 
						|
    
 | 
						|
/^[\ga]+/
 | 
						|
    gggagagaxyz 
 | 
						|
 0: gggagaga
 | 
						|
    
 | 
						|
/^[:a[:digit:]]+/
 | 
						|
    aaaa444:::Z 
 | 
						|
 0: aaaa444:::
 | 
						|
 | 
						|
/^[:a[:digit:]:b]+/
 | 
						|
    aaaa444:::bbbZ 
 | 
						|
 0: aaaa444:::bbb
 | 
						|
 | 
						|
/[:a]xxx[b:]/
 | 
						|
     :xxx:
 | 
						|
 0: :xxx:
 | 
						|
     
 | 
						|
/(?<=a{2})b/i
 | 
						|
    xaabc
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xabc  
 | 
						|
No match
 | 
						|
 | 
						|
/(?<!a{2})b/i
 | 
						|
    xabc
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xaabc  
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=a\h)c/
 | 
						|
    xa c
 | 
						|
 0: c
 | 
						|
    
 | 
						|
/(?<=[^a]{2})b/
 | 
						|
    axxbc
 | 
						|
 0: b
 | 
						|
    aAAbc 
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    xaabc    
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=[^a]{2})b/i
 | 
						|
    axxbc  
 | 
						|
 0: b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aAAbc 
 | 
						|
No match
 | 
						|
    xaabc    
 | 
						|
No match
 | 
						|
 | 
						|
/(?<=a\H)c/
 | 
						|
    abc
 | 
						|
 0: c
 | 
						|
 | 
						|
/(?<=a\V)c/
 | 
						|
    abc
 | 
						|
 0: c
 | 
						|
    
 | 
						|
/(?<=a\v)c/
 | 
						|
    a\nc
 | 
						|
 0: c
 | 
						|
 | 
						|
/(?(?=c)c|d)++Y/
 | 
						|
    XcccddYX
 | 
						|
 0: cccddY
 | 
						|
 | 
						|
/(?(?=c)c|d)*+Y/
 | 
						|
    XcccddYX
 | 
						|
 0: cccddY
 | 
						|
 | 
						|
/^(a{2,3}){2,}+a/
 | 
						|
    aaaaaaa
 | 
						|
 0: aaaaaaa
 | 
						|
 1: aaa
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aaaaaa
 | 
						|
No match
 | 
						|
    aaaaaaaaa 
 | 
						|
No match
 | 
						|
 | 
						|
/^(a{2,3})++a/
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aaaaaa
 | 
						|
No match
 | 
						|
 | 
						|
/^(a{2,3})*+a/
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aaaaaa
 | 
						|
No match
 | 
						|
 | 
						|
/ab\Cde/
 | 
						|
    abXde
 | 
						|
 0: abXde
 | 
						|
    
 | 
						|
/(?<=ab\Cde)X/
 | 
						|
    abZdeX
 | 
						|
 0: X
 | 
						|
 | 
						|
/\H\h\V\v/
 | 
						|
    X X\x0a
 | 
						|
 0: X X\x0a
 | 
						|
    X\x09X\x0b
 | 
						|
 0: X\x09X\x0b
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    \xa0 X\x0a   
 | 
						|
No match
 | 
						|
    
 | 
						|
/\H*\h+\V?\v{3,4}/
 | 
						|
    \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
 | 
						|
 0: \x09 \xa0X\x0a\x0b\x0c\x0d
 | 
						|
    \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
 | 
						|
 0: \x09 \xa0\x0a\x0b\x0c\x0d
 | 
						|
    \x09\x20\xa0\x0a\x0b\x0c
 | 
						|
 0: \x09 \xa0\x0a\x0b\x0c
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    \x09\x20\xa0\x0a\x0b
 | 
						|
No match
 | 
						|
     
 | 
						|
/\H{3,4}/
 | 
						|
    XY  ABCDE
 | 
						|
 0: ABCD
 | 
						|
    XY  PQR ST 
 | 
						|
 0: PQR
 | 
						|
    
 | 
						|
/.\h{3,4}./
 | 
						|
    XY  AB    PQRS
 | 
						|
 0: B    P
 | 
						|
 | 
						|
/\h*X\h?\H+Y\H?Z/
 | 
						|
    >XNNNYZ
 | 
						|
 0: XNNNYZ
 | 
						|
    >  X NYQZ
 | 
						|
 0:   X NYQZ
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    >XYZ   
 | 
						|
No match
 | 
						|
    >  X NY Z
 | 
						|
No match
 | 
						|
 | 
						|
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
 | 
						|
    >XY\x0aZ\x0aA\x0bNN\x0c
 | 
						|
 0: XY\x0aZ\x0aA\x0bNN\x0c
 | 
						|
    >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
 | 
						|
 0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
 | 
						|
 | 
						|
/(foo)\Kbar/
 | 
						|
    foobar
 | 
						|
 0: bar
 | 
						|
 1: foo
 | 
						|
   
 | 
						|
/(foo)(\Kbar|baz)/
 | 
						|
    foobar
 | 
						|
 0: bar
 | 
						|
 1: foo
 | 
						|
 2: bar
 | 
						|
    foobaz 
 | 
						|
 0: foobaz
 | 
						|
 1: foo
 | 
						|
 2: baz
 | 
						|
 | 
						|
/(foo\Kbar)baz/
 | 
						|
    foobarbaz
 | 
						|
 0: barbaz
 | 
						|
 1: foobar
 | 
						|
 | 
						|
/abc\K|def\K/g,aftertext
 | 
						|
    Xabcdefghi
 | 
						|
 0: 
 | 
						|
 0+ defghi
 | 
						|
 0: 
 | 
						|
 0+ ghi
 | 
						|
 | 
						|
/ab\Kc|de\Kf/g,aftertext
 | 
						|
    Xabcdefghi
 | 
						|
 0: c
 | 
						|
 0+ defghi
 | 
						|
 0: f
 | 
						|
 0+ ghi
 | 
						|
    
 | 
						|
/(?=C)/g,aftertext
 | 
						|
    ABCDECBA
 | 
						|
 0: 
 | 
						|
 0+ CDECBA
 | 
						|
 0: 
 | 
						|
 0+ CBA
 | 
						|
    
 | 
						|
/^abc\K/aftertext
 | 
						|
    abcdef
 | 
						|
 0: 
 | 
						|
 0+ def
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    defabcxyz   
 | 
						|
No match
 | 
						|
 | 
						|
/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
 | 
						|
    ababababbbabZXXXX
 | 
						|
 0: ababababbbabZ
 | 
						|
 1: ab
 | 
						|
 2: b
 | 
						|
 | 
						|
/(?<A>tom|bon)-\g{A}/
 | 
						|
    tom-tom
 | 
						|
 0: tom-tom
 | 
						|
 1: tom
 | 
						|
    bon-bon 
 | 
						|
 0: bon-bon
 | 
						|
 1: bon
 | 
						|
    
 | 
						|
/(^(a|b\g{-1}))/
 | 
						|
    bacxxx
 | 
						|
No match
 | 
						|
 | 
						|
/(?|(abc)|(xyz))\1/
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
    xyzxyz 
 | 
						|
 0: xyzxyz
 | 
						|
 1: xyz
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abcxyz
 | 
						|
No match
 | 
						|
    xyzabc   
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?|(abc)|(xyz))(?1)/
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
    xyzabc 
 | 
						|
 0: xyzabc
 | 
						|
 1: xyz
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    xyzxyz 
 | 
						|
No match
 | 
						|
 
 | 
						|
/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
 | 
						|
    XYabcdY
 | 
						|
 0: XYabcdY
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: c
 | 
						|
 4: d
 | 
						|
 5: Y
 | 
						|
 | 
						|
/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
 | 
						|
    XYabcdY
 | 
						|
 0: XYabcdY
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: <unset>
 | 
						|
 4: <unset>
 | 
						|
 5: c
 | 
						|
 6: d
 | 
						|
 7: Y
 | 
						|
 | 
						|
/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
 | 
						|
    XYabcdY
 | 
						|
 0: XYabcdY
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 3: <unset>
 | 
						|
 4: <unset>
 | 
						|
 5: c
 | 
						|
 6: d
 | 
						|
 7: Y
 | 
						|
 | 
						|
/(?'abc'\w+):\k<abc>{2}/
 | 
						|
    a:aaxyz
 | 
						|
 0: a:aa
 | 
						|
 1: a
 | 
						|
    ab:ababxyz
 | 
						|
 0: ab:abab
 | 
						|
 1: ab
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    a:axyz
 | 
						|
No match
 | 
						|
    ab:abxyz
 | 
						|
No match
 | 
						|
 | 
						|
/(?'abc'\w+):\g{abc}{2}/
 | 
						|
    a:aaxyz
 | 
						|
 0: a:aa
 | 
						|
 1: a
 | 
						|
    ab:ababxyz
 | 
						|
 0: ab:abab
 | 
						|
 1: ab
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    a:axyz
 | 
						|
No match
 | 
						|
    ab:abxyz
 | 
						|
No match
 | 
						|
 | 
						|
/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
 1: a
 | 
						|
    ce
 | 
						|
 0: ce
 | 
						|
 | 
						|
/^(a.)\g-1Z/
 | 
						|
    aXaXZ
 | 
						|
 0: aXaXZ
 | 
						|
 1: aX
 | 
						|
 | 
						|
/^(a.)\g{-1}Z/
 | 
						|
    aXaXZ
 | 
						|
 0: aXaXZ
 | 
						|
 1: aX
 | 
						|
 | 
						|
/^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
 | 
						|
    abcd
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
 | 
						|
  (?(DEFINE)
 | 
						|
  (?<NAME_PAT>[a-z]+)
 | 
						|
  (?<ADDRESS_PAT>\d+)
 | 
						|
  )/x
 | 
						|
    metcalfe 33
 | 
						|
 0: metcalfe 33
 | 
						|
 1: metcalfe
 | 
						|
 2: 33
 | 
						|
 | 
						|
/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
 | 
						|
    1.2.3.4
 | 
						|
 0: 1.2.3.4
 | 
						|
 1: <unset>
 | 
						|
 2: .4
 | 
						|
    131.111.10.206
 | 
						|
 0: 131.111.10.206
 | 
						|
 1: <unset>
 | 
						|
 2: .206
 | 
						|
    10.0.0.0
 | 
						|
 0: 10.0.0.0
 | 
						|
 1: <unset>
 | 
						|
 2: .0
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    10.6
 | 
						|
No match
 | 
						|
    455.3.4.5
 | 
						|
No match
 | 
						|
 | 
						|
/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
 | 
						|
    1.2.3.4
 | 
						|
 0: 1.2.3.4
 | 
						|
 1: .4
 | 
						|
    131.111.10.206
 | 
						|
 0: 131.111.10.206
 | 
						|
 1: .206
 | 
						|
    10.0.0.0
 | 
						|
 0: 10.0.0.0
 | 
						|
 1: .0
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    10.6
 | 
						|
No match
 | 
						|
    455.3.4.5
 | 
						|
No match
 | 
						|
 | 
						|
/^(\w++|\s++)*$/
 | 
						|
    now is the time for all good men to come to the aid of the party
 | 
						|
 0: now is the time for all good men to come to the aid of the party
 | 
						|
 1: party
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    this is not a line with only words and spaces!
 | 
						|
No match
 | 
						|
 | 
						|
/(\d++)(\w)/
 | 
						|
    12345a
 | 
						|
 0: 12345a
 | 
						|
 1: 12345
 | 
						|
 2: a
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    12345+
 | 
						|
No match
 | 
						|
 | 
						|
/a++b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 | 
						|
/(a++b)/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: aaab
 | 
						|
 | 
						|
/(a++)b/
 | 
						|
    aaab
 | 
						|
 0: aaab
 | 
						|
 1: aaa
 | 
						|
 | 
						|
/([^()]++|\([^()]*\))+/
 | 
						|
    ((abc(ade)ufh()()x
 | 
						|
 0: abc(ade)ufh()()x
 | 
						|
 1: x
 | 
						|
 | 
						|
/\(([^()]++|\([^()]+\))+\)/
 | 
						|
    (abc)
 | 
						|
 0: (abc)
 | 
						|
 1: abc
 | 
						|
    (abc(def)xyz)
 | 
						|
 0: (abc(def)xyz)
 | 
						|
 1: xyz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | 
						|
No match
 | 
						|
 | 
						|
/^([^()]|\((?1)*\))*$/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: c
 | 
						|
    a(b)c
 | 
						|
 0: a(b)c
 | 
						|
 1: c
 | 
						|
    a(b(c))d
 | 
						|
 0: a(b(c))d
 | 
						|
 1: d
 | 
						|
    *** Failers)
 | 
						|
No match
 | 
						|
    a(b(c)d
 | 
						|
No match
 | 
						|
 | 
						|
/^>abc>([^()]|\((?1)*\))*<xyz<$/
 | 
						|
   >abc>123<xyz<
 | 
						|
 0: >abc>123<xyz<
 | 
						|
 1: 3
 | 
						|
   >abc>1(2)3<xyz<
 | 
						|
 0: >abc>1(2)3<xyz<
 | 
						|
 1: 3
 | 
						|
   >abc>(1(2)3)<xyz<
 | 
						|
 0: >abc>(1(2)3)<xyz<
 | 
						|
 1: (1(2)3)
 | 
						|
 | 
						|
/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
 | 
						|
    1221
 | 
						|
 0: 1221
 | 
						|
 1: 1221
 | 
						|
 2: 1
 | 
						|
    Satanoscillatemymetallicsonatas
 | 
						|
 0: Satanoscillatemymetallicsonatas
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: Satanoscillatemymetallicsonatas
 | 
						|
 4: S
 | 
						|
    AmanaplanacanalPanama
 | 
						|
 0: AmanaplanacanalPanama
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: AmanaplanacanalPanama
 | 
						|
 4: A
 | 
						|
    AblewasIereIsawElba
 | 
						|
 0: AblewasIereIsawElba
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: AblewasIereIsawElba
 | 
						|
 4: A
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    Thequickbrownfox
 | 
						|
No match
 | 
						|
 | 
						|
/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
 | 
						|
    12
 | 
						|
 0: 12
 | 
						|
 1: 12
 | 
						|
    (((2+2)*-3)-7)
 | 
						|
 0: (((2+2)*-3)-7)
 | 
						|
 1: (((2+2)*-3)-7)
 | 
						|
 2: -
 | 
						|
    -12
 | 
						|
 0: -12
 | 
						|
 1: -12
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    ((2+2)*-3)-7)
 | 
						|
No match
 | 
						|
 | 
						|
/^(x(y|(?1){2})z)/
 | 
						|
    xyz
 | 
						|
 0: xyz
 | 
						|
 1: xyz
 | 
						|
 2: y
 | 
						|
    xxyzxyzz
 | 
						|
 0: xxyzxyzz
 | 
						|
 1: xxyzxyzz
 | 
						|
 2: xyzxyz
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    xxyzz
 | 
						|
No match
 | 
						|
    xxyzxyzxyzz
 | 
						|
No match
 | 
						|
 | 
						|
/((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
 | 
						|
    <>
 | 
						|
 0: <>
 | 
						|
 1: <>
 | 
						|
 2: <>
 | 
						|
    <abcd>
 | 
						|
 0: <abcd>
 | 
						|
 1: <abcd>
 | 
						|
 2: <abcd>
 | 
						|
    <abc <123> hij>
 | 
						|
 0: <abc <123> hij>
 | 
						|
 1: <abc <123> hij>
 | 
						|
 2: <abc <123> hij>
 | 
						|
    <abc <def> hij>
 | 
						|
 0: <def>
 | 
						|
 1: <def>
 | 
						|
 2: <def>
 | 
						|
    <abc<>def>
 | 
						|
 0: <abc<>def>
 | 
						|
 1: <abc<>def>
 | 
						|
 2: <abc<>def>
 | 
						|
    <abc<>
 | 
						|
 0: <>
 | 
						|
 1: <>
 | 
						|
 2: <>
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    <abc
 | 
						|
No match
 | 
						|
 | 
						|
/^a+(*FAIL)/
 | 
						|
    aaaaaa
 | 
						|
No match
 | 
						|
    
 | 
						|
/a+b?c+(*FAIL)/
 | 
						|
    aaabccc
 | 
						|
No match
 | 
						|
 | 
						|
/a+b?(*PRUNE)c+(*FAIL)/
 | 
						|
    aaabccc
 | 
						|
No match
 | 
						|
 | 
						|
/a+b?(*COMMIT)c+(*FAIL)/
 | 
						|
    aaabccc
 | 
						|
No match
 | 
						|
    
 | 
						|
/a+b?(*SKIP)c+(*FAIL)/
 | 
						|
    aaabcccaaabccc
 | 
						|
No match
 | 
						|
 | 
						|
/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
 | 
						|
    aaaxxxxxx
 | 
						|
 0: aaaxxxxxx
 | 
						|
    aaa++++++ 
 | 
						|
 0: aaa
 | 
						|
    bbbxxxxx
 | 
						|
 0: bbbxxxxx
 | 
						|
    bbb+++++ 
 | 
						|
 0: bbb
 | 
						|
    cccxxxx
 | 
						|
 0: cccxxxx
 | 
						|
    ccc++++ 
 | 
						|
 0: ccc
 | 
						|
    dddddddd   
 | 
						|
 0: ddd
 | 
						|
 | 
						|
/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
 | 
						|
    aaaxxxxxx
 | 
						|
 0: aaaxxxxxx
 | 
						|
 1: aaaxxxxxx
 | 
						|
    aaa++++++ 
 | 
						|
 0: aaa
 | 
						|
 1: aaa
 | 
						|
    bbbxxxxx
 | 
						|
 0: bbbxxxxx
 | 
						|
 1: bbbxxxxx
 | 
						|
    bbb+++++ 
 | 
						|
 0: bbb
 | 
						|
 1: bbb
 | 
						|
    cccxxxx
 | 
						|
 0: cccxxxx
 | 
						|
 1: cccxxxx
 | 
						|
    ccc++++ 
 | 
						|
 0: ccc
 | 
						|
 1: ccc
 | 
						|
    dddddddd   
 | 
						|
 0: ddd
 | 
						|
 1: ddd
 | 
						|
 | 
						|
/a+b?(*THEN)c+(*FAIL)/
 | 
						|
    aaabccc
 | 
						|
No match
 | 
						|
 | 
						|
/(A (A|B(*ACCEPT)|C) D)(E)/x
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: AB
 | 
						|
 2: B
 | 
						|
    ABX
 | 
						|
 0: AB
 | 
						|
 1: AB
 | 
						|
 2: B
 | 
						|
    AADE
 | 
						|
 0: AADE
 | 
						|
 1: AAD
 | 
						|
 2: A
 | 
						|
 3: E
 | 
						|
    ACDE
 | 
						|
 0: ACDE
 | 
						|
 1: ACD
 | 
						|
 2: C
 | 
						|
 3: E
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    AD 
 | 
						|
No match
 | 
						|
        
 | 
						|
/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
 | 
						|
    1221
 | 
						|
 0: 1221
 | 
						|
 1: 1221
 | 
						|
 2: 1
 | 
						|
    Satan, oscillate my metallic sonatas!
 | 
						|
 0: Satan, oscillate my metallic sonatas!
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: Satan, oscillate my metallic sonatas
 | 
						|
 4: S
 | 
						|
    A man, a plan, a canal: Panama!
 | 
						|
 0: A man, a plan, a canal: Panama!
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: A man, a plan, a canal: Panama
 | 
						|
 4: A
 | 
						|
    Able was I ere I saw Elba.
 | 
						|
 0: Able was I ere I saw Elba.
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: Able was I ere I saw Elba
 | 
						|
 4: A
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    The quick brown fox
 | 
						|
No match
 | 
						|
 | 
						|
/^((.)(?1)\2|.)$/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    aba
 | 
						|
 0: aba
 | 
						|
 1: aba
 | 
						|
 2: a
 | 
						|
    aabaa  
 | 
						|
 0: aabaa
 | 
						|
 1: aabaa
 | 
						|
 2: a
 | 
						|
    abcdcba 
 | 
						|
 0: abcdcba
 | 
						|
 1: abcdcba
 | 
						|
 2: a
 | 
						|
    pqaabaaqp  
 | 
						|
 0: pqaabaaqp
 | 
						|
 1: pqaabaaqp
 | 
						|
 2: p
 | 
						|
    ablewasiereisawelba
 | 
						|
 0: ablewasiereisawelba
 | 
						|
 1: ablewasiereisawelba
 | 
						|
 2: a
 | 
						|
    rhubarb
 | 
						|
No match
 | 
						|
    the quick brown fox  
 | 
						|
No match
 | 
						|
 | 
						|
/(a)(?<=b(?1))/
 | 
						|
    baz
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    caz  
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?<=b(?1))(a)/
 | 
						|
    zbaaz
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aaa  
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?<X>a)(?<=b(?&X))/
 | 
						|
    baz
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(?|(abc)|(def))\1/
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
    defdef 
 | 
						|
 0: defdef
 | 
						|
 1: def
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abcdef
 | 
						|
No match
 | 
						|
    defabc   
 | 
						|
No match
 | 
						|
    
 | 
						|
/^(?|(abc)|(def))(?1)/
 | 
						|
    abcabc
 | 
						|
 0: abcabc
 | 
						|
 1: abc
 | 
						|
    defabc
 | 
						|
 0: defabc
 | 
						|
 1: def
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    defdef
 | 
						|
No match
 | 
						|
    abcdef    
 | 
						|
No match
 | 
						|
 | 
						|
/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/x,dupnames
 | 
						|
    a\"aaaaa
 | 
						|
 0: a"aaaaa
 | 
						|
 1: "
 | 
						|
 2: <unset>
 | 
						|
 3: "
 | 
						|
    b\"aaaaa 
 | 
						|
 0: b"aaaaa
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: <unset>
 | 
						|
 4: "
 | 
						|
 5: <unset>
 | 
						|
 6: "
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    b\"11111
 | 
						|
No match
 | 
						|
 | 
						|
/(?:(?1)|B)(A(*F)|C)/
 | 
						|
    ABCD
 | 
						|
 0: BC
 | 
						|
 1: C
 | 
						|
    CCD
 | 
						|
 0: CC
 | 
						|
 1: C
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    CAD   
 | 
						|
No match
 | 
						|
 | 
						|
/^(?:(?1)|B)(A(*F)|C)/
 | 
						|
    CCD
 | 
						|
 0: CC
 | 
						|
 1: C
 | 
						|
    BCD 
 | 
						|
 0: BC
 | 
						|
 1: C
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    ABCD
 | 
						|
No match
 | 
						|
    CAD
 | 
						|
No match
 | 
						|
    BAD    
 | 
						|
No match
 | 
						|
 | 
						|
/(?:(?1)|B)(A(*ACCEPT)XX|C)D/
 | 
						|
    AAD
 | 
						|
 0: AA
 | 
						|
 1: A
 | 
						|
    ACD
 | 
						|
 0: ACD
 | 
						|
 1: C
 | 
						|
    BAD
 | 
						|
 0: BA
 | 
						|
 1: A
 | 
						|
    BCD
 | 
						|
 0: BCD
 | 
						|
 1: C
 | 
						|
    BAX  
 | 
						|
 0: BA
 | 
						|
 1: A
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    ACX
 | 
						|
No match
 | 
						|
    ABC   
 | 
						|
No match
 | 
						|
 | 
						|
/(?(DEFINE)(A))B(?1)C/
 | 
						|
    BAC
 | 
						|
 0: BAC
 | 
						|
 | 
						|
/(?(DEFINE)((A)\2))B(?1)C/
 | 
						|
    BAAC
 | 
						|
 0: BAAC
 | 
						|
 | 
						|
/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
 | 
						|
    (ab(cd)ef)
 | 
						|
 0: (ab(cd)ef)
 | 
						|
 1: (ab(cd)ef)
 | 
						|
 2: ef
 | 
						|
 | 
						|
/^(?=a(*SKIP)b|ac)/
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    ac
 | 
						|
No match
 | 
						|
    
 | 
						|
/^(?=a(*PRUNE)b)/
 | 
						|
    ab  
 | 
						|
 0: 
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    ac
 | 
						|
No match
 | 
						|
 | 
						|
/^(?=a(*ACCEPT)b)/
 | 
						|
    ac
 | 
						|
 0: 
 | 
						|
 | 
						|
/(?>a\Kb)/
 | 
						|
    ab
 | 
						|
 0: b
 | 
						|
 | 
						|
/((?>a\Kb))/
 | 
						|
    ab
 | 
						|
 0: b
 | 
						|
 1: ab
 | 
						|
 | 
						|
/(a\Kb)/
 | 
						|
    ab
 | 
						|
 0: b
 | 
						|
 1: ab
 | 
						|
    
 | 
						|
/^a\Kcz|ac/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
    
 | 
						|
/(?>a\Kbz|ab)/
 | 
						|
    ab 
 | 
						|
 0: ab
 | 
						|
 | 
						|
/^(?&t)(?(DEFINE)(?<t>a\Kb))$/
 | 
						|
    ab
 | 
						|
 0: b
 | 
						|
 | 
						|
/^([^()]|\((?1)*\))*$/
 | 
						|
    a(b)c
 | 
						|
 0: a(b)c
 | 
						|
 1: c
 | 
						|
    a(b(c)d)e 
 | 
						|
 0: a(b(c)d)e
 | 
						|
 1: e
 | 
						|
 | 
						|
/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
 | 
						|
    0
 | 
						|
 0: 0
 | 
						|
 1: 0
 | 
						|
    00
 | 
						|
 0: 00
 | 
						|
 1: 00
 | 
						|
 2: 0
 | 
						|
    0000  
 | 
						|
 0: 0000
 | 
						|
 1: 0000
 | 
						|
 2: 0
 | 
						|
 | 
						|
/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
 | 
						|
    0
 | 
						|
 0: 0
 | 
						|
 1: 0
 | 
						|
 2: 0
 | 
						|
    00
 | 
						|
 0: 0
 | 
						|
 1: 0
 | 
						|
 2: 0
 | 
						|
    0000  
 | 
						|
 0: 0
 | 
						|
 1: 0
 | 
						|
 2: 0
 | 
						|
 | 
						|
# This one does fail, as expected, in Perl. It needs the complex item at the
 | 
						|
# end of the pattern. A single letter instead of (B|D) makes it not fail, which
 | 
						|
# I think is a Perl bug.
 | 
						|
 | 
						|
/A(*COMMIT)(B|D)/
 | 
						|
    ACABX
 | 
						|
No match
 | 
						|
 | 
						|
# Check the use of names for failure
 | 
						|
 | 
						|
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    AC
 | 
						|
No match, mark = A
 | 
						|
    CB    
 | 
						|
No match, mark = B
 | 
						|
    
 | 
						|
/(*MARK:A)(*SKIP:B)(C|X)/mark
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
MK: A
 | 
						|
    D
 | 
						|
No match, mark = A
 | 
						|
     
 | 
						|
/^(A(*THEN:A)B|C(*THEN:B)D)/mark
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    CB    
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
/^(?:A(*THEN:A)B|C(*THEN:B)D)/mark
 | 
						|
    CB    
 | 
						|
No match, mark = B
 | 
						|
    
 | 
						|
/^(?>A(*THEN:A)B|C(*THEN:B)D)/mark
 | 
						|
    CB    
 | 
						|
No match, mark = B
 | 
						|
    
 | 
						|
# This should succeed, as the skip causes bump to offset 1 (the mark). Note
 | 
						|
# that we have to have something complicated such as (B|Z) at the end because,
 | 
						|
# for Perl, a simple character somehow causes an unwanted optimization to mess
 | 
						|
# with the handling of backtracking verbs.
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AC
 | 
						|
    
 | 
						|
# Test skipping over a non-matching mark.
 | 
						|
 | 
						|
/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AC
 | 
						|
    
 | 
						|
# Check shorthand for MARK.
 | 
						|
 | 
						|
/A(*:A)A+(*SKIP:A)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AC
 | 
						|
 | 
						|
/(*:A)A+(*SKIP:A)(B|Z)/mark
 | 
						|
    AAAC
 | 
						|
No match, mark = A
 | 
						|
 | 
						|
# This should succeed, as a non-existent skip name disables the skip.
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AC
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AC
 | 
						|
MK: B
 | 
						|
 | 
						|
# COMMIT at the start of a pattern should act like an anchor. Again, however,
 | 
						|
# we need the complication for Perl.
 | 
						|
 | 
						|
/(*COMMIT)(A|P)(B|P)(C|P)/
 | 
						|
    ABCDEFG
 | 
						|
 0: ABC
 | 
						|
 1: A
 | 
						|
 2: B
 | 
						|
 3: C
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    DEFGABC  
 | 
						|
No match
 | 
						|
 | 
						|
# COMMIT inside an atomic group can't stop backtracking over the group.
 | 
						|
 | 
						|
/(\w+)(?>b(*COMMIT))\w{2}/
 | 
						|
    abbb
 | 
						|
 0: abbb
 | 
						|
 1: a
 | 
						|
 | 
						|
/(\w+)b(*COMMIT)\w{2}/
 | 
						|
    abbb
 | 
						|
No match
 | 
						|
 | 
						|
# Check opening parens in comment when seeking forward reference.
 | 
						|
 | 
						|
/(?&t)(?#()(?(DEFINE)(?<t>a))/
 | 
						|
    bac
 | 
						|
 0: a
 | 
						|
 | 
						|
# COMMIT should override THEN.
 | 
						|
 | 
						|
/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
 | 
						|
  yes
 | 
						|
No match
 | 
						|
 | 
						|
/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
 | 
						|
  yes
 | 
						|
No match
 | 
						|
 | 
						|
/b?(*SKIP)c/
 | 
						|
    bc
 | 
						|
 0: bc
 | 
						|
    abc
 | 
						|
 0: bc
 | 
						|
   
 | 
						|
/(*SKIP)bc/
 | 
						|
    a
 | 
						|
No match
 | 
						|
 | 
						|
/(*SKIP)b/
 | 
						|
    a 
 | 
						|
No match
 | 
						|
 | 
						|
/(?P<abn>(?P=abn)xxx|)+/
 | 
						|
    xxx
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
/(?i:([^b]))(?1)/
 | 
						|
    aa
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    aA     
 | 
						|
 0: aA
 | 
						|
 1: a
 | 
						|
    ** Failers
 | 
						|
 0: **
 | 
						|
 1: *
 | 
						|
    ab
 | 
						|
No match
 | 
						|
    aB
 | 
						|
No match
 | 
						|
    Ba
 | 
						|
No match
 | 
						|
    ba
 | 
						|
No match
 | 
						|
 | 
						|
/^(?&t)*+(?(DEFINE)(?<t>a))\w$/
 | 
						|
    aaaaaaX
 | 
						|
 0: aaaaaaX
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    aaaaaa 
 | 
						|
No match
 | 
						|
 | 
						|
/^(?&t)*(?(DEFINE)(?<t>a))\w$/
 | 
						|
    aaaaaaX
 | 
						|
 0: aaaaaaX
 | 
						|
    aaaaaa 
 | 
						|
 0: aaaaaa
 | 
						|
 | 
						|
/^(a)*+(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aaaaX
 | 
						|
 1: a
 | 
						|
 2: X
 | 
						|
    YZ 
 | 
						|
 0: Y
 | 
						|
 1: <unset>
 | 
						|
 2: Y
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    aaaa
 | 
						|
No match
 | 
						|
 | 
						|
/^(?:a)*+(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aaaaX
 | 
						|
 1: X
 | 
						|
    YZ 
 | 
						|
 0: Y
 | 
						|
 1: Y
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    aaaa
 | 
						|
No match
 | 
						|
 | 
						|
/^(a)++(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aaaaX
 | 
						|
 1: a
 | 
						|
 2: X
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    aaaa
 | 
						|
No match
 | 
						|
    YZ 
 | 
						|
No match
 | 
						|
 | 
						|
/^(?:a)++(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aaaaX
 | 
						|
 1: X
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    aaaa
 | 
						|
No match
 | 
						|
    YZ 
 | 
						|
No match
 | 
						|
 | 
						|
/^(a)?+(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
    YZ 
 | 
						|
 0: Y
 | 
						|
 1: <unset>
 | 
						|
 2: Y
 | 
						|
 | 
						|
/^(?:a)?+(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
    YZ 
 | 
						|
 0: Y
 | 
						|
 1: Y
 | 
						|
 | 
						|
/^(a){2,}+(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aaaaX
 | 
						|
 1: a
 | 
						|
 2: X
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aaa
 | 
						|
No match
 | 
						|
    YZ 
 | 
						|
No match
 | 
						|
 | 
						|
/^(?:a){2,}+(\w)/
 | 
						|
    aaaaX
 | 
						|
 0: aaaaX
 | 
						|
 1: X
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    aaa
 | 
						|
No match
 | 
						|
    YZ 
 | 
						|
No match
 | 
						|
 | 
						|
/(a|)*(?1)b/
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 1: 
 | 
						|
    ab
 | 
						|
 0: ab
 | 
						|
 1: 
 | 
						|
    aab  
 | 
						|
 0: aab
 | 
						|
 1: 
 | 
						|
 | 
						|
/(a)++(?1)b/
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    ab 
 | 
						|
No match
 | 
						|
    aab
 | 
						|
No match
 | 
						|
 | 
						|
/(a)*+(?1)b/
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    ab
 | 
						|
No match
 | 
						|
    aab  
 | 
						|
No match
 | 
						|
 | 
						|
/(?1)(?:(b)){0}/
 | 
						|
    b
 | 
						|
 0: b
 | 
						|
 | 
						|
/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
 | 
						|
    foo(bar(baz)+baz(bop))
 | 
						|
 0: foo(bar(baz)+baz(bop))
 | 
						|
 1: foo(bar(baz)+baz(bop))
 | 
						|
 2: (bar(baz)+baz(bop))
 | 
						|
 3: bar(baz)+baz(bop)
 | 
						|
 | 
						|
/(A (A|B(*ACCEPT)|C) D)(E)/x
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: AB
 | 
						|
 2: B
 | 
						|
 | 
						|
/\A.*?(a|bc)/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 1: a
 | 
						|
 | 
						|
/\A.*?(?:a|bc)++/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 | 
						|
/\A.*?(a|bc)++/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 1: a
 | 
						|
 | 
						|
/\A.*?(?:a|bc|d)/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 | 
						|
/(?:(b))++/
 | 
						|
    beetle
 | 
						|
 0: b
 | 
						|
 1: b
 | 
						|
 | 
						|
/(?(?=(a(*ACCEPT)z))a)/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
 | 
						|
/^(a)(?1)+ab/
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
 1: a
 | 
						|
    
 | 
						|
/^(a)(?1)++ab/
 | 
						|
    aaaab
 | 
						|
No match
 | 
						|
 | 
						|
/^(?=a(*:M))aZ/mark
 | 
						|
    aZbc
 | 
						|
 0: aZ
 | 
						|
MK: M
 | 
						|
 | 
						|
/^(?!(*:M)b)aZ/mark
 | 
						|
    aZbc
 | 
						|
 0: aZ
 | 
						|
 | 
						|
/(?(DEFINE)(a))?b(?1)/
 | 
						|
    backgammon
 | 
						|
 0: ba
 | 
						|
 | 
						|
/^\N+/
 | 
						|
    abc\ndef
 | 
						|
 0: abc
 | 
						|
    
 | 
						|
/^\N{1,}/
 | 
						|
    abc\ndef 
 | 
						|
 0: abc
 | 
						|
 | 
						|
/(?(R)a+|(?R)b)/
 | 
						|
    aaaabcde
 | 
						|
 0: aaaab
 | 
						|
 | 
						|
/(?(R)a+|((?R))b)/
 | 
						|
    aaaabcde
 | 
						|
 0: aaaab
 | 
						|
 1: aaaa
 | 
						|
 | 
						|
/((?(R)a+|(?1)b))/
 | 
						|
    aaaabcde
 | 
						|
 0: aaaab
 | 
						|
 1: aaaab
 | 
						|
 | 
						|
/((?(R1)a+|(?1)b))/
 | 
						|
    aaaabcde
 | 
						|
 0: aaaab
 | 
						|
 1: aaaab
 | 
						|
    
 | 
						|
/((?(R)a|(?1)))*/
 | 
						|
    aaa
 | 
						|
 0: aaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/((?(R)a|(?1)))+/
 | 
						|
    aaa 
 | 
						|
 0: aaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/a(*:any 
 | 
						|
name)/mark
 | 
						|
    abc
 | 
						|
 0: a
 | 
						|
MK: any \x0aname
 | 
						|
    
 | 
						|
/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
    ba
 | 
						|
 0: a
 | 
						|
    bba 
 | 
						|
 0: a
 | 
						|
    
 | 
						|
# Checking revised (*THEN) handling.
 | 
						|
 | 
						|
# Capture
 | 
						|
 | 
						|
/^.*? (a(*THEN)b) c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/^.*? (a(*THEN)b|(*F)) c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 1: ab
 | 
						|
 | 
						|
/^.*? ( (a(*THEN)b) | (*F) ) c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 1: ab
 | 
						|
 2: ab
 | 
						|
 | 
						|
/^.*? ( (a(*THEN)b) ) c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
# Non-capture
 | 
						|
 | 
						|
/^.*? (?:a(*THEN)b) c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/^.*? (?:a(*THEN)b|(*F)) c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/^.*? (?: (?:a(*THEN)b) ) c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
# Atomic
 | 
						|
 | 
						|
/^.*? (?>a(*THEN)b) c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/^.*? (?>a(*THEN)b|(*F)) c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/^.*? (?> (?>a(*THEN)b) ) c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
# Possessive capture
 | 
						|
 | 
						|
/^.*? (a(*THEN)b)++ c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/^.*? (a(*THEN)b|(*F))++ c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 1: ab
 | 
						|
 | 
						|
/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 1: ab
 | 
						|
 2: ab
 | 
						|
 | 
						|
/^.*? ( (a(*THEN)b)++ )++ c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
# Possessive non-capture
 | 
						|
 | 
						|
/^.*? (?:a(*THEN)b)++ c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
 | 
						|
/^.*? (?:a(*THEN)b|(*F))++ c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
 | 
						|
    aabc
 | 
						|
 0: aabc
 | 
						|
 | 
						|
/^.*? (?: (?:a(*THEN)b)++ )++ c/x
 | 
						|
    aabc
 | 
						|
No match
 | 
						|
    
 | 
						|
# Condition assertion
 | 
						|
 | 
						|
/^(?(?=a(*THEN)b)ab|ac)/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 
 | 
						|
# Condition
 | 
						|
 | 
						|
/^.*?(?(?=a)a|b(*THEN)c)/
 | 
						|
    ba
 | 
						|
No match
 | 
						|
 | 
						|
/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 | 
						|
/^.*?(?(?=a)a(*THEN)b|c)/
 | 
						|
    ac
 | 
						|
No match
 | 
						|
 | 
						|
# Assertion
 | 
						|
 | 
						|
/^.*(?=a(*THEN)b)/
 | 
						|
    aabc
 | 
						|
 0: a
 | 
						|
 | 
						|
# --------------------------
 | 
						|
 | 
						|
/(?>a(*:m))/imsx,mark
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
MK: m
 | 
						|
 | 
						|
/(?>(a)(*:m))/imsx,mark
 | 
						|
    a
 | 
						|
 0: a
 | 
						|
 1: a
 | 
						|
MK: m
 | 
						|
 | 
						|
/(?<=a(*ACCEPT)b)c/
 | 
						|
    xacd
 | 
						|
 0: c
 | 
						|
 | 
						|
/(?<=(a(*ACCEPT)b))c/
 | 
						|
    xacd
 | 
						|
 0: c
 | 
						|
 1: a
 | 
						|
 | 
						|
/(?<=(a(*COMMIT)b))c/
 | 
						|
    xabcd
 | 
						|
 0: c
 | 
						|
 1: ab
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    xacd
 | 
						|
No match
 | 
						|
    
 | 
						|
/(?<!a(*FAIL)b)c/
 | 
						|
    xcd
 | 
						|
 0: c
 | 
						|
    acd 
 | 
						|
 0: c
 | 
						|
 | 
						|
/(?<=a(*:N)b)c/mark
 | 
						|
    xabcd
 | 
						|
 0: c
 | 
						|
MK: N
 | 
						|
    
 | 
						|
/(?<=a(*PRUNE)b)c/
 | 
						|
    xabcd 
 | 
						|
 0: c
 | 
						|
 | 
						|
/(?<=a(*SKIP)b)c/
 | 
						|
    xabcd 
 | 
						|
 0: c
 | 
						|
 | 
						|
/(?<=a(*THEN)b)c/
 | 
						|
    xabcd 
 | 
						|
 0: c
 | 
						|
 | 
						|
/(a)(?2){2}(.)/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: a
 | 
						|
 2: d
 | 
						|
 | 
						|
/(*MARK:A)(*PRUNE:B)(C|X)/mark
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
MK: B
 | 
						|
    D 
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
/(*MARK:A)(*PRUNE:B)(C|X)/mark
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
MK: B
 | 
						|
    D 
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
/(*MARK:A)(*THEN:B)(C|X)/mark
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
MK: B
 | 
						|
    D 
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
/(*MARK:A)(*THEN:B)(C|X)/mark,no_start_optimize
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
MK: B
 | 
						|
    D 
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
/(*MARK:A)(*THEN:B)(C|X)/mark
 | 
						|
    C
 | 
						|
 0: C
 | 
						|
 1: C
 | 
						|
MK: B
 | 
						|
    D 
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
# This should fail, as the skip causes a bump to offset 3 (the skip).
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
No match, mark = A
 | 
						|
 | 
						|
# Same 
 | 
						|
 | 
						|
/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
No match, mark = B
 | 
						|
 | 
						|
/A(*:A)A+(*SKIP)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
No match, mark = A
 | 
						|
 | 
						|
# This should fail, as a null name is the same as no name.
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
No match, mark = A
 | 
						|
 | 
						|
# A check on what happens after hitting a mark and them bumping along to
 | 
						|
# something that does not even start. Perl reports tags after the failures
 | 
						|
# here, though it does not when the individual letters are made into something
 | 
						|
# more complicated.
 | 
						|
 | 
						|
/A(*:A)B|XX(*:B)Y/mark
 | 
						|
    AABC
 | 
						|
 0: AB
 | 
						|
MK: A
 | 
						|
    XXYZ 
 | 
						|
 0: XXY
 | 
						|
MK: B
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    XAQQ  
 | 
						|
No match, mark = A
 | 
						|
    XAQQXZZ  
 | 
						|
No match, mark = A
 | 
						|
    AXQQQ 
 | 
						|
No match, mark = A
 | 
						|
    AXXQQQ 
 | 
						|
No match, mark = B
 | 
						|
    
 | 
						|
/^(A(*THEN:A)B|C(*THEN:B)D)/mark
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: AB
 | 
						|
MK: A
 | 
						|
    CD
 | 
						|
 0: CD
 | 
						|
 1: CD
 | 
						|
MK: B
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    AC
 | 
						|
No match, mark = A
 | 
						|
    CB    
 | 
						|
No match, mark = B
 | 
						|
    
 | 
						|
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: AB
 | 
						|
MK: A
 | 
						|
    CD
 | 
						|
 0: CD
 | 
						|
 1: CD
 | 
						|
MK: B
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    AC
 | 
						|
No match, mark = A
 | 
						|
    CB    
 | 
						|
No match, mark = B
 | 
						|
    
 | 
						|
# An empty name does not pass back an empty string. It is the same as if no
 | 
						|
# name were given.
 | 
						|
 | 
						|
/^(A(*PRUNE:)B|C(*PRUNE:B)D)/mark
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 1: AB
 | 
						|
    CD 
 | 
						|
 0: CD
 | 
						|
 1: CD
 | 
						|
MK: B
 | 
						|
 | 
						|
# PRUNE goes to next bumpalong; COMMIT does not.
 | 
						|
    
 | 
						|
/A(*PRUNE:A)B/mark
 | 
						|
    ACAB
 | 
						|
 0: AB
 | 
						|
MK: A
 | 
						|
 | 
						|
# Mark names can be duplicated.
 | 
						|
 | 
						|
/A(*:A)B|X(*:A)Y/mark
 | 
						|
    AABC
 | 
						|
 0: AB
 | 
						|
MK: A
 | 
						|
    XXYZ 
 | 
						|
 0: XY
 | 
						|
MK: A
 | 
						|
    
 | 
						|
/b(*:m)f|a(*:n)w/mark
 | 
						|
    aw 
 | 
						|
 0: aw
 | 
						|
MK: n
 | 
						|
    ** Failers 
 | 
						|
No match, mark = n
 | 
						|
    abc
 | 
						|
No match, mark = m
 | 
						|
 | 
						|
/b(*:m)f|aw/mark
 | 
						|
    abaw
 | 
						|
 0: aw
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    abc
 | 
						|
No match, mark = m
 | 
						|
    abax 
 | 
						|
No match, mark = m
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AAC
 | 
						|
 | 
						|
/a(*PRUNE:X)bc|qq/mark,no_start_optimize
 | 
						|
    ** Failers
 | 
						|
No match, mark = X
 | 
						|
    axy
 | 
						|
No match, mark = X
 | 
						|
 | 
						|
/a(*THEN:X)bc|qq/mark,no_start_optimize
 | 
						|
    ** Failers
 | 
						|
No match, mark = X
 | 
						|
    axy
 | 
						|
No match, mark = X
 | 
						|
 | 
						|
/(?=a(*MARK:A)b)..x/mark
 | 
						|
    abxy
 | 
						|
 0: abx
 | 
						|
MK: A
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abpq  
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*MARK:A)b)..(*:Y)x/mark
 | 
						|
    abxy
 | 
						|
 0: abx
 | 
						|
MK: Y
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abpq  
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*PRUNE:A)b)..x/mark
 | 
						|
    abxy
 | 
						|
 0: abx
 | 
						|
MK: A
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abpq  
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*PRUNE:A)b)..(*:Y)x/mark
 | 
						|
    abxy
 | 
						|
 0: abx
 | 
						|
MK: Y
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abpq  
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*THEN:A)b)..x/mark
 | 
						|
    abxy
 | 
						|
 0: abx
 | 
						|
MK: A
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abpq  
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*THEN:A)b)..(*:Y)x/mark
 | 
						|
    abxy
 | 
						|
 0: abx
 | 
						|
MK: Y
 | 
						|
    ** Failers
 | 
						|
No match
 | 
						|
    abpq  
 | 
						|
No match
 | 
						|
 | 
						|
/(another)?(\1?)test/
 | 
						|
    hello world test
 | 
						|
 0: test
 | 
						|
 1: <unset>
 | 
						|
 2: 
 | 
						|
 | 
						|
/(another)?(\1+)test/
 | 
						|
    hello world test
 | 
						|
No match
 | 
						|
 | 
						|
/(a(*COMMIT)b){0}a(?1)|aac/
 | 
						|
    aac
 | 
						|
 0: aac
 | 
						|
 | 
						|
/((?:a?)*)*c/
 | 
						|
    aac   
 | 
						|
 0: aac
 | 
						|
 1: 
 | 
						|
 | 
						|
/((?>a?)*)*c/
 | 
						|
    aac   
 | 
						|
 0: aac
 | 
						|
 1: 
 | 
						|
 | 
						|
/(?>.*?a)(?<=ba)/
 | 
						|
    aba
 | 
						|
 0: ba
 | 
						|
 | 
						|
/(?:.*?a)(?<=ba)/
 | 
						|
    aba
 | 
						|
 0: aba
 | 
						|
 | 
						|
/.*?a(*PRUNE)b/
 | 
						|
    aab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/.*?a(*PRUNE)b/s
 | 
						|
    aab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/^a(*PRUNE)b/s
 | 
						|
    aab
 | 
						|
No match
 | 
						|
 | 
						|
/.*?a(*SKIP)b/
 | 
						|
    aab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(?>.*?a)b/s
 | 
						|
    aab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(?>.*?a)b/
 | 
						|
    aab
 | 
						|
 0: ab
 | 
						|
 | 
						|
/(?>^a)b/s
 | 
						|
    aab
 | 
						|
No match
 | 
						|
 | 
						|
/(?>.*?)(?<=(abcd)|(wxyz))/
 | 
						|
    alphabetabcd
 | 
						|
 0: 
 | 
						|
 1: abcd
 | 
						|
    endingwxyz 
 | 
						|
 0: 
 | 
						|
 1: <unset>
 | 
						|
 2: wxyz
 | 
						|
 | 
						|
/(?>.*)(?<=(abcd)|(wxyz))/
 | 
						|
    alphabetabcd
 | 
						|
 0: alphabetabcd
 | 
						|
 1: abcd
 | 
						|
    endingwxyz 
 | 
						|
 0: endingwxyz
 | 
						|
 1: <unset>
 | 
						|
 2: wxyz
 | 
						|
 | 
						|
"(?>.*)foo"
 | 
						|
    abcdfooxyz
 | 
						|
No match
 | 
						|
    
 | 
						|
"(?>.*?)foo"
 | 
						|
    abcdfooxyz
 | 
						|
 0: foo
 | 
						|
 | 
						|
/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
    
 | 
						|
/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
 | 
						|
    ac 
 | 
						|
 0: ac
 | 
						|
 | 
						|
/(?<=(*SKIP)ac)a/
 | 
						|
    aa
 | 
						|
No match
 | 
						|
 | 
						|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
 0: AC
 | 
						|
 | 
						|
/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/mark
 | 
						|
    acacd
 | 
						|
 0: acd
 | 
						|
MK: n
 | 
						|
 | 
						|
/A(*SKIP:m)x|A(*SKIP:n)x|AB/mark
 | 
						|
    AB
 | 
						|
 0: AB
 | 
						|
 | 
						|
/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/mark
 | 
						|
    acacd
 | 
						|
 0: ac
 | 
						|
MK: n
 | 
						|
 | 
						|
# Tests that try to figure out how Perl works. My hypothesis is that the first
 | 
						|
# verb that is backtracked onto is the one that acts. This seems to be the case
 | 
						|
# almost all the time, but there is one exception that is perhaps a bug.
 | 
						|
 | 
						|
# This matches "aaaac"; each PRUNE advances one character until the subject no
 | 
						|
# longer starts with 5 'a's.
 | 
						|
 | 
						|
/aaaaa(*PRUNE)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaac
 | 
						|
 | 
						|
# Putting SKIP in front of PRUNE makes no difference, as it is never
 | 
						|
# backtracked onto, whether or not it has a label.
 | 
						|
 | 
						|
/aaaaa(*SKIP)(*PRUNE)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaac
 | 
						|
 | 
						|
/aaaaa(*SKIP:N)(*PRUNE)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaac
 | 
						|
 | 
						|
/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaac
 | 
						|
 | 
						|
# Putting THEN in front makes no difference.
 | 
						|
    
 | 
						|
/aaaaa(*THEN)(*PRUNE)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaac
 | 
						|
 
 | 
						|
# However, putting COMMIT in front of the prune changes it to "no match". I 
 | 
						|
# think this is inconsistent and possibly a bug. For the moment, running this
 | 
						|
# test is moved out of the Perl-compatible file. 
 | 
						|
 | 
						|
/aaaaa(*COMMIT)(*PRUNE)b|a+c/
 | 
						|
    
 | 
						|
# OK, lets play the same game again using SKIP instead of PRUNE.
 | 
						|
 | 
						|
# This matches "ac" because SKIP forces the next match to start on the
 | 
						|
# sixth "a". 
 | 
						|
 | 
						|
/aaaaa(*SKIP)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: ac
 | 
						|
 
 | 
						|
# Putting PRUNE in front makes no difference. 
 | 
						|
 | 
						|
/aaaaa(*PRUNE)(*SKIP)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: ac
 | 
						|
 | 
						|
# Putting THEN in front makes no difference. 
 | 
						|
 | 
						|
/aaaaa(*THEN)(*SKIP)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: ac
 | 
						|
 | 
						|
# In this case, neither does COMMIT. This still matches "ac". 
 | 
						|
 | 
						|
/aaaaa(*COMMIT)(*SKIP)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: ac
 | 
						|
    
 | 
						|
# This gives "no match", as expected. 
 | 
						|
 | 
						|
/aaaaa(*COMMIT)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
No match
 | 
						|
 | 
						|
# ---- Tests using THEN ----
 | 
						|
 | 
						|
# This matches "aaaaaac", as expected. 
 | 
						|
 | 
						|
/aaaaa(*THEN)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaaaac
 | 
						|
 | 
						|
# Putting SKIP in front makes no difference. 
 | 
						|
 | 
						|
/aaaaa(*SKIP)(*THEN)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaaaac
 | 
						|
    
 | 
						|
# Putting PRUNE in front makes no difference. 
 | 
						|
 | 
						|
/aaaaa(*PRUNE)(*THEN)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaaaac
 | 
						|
    
 | 
						|
# Putting COMMIT in front makes no difference. 
 | 
						|
 | 
						|
/aaaaa(*COMMIT)(*THEN)b|a+c/
 | 
						|
    aaaaaac
 | 
						|
 0: aaaaaac
 | 
						|
    
 | 
						|
# End of "priority" tests  
 | 
						|
 | 
						|
/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
 | 
						|
    aaaaaa
 | 
						|
 0: a
 | 
						|
 | 
						|
/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
 | 
						|
    aaaaaa
 | 
						|
 0: a
 | 
						|
 | 
						|
/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
 | 
						|
    aaaaaa
 | 
						|
 0: aaaa
 | 
						|
 | 
						|
/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
 | 
						|
    aaaaaa
 | 
						|
 0: a
 | 
						|
 | 
						|
/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
 | 
						|
    aaaac
 | 
						|
 0: aac
 | 
						|
 | 
						|
/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
 | 
						|
    aaaac
 | 
						|
 0: ac
 | 
						|
 | 
						|
/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
 | 
						|
    aaaac
 | 
						|
 0: aac
 | 
						|
 | 
						|
/aaa(*MARK:A)a(*SKIP:A)b|a+c/
 | 
						|
    aaaac
 | 
						|
 0: ac
 | 
						|
 | 
						|
/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/mark
 | 
						|
    aaaaaac
 | 
						|
 0: ac
 | 
						|
 | 
						|
/.?(a|b(*THEN)c)/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 1: a
 | 
						|
 | 
						|
/(a(*COMMIT)b)c|abd/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
 1: ab
 | 
						|
    abd
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*COMMIT)b)abc|abd/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
 | 
						|
/(?>a(*COMMIT)b)c|abd/
 | 
						|
    abc
 | 
						|
 0: abc
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
 | 
						|
/a(?=b(*COMMIT)c)[^d]|abd/
 | 
						|
    abd
 | 
						|
No match
 | 
						|
    abc 
 | 
						|
 0: ab
 | 
						|
 | 
						|
/a(?=bc).|abd/
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
    abc 
 | 
						|
 0: ab
 | 
						|
    
 | 
						|
/a(?>b(*COMMIT)c)d|abd/
 | 
						|
    abceabd 
 | 
						|
No match
 | 
						|
 | 
						|
/a(?>bc)d|abd/
 | 
						|
    abceabd 
 | 
						|
 0: abd
 | 
						|
 | 
						|
/(?>a(*COMMIT)b)c|abd/
 | 
						|
    abd
 | 
						|
 0: abd
 | 
						|
 | 
						|
/(?>a(*COMMIT)c)d|abd/
 | 
						|
    abd
 | 
						|
No match
 | 
						|
 | 
						|
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
 | 
						|
    ac 
 | 
						|
 0: ac
 | 
						|
 1: <unset>
 | 
						|
 2: c
 | 
						|
    
 | 
						|
# These tests were formerly in test 2, but changes in PCRE and Perl have
 | 
						|
# made them compatible. 
 | 
						|
    
 | 
						|
/^(a)?(?(1)a|b)+$/
 | 
						|
    *** Failers
 | 
						|
No match
 | 
						|
    a
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a\Kb)ab/
 | 
						|
    ab 
 | 
						|
 0: b
 | 
						|
 | 
						|
/(?!a\Kb)ac/
 | 
						|
    ac 
 | 
						|
 0: ac
 | 
						|
    
 | 
						|
/^abc(?<=b\Kc)d/
 | 
						|
    abcd
 | 
						|
 0: cd
 | 
						|
 | 
						|
/^abc(?<!b\Kq)d/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 | 
						|
 | 
						|
/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/x,mark
 | 
						|
    AAAC
 | 
						|
No match, mark = A
 | 
						|
 | 
						|
/^((abc|abcx)(*THEN)y|abcd)/
 | 
						|
    abcd
 | 
						|
 0: abcd
 | 
						|
 1: abcd
 | 
						|
    *** Failers 
 | 
						|
No match
 | 
						|
    abcxy 
 | 
						|
No match
 | 
						|
    
 | 
						|
/^((yes|no)(*THEN)(*F))?/
 | 
						|
    yes
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   C? (*THEN)  | A D) z/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   C? (*THEN)  | A D) \s* z/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   (?:C|) (*THEN)  | A D) z/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   C{0,6} (*THEN)  | A D) z/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
 | 
						|
    AbcdCEBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
 | 
						|
    AbcdCEBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
 | 
						|
    AbcdCBefgBhiBqz
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*COMMIT)b|ac)ac|ac/
 | 
						|
    ac
 | 
						|
No match
 | 
						|
 | 
						|
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x
 | 
						|
    ac
 | 
						|
No match
 | 
						|
 | 
						|
# ----
 | 
						|
 | 
						|
/(?(?!b(*THEN)a)bn|bnn)/
 | 
						|
    bnn 
 | 
						|
 0: bn
 | 
						|
 | 
						|
/(?!b(*SKIP)a)bn|bnn/
 | 
						|
    bnn
 | 
						|
 0: bn
 | 
						|
    
 | 
						|
/(?(?!b(*SKIP)a)bn|bnn)/
 | 
						|
    bnn 
 | 
						|
 0: bn
 | 
						|
 | 
						|
/(?!b(*PRUNE)a)bn|bnn/
 | 
						|
    bnn
 | 
						|
 0: bn
 | 
						|
    
 | 
						|
/(?(?!b(*PRUNE)a)bn|bnn)/
 | 
						|
    bnn 
 | 
						|
 0: bn
 | 
						|
   
 | 
						|
/(?!b(*COMMIT)a)bn|bnn/
 | 
						|
    bnn
 | 
						|
 0: bn
 | 
						|
    
 | 
						|
/(?(?!b(*COMMIT)a)bn|bnn)/
 | 
						|
   bnn 
 | 
						|
 0: bn
 | 
						|
 | 
						|
/(?=b(*SKIP)a)bn|bnn/
 | 
						|
    bnn
 | 
						|
No match
 | 
						|
 | 
						|
/(?=b(*THEN)a)bn|bnn/
 | 
						|
    bnn
 | 
						|
 0: bnn
 | 
						|
    
 | 
						|
/^(?!a(*SKIP)b)/
 | 
						|
    ac
 | 
						|
 0: 
 | 
						|
 | 
						|
/^(?!a(*SKIP)b)../
 | 
						|
    acd
 | 
						|
 0: ac
 | 
						|
 | 
						|
/(?!a(*SKIP)b)../
 | 
						|
    acd
 | 
						|
 0: ac
 | 
						|
 | 
						|
/^(?(?!a(*SKIP)b))/
 | 
						|
    ac
 | 
						|
 0: 
 | 
						|
 | 
						|
/^(?!a(*PRUNE)b)../
 | 
						|
    acd
 | 
						|
 0: ac
 | 
						|
 | 
						|
/(?!a(*PRUNE)b)../
 | 
						|
    acd
 | 
						|
 0: ac
 | 
						|
 | 
						|
/(?!a(*COMMIT)b)ac|cd/
 | 
						|
    ac
 | 
						|
 0: ac
 | 
						|
 | 
						|
/\A.*?(?:a|bc)/
 | 
						|
    ba
 | 
						|
 0: ba
 | 
						|
 | 
						|
/^(A(*THEN)B|C(*THEN)D)/
 | 
						|
    CD           
 | 
						|
 0: CD
 | 
						|
 1: CD
 | 
						|
 | 
						|
/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
 | 
						|
    abc
 | 
						|
 0: b
 | 
						|
MK: m(m
 | 
						|
 | 
						|
/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
 | 
						|
    abc
 | 
						|
 0: b
 | 
						|
MK: m(m
 | 
						|
 | 
						|
/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
 | 
						|
    abc
 | 
						|
 0: b
 | 
						|
 | 
						|
/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
 | 
						|
    abc
 | 
						|
 0: b
 | 
						|
MK: m(m
 | 
						|
 | 
						|
/^\d*\w{4}/
 | 
						|
    1234
 | 
						|
 0: 1234
 | 
						|
    123 
 | 
						|
No match
 | 
						|
 | 
						|
/^[^b]*\w{4}/
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    aaa     
 | 
						|
No match
 | 
						|
 | 
						|
/^[^b]*\w{4}/i
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    aaa     
 | 
						|
No match
 | 
						|
 | 
						|
/^a*\w{4}/
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    aaa     
 | 
						|
No match
 | 
						|
 | 
						|
/^a*\w{4}/i
 | 
						|
    aaaa
 | 
						|
 0: aaaa
 | 
						|
    aaa     
 | 
						|
No match
 | 
						|
 | 
						|
/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
 | 
						|
    foofoo
 | 
						|
 0: foofoo
 | 
						|
 1: foo
 | 
						|
    barbar
 | 
						|
 0: barbar
 | 
						|
 1: <unset>
 | 
						|
 2: bar
 | 
						|
 | 
						|
/(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
 | 
						|
    AfooA
 | 
						|
 0: AfooA
 | 
						|
 1: A
 | 
						|
 2: foo
 | 
						|
    AbarA  
 | 
						|
 0: AbarA
 | 
						|
 1: A
 | 
						|
 2: <unset>
 | 
						|
 3: bar
 | 
						|
    ** Failers 
 | 
						|
No match
 | 
						|
    Afoofoo
 | 
						|
No match
 | 
						|
    Abarbar
 | 
						|
No match
 | 
						|
 | 
						|
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
 | 
						|
    1 IN SOA non-sp1 non-sp2(
 | 
						|
 0: 1 IN SOA non-sp1 non-sp2(
 | 
						|
 1: 1
 | 
						|
 2: non-sp1
 | 
						|
 3: non-sp2
 | 
						|
 | 
						|
/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/x,dupnames
 | 
						|
    Ax
 | 
						|
 0: Ax
 | 
						|
 1: A
 | 
						|
    BAxy 
 | 
						|
 0: BAxy
 | 
						|
 1: <unset>
 | 
						|
 2: B
 | 
						|
 3: A
 | 
						|
    
 | 
						|
/^A\xZ/
 | 
						|
    A\0Z 
 | 
						|
 0: A\x00Z
 | 
						|
 | 
						|
/^A\o{123}B/
 | 
						|
    A\123B
 | 
						|
 0: ASB
 | 
						|
 | 
						|
/ ^ a + + b $ /x
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
    
 | 
						|
/ ^ a + #comment
 | 
						|
  + b $ /x
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
    
 | 
						|
/ ^ a + #comment
 | 
						|
  #comment
 | 
						|
  + b $ /x
 | 
						|
    aaaab
 | 
						|
 0: aaaab
 | 
						|
    
 | 
						|
/ ^ (?> a + ) b $ /x
 | 
						|
    aaaab 
 | 
						|
 0: aaaab
 | 
						|
 | 
						|
/ ^ ( a + ) + + \w $ /x
 | 
						|
    aaaab 
 | 
						|
 0: aaaab
 | 
						|
 1: aaaa
 | 
						|
 | 
						|
/(?:a\Kb)*+/aftertext
 | 
						|
    ababc
 | 
						|
 0: b
 | 
						|
 0+ c
 | 
						|
 | 
						|
/(?>a\Kb)*/aftertext
 | 
						|
    ababc
 | 
						|
 0: b
 | 
						|
 0+ c
 | 
						|
 | 
						|
/(?:a\Kb)*/aftertext
 | 
						|
    ababc
 | 
						|
 0: b
 | 
						|
 0+ c
 | 
						|
 | 
						|
/(a\Kb)*+/aftertext
 | 
						|
    ababc
 | 
						|
 0: b
 | 
						|
 0+ c
 | 
						|
 1: ab
 | 
						|
 | 
						|
/(a\Kb)*/aftertext
 | 
						|
    ababc
 | 
						|
 0: b
 | 
						|
 0+ c
 | 
						|
 1: ab
 | 
						|
 | 
						|
/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
 | 
						|
    acb
 | 
						|
No match
 | 
						|
 | 
						|
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
 | 
						|
    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
 | 
						|
 0: NON QUOTED "QUOT""ED" AFTER 
 | 
						|
 | 
						|
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
 | 
						|
    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
 | 
						|
 0: NON QUOTED "QUOT""ED" AFTER 
 | 
						|
 | 
						|
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
 | 
						|
    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
 | 
						|
 0: NON QUOTED "QUOT""ED" AFTER 
 | 
						|
 | 
						|
'\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
 | 
						|
    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
 | 
						|
 0: NON QUOTED "QUOT""ED" AFTER 
 | 
						|
 1:  AFTER 
 | 
						|
 2: 
 | 
						|
 | 
						|
/^\w+(?>\s*)(?<=\w)/
 | 
						|
    test test
 | 
						|
 0: tes
 | 
						|
 | 
						|
/(?P<same>a)(?P<same>b)/g,dupnames
 | 
						|
    abbaba
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 | 
						|
/(?P<same>a)(?P<same>b)(?P=same)/g,dupnames
 | 
						|
    abbaba
 | 
						|
 0: aba
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 | 
						|
/(?P=same)?(?P<same>a)(?P<same>b)/g,dupnames
 | 
						|
    abbaba
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 0: ab
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 | 
						|
/(?:(?P=same)?(?:(?P<same>a)|(?P<same>b))(?P=same))+/g,dupnames
 | 
						|
    bbbaaabaabb
 | 
						|
 0: bbbaaaba
 | 
						|
 1: a
 | 
						|
 2: b
 | 
						|
 0: bb
 | 
						|
 1: <unset>
 | 
						|
 2: b
 | 
						|
 | 
						|
/(?:(?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)?/g,dupnames
 | 
						|
    bbbaaaccccaaabbbcc
 | 
						|
No match
 | 
						|
 | 
						|
/(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
 | 
						|
    acl
 | 
						|
 0: acl
 | 
						|
 1: a
 | 
						|
    bdl
 | 
						|
 0: bdl
 | 
						|
 1: <unset>
 | 
						|
 2: b
 | 
						|
    adl
 | 
						|
 0: dl
 | 
						|
    bcl    
 | 
						|
 0: l
 | 
						|
 | 
						|
/\sabc/
 | 
						|
    \x{0b}abc
 | 
						|
 0: \x0babc
 | 
						|
 | 
						|
/[\Qa]\E]+/
 | 
						|
    aa]]
 | 
						|
 0: aa]]
 | 
						|
 | 
						|
/[\Q]a\E]+/
 | 
						|
    aa]]
 | 
						|
 0: aa]]
 | 
						|
 | 
						|
/A((((((((a))))))))\8B/ 
 | 
						|
    AaaB
 | 
						|
 0: AaaB
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
 5: a
 | 
						|
 6: a
 | 
						|
 7: a
 | 
						|
 8: a
 | 
						|
 | 
						|
/A(((((((((a)))))))))\9B/ 
 | 
						|
    AaaB
 | 
						|
 0: AaaB
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 3: a
 | 
						|
 4: a
 | 
						|
 5: a
 | 
						|
 6: a
 | 
						|
 7: a
 | 
						|
 8: a
 | 
						|
 9: a
 | 
						|
    
 | 
						|
/A[\8\9]B/
 | 
						|
    A8B
 | 
						|
 0: A8B
 | 
						|
    A9B  
 | 
						|
 0: A9B
 | 
						|
 | 
						|
/(|ab)*?d/
 | 
						|
   abd
 | 
						|
 0: abd
 | 
						|
 1: ab
 | 
						|
   xyd 
 | 
						|
 0: d
 | 
						|
 | 
						|
/(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
 | 
						|
    1234abcd
 | 
						|
 0: 
 | 
						|
 1: <unset>
 | 
						|
 2: <unset>
 | 
						|
 3: <unset>
 | 
						|
 4: <unset>
 | 
						|
 5: 
 | 
						|
 | 
						|
/(\2|a)(\1)/
 | 
						|
    aaa
 | 
						|
 0: aa
 | 
						|
 1: a
 | 
						|
 2: a
 | 
						|
 | 
						|
/(\2)(\1)/
 | 
						|
 | 
						|
"Z*(|d*){216}"
 | 
						|
 | 
						|
"(?1)(?#?'){8}(a)"
 | 
						|
    baaaaaaaaac
 | 
						|
 0: aaaaaaaaa
 | 
						|
 1: a
 | 
						|
 | 
						|
/((((((((((((x))))))))))))\12/
 | 
						|
    xx
 | 
						|
 0: xx
 | 
						|
 1: x
 | 
						|
 2: x
 | 
						|
 3: x
 | 
						|
 4: x
 | 
						|
 5: x
 | 
						|
 6: x
 | 
						|
 7: x
 | 
						|
 8: x
 | 
						|
 9: x
 | 
						|
10: x
 | 
						|
11: x
 | 
						|
12: x
 | 
						|
 | 
						|
/A[\8]B[\9]C/
 | 
						|
    A8B9C
 | 
						|
 0: A8B9C
 | 
						|
 | 
						|
/(?1)()((((((\1++))\x85)+)|))/
 | 
						|
    \x85\x85
 | 
						|
 0: \x85\x85
 | 
						|
 1: 
 | 
						|
 2: \x85\x85
 | 
						|
 3: \x85\x85
 | 
						|
 4: \x85\x85
 | 
						|
 5: \x85
 | 
						|
 6: 
 | 
						|
 7: 
 | 
						|
 | 
						|
"(?|(\k'Pm')|(?'Pm'))"
 | 
						|
    abcd
 | 
						|
 0: 
 | 
						|
 1: 
 | 
						|
 | 
						|
# End of testinput1 
 |