Stanislav N. aka pztrn
48d43ca097
Pagination now works. Temporary hardcoded 10 pastes per page, will be put in configuration later. Maybe. From now user will receive readable error message if error occured. Started to work on syntax highlighting, tried to make lexers detection work but apparently to no avail.
7062 lines
106 KiB
Plaintext
7062 lines
106 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
|
||
#newline_default lf any anycrlf
|
||
#perltest
|
||
|
||
/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
|
||
\= Expect no match
|
||
The quick brown FOX
|
||
No match
|
||
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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
fthing
|
||
No match
|
||
[thing
|
||
No match
|
||
\\thing
|
||
No match
|
||
|
||
/^[]cde]/
|
||
]thing
|
||
0: ]
|
||
cthing
|
||
0: c
|
||
dthing
|
||
0: d
|
||
ething
|
||
0: e
|
||
\= Expect no match
|
||
athing
|
||
No match
|
||
fthing
|
||
No match
|
||
|
||
/^[^ab\]cde]/
|
||
fthing
|
||
0: f
|
||
[thing
|
||
0: [
|
||
\\thing
|
||
0: \
|
||
\= Expect no match
|
||
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
|
||
\= Expect no match
|
||
]thing
|
||
No match
|
||
cthing
|
||
No match
|
||
dthing
|
||
No match
|
||
ething
|
||
No match
|
||
|
||
# DLC - I don't get this one
|
||
#/^\/
|
||
#
|
||
# 0: \x81
|
||
|
||
#updated to handle 16-bits utf8
|
||
/^ÿ/
|
||
ÿ
|
||
0: \xc3\xbf
|
||
|
||
/^[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
|
||
\= Expect no match
|
||
abc
|
||
No match
|
||
|
||
/^.*nter/
|
||
enter
|
||
0: enter
|
||
inter
|
||
0: inter
|
||
uponter
|
||
0: uponter
|
||
|
||
/^xxx[0-9]+$/
|
||
xxx0
|
||
0: xxx0
|
||
xxx1234
|
||
0: xxx1234
|
||
\= Expect no match
|
||
xxx
|
||
No match
|
||
|
||
/^.+[0-9][0-9][0-9]$/
|
||
x123
|
||
0: x123
|
||
x1234
|
||
0: x1234
|
||
xx123
|
||
0: xx123
|
||
123456
|
||
0: 123456
|
||
\= Expect no match
|
||
123
|
||
No match
|
||
|
||
/^.+?[0-9][0-9][0-9]$/
|
||
x123
|
||
0: x123
|
||
x1234
|
||
0: x1234
|
||
xx123
|
||
0: xx123
|
||
123456
|
||
0: 123456
|
||
\= Expect no match
|
||
123
|
||
No match
|
||
|
||
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
|
||
abc!pqr=apquxz.ixr.zzz.ac.uk
|
||
0: abc!pqr=apquxz.ixr.zzz.ac.uk
|
||
1: abc
|
||
2: pqr
|
||
\= Expect 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: :
|
||
\= Expect no match
|
||
Fail without a colon
|
||
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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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-
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
\"1234\" : things
|
||
No match
|
||
|
||
/^$/
|
||
\
|
||
0:
|
||
\= Expect no match
|
||
A non-empty line
|
||
No match
|
||
|
||
/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
|
||
ab c
|
||
0: ab c
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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__
|
||
\= Expect no match
|
||
1234567
|
||
No match
|
||
|
||
/^[aeiou\d]{4,5}$/
|
||
uoie
|
||
0: uoie
|
||
1234
|
||
0: 1234
|
||
12345
|
||
0: 12345
|
||
aaaaa
|
||
0: aaaaa
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
abc
|
||
No match
|
||
|
||
/(?=^)abc/
|
||
abc
|
||
0: abc
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
|
||
#.NET doesn't do octal with 1 number
|
||
|
||
/^(cow|)\1(bell)/
|
||
cowcowbell
|
||
0: cowcowbell
|
||
1: cow
|
||
2: bell
|
||
bell
|
||
0: bell
|
||
1:
|
||
2: bell
|
||
\= Expect no match
|
||
cowbell
|
||
No match
|
||
|
||
/^\s/
|
||
\040abc
|
||
0:
|
||
\x0cabc
|
||
0: \x0c
|
||
\nabc
|
||
0: \x0a
|
||
\rabc
|
||
0: \x0d
|
||
\tabc
|
||
0: \x09
|
||
\= Expect 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:
|
||
\= Expect no match
|
||
acb
|
||
No match
|
||
|
||
/^(a|)\1+b/
|
||
aab
|
||
0: aab
|
||
1: a
|
||
aaaab
|
||
0: aaaab
|
||
1: a
|
||
b
|
||
0: b
|
||
1:
|
||
\= Expect no match
|
||
ab
|
||
No match
|
||
|
||
/^(a|)\1?b/
|
||
ab
|
||
0: ab
|
||
1: a
|
||
aab
|
||
0: aab
|
||
1: a
|
||
b
|
||
0: b
|
||
1:
|
||
\= Expect no match
|
||
acb
|
||
No match
|
||
|
||
/^(a|)\1{2}b/
|
||
aaab
|
||
0: aaab
|
||
1: a
|
||
b
|
||
0: b
|
||
1:
|
||
\= Expect 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:
|
||
\= Expect no match
|
||
ab
|
||
No match
|
||
aab
|
||
No match
|
||
aaaaab
|
||
No match
|
||
|
||
/ab{1,3}bc/
|
||
abbbbc
|
||
0: abbbbc
|
||
abbbc
|
||
0: abbbc
|
||
abbc
|
||
0: abbc
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
abc\ndef
|
||
No match
|
||
|
||
/(?:b)|(?::+)/
|
||
b::c
|
||
0: b
|
||
c::b
|
||
0: ::
|
||
|
||
/[-az]+/
|
||
az-
|
||
0: az-
|
||
\= Expect no match
|
||
b
|
||
No match
|
||
|
||
/[az-]+/
|
||
za-
|
||
0: za-
|
||
\= Expect no match
|
||
b
|
||
No match
|
||
|
||
/[a\-z]+/
|
||
a-z
|
||
0: a-z
|
||
\= Expect no match
|
||
b
|
||
No match
|
||
|
||
/[a-z]+/
|
||
abcdxyz
|
||
0: abcdxyz
|
||
|
||
/[\d-]+/
|
||
12-34
|
||
0: 12-34
|
||
\= Expect no match
|
||
aaa
|
||
No match
|
||
|
||
/[\d-z]+/
|
||
12-34z
|
||
0: 12-34z
|
||
\= Expect no match
|
||
aaa
|
||
No match
|
||
|
||
/\x5c/
|
||
\\
|
||
0: \
|
||
|
||
/\x20Z/
|
||
the Zoo
|
||
0: Z
|
||
\= Expect no match
|
||
Zulu
|
||
No match
|
||
|
||
/(abc)\1/i
|
||
abcabc
|
||
0: abcabc
|
||
1: abc
|
||
ABCabc
|
||
0: ABCabc
|
||
1: ABC
|
||
abcABC
|
||
0: abcABC
|
||
1: abc
|
||
|
||
/abc$/
|
||
abc
|
||
0: abc
|
||
abc\n
|
||
0: abc
|
||
\= Expect no match
|
||
abc\ndef
|
||
No match
|
||
|
||
/(abc)\123/
|
||
abc\x53
|
||
0: abcS
|
||
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)(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
|
||
\= Expect no match
|
||
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
|
||
\= Expect no match
|
||
abk
|
||
No match
|
||
|
||
/[^k]{2,3}$/
|
||
abc
|
||
0: abc
|
||
kbc
|
||
0: bc
|
||
kabc
|
||
0: abc
|
||
\= Expect no match
|
||
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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
|
||
# trimmed upper ascii since Go is UTF-8
|
||
/\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/
|
||
\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
|
||
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
|
||
|
||
/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
|
||
\= Expect no match
|
||
1.235
|
||
No match
|
||
|
||
/\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
|
||
\= Expect no match
|
||
ABC123
|
||
No match
|
||
|
||
/^[W-]46]/
|
||
W46]789
|
||
0: W46]
|
||
-46]789
|
||
0: -46]
|
||
\= Expect 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: \
|
||
\= Expect 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
|
||
\= Expect no match
|
||
word cat dog elephant mussel cow horse canary baboon snake shark
|
||
No match
|
||
|
||
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
|
||
\= Expect no match
|
||
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}/
|
||
abc
|
||
0: a
|
||
1: a
|
||
aab
|
||
0: a
|
||
1: a
|
||
\= Expect no match
|
||
bcd
|
||
No match
|
||
|
||
/^(a){1,2}/
|
||
abc
|
||
0: a
|
||
1: a
|
||
aab
|
||
0: aa
|
||
1: a
|
||
\= Expect no match
|
||
bcd
|
||
No match
|
||
|
||
/^(a){1,3}/
|
||
abc
|
||
0: a
|
||
1: a
|
||
aab
|
||
0: aa
|
||
1: a
|
||
aaa
|
||
0: aaa
|
||
1: a
|
||
\= Expect no match
|
||
bcd
|
||
No match
|
||
|
||
/^(a){1,}/
|
||
abc
|
||
0: a
|
||
1: a
|
||
aab
|
||
0: aa
|
||
1: a
|
||
aaa
|
||
0: aaa
|
||
1: a
|
||
aaaaaaaa
|
||
0: aaaaaaaa
|
||
1: a
|
||
\= Expect no match
|
||
bcd
|
||
No match
|
||
|
||
/.*\.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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
abcde\nBar
|
||
No match
|
||
|
||
/(?s:.*X|^B)/
|
||
abcde\n1234Xyz
|
||
0: abcde\x0a1234X
|
||
BarFoo
|
||
0: B
|
||
\= Expect no match
|
||
abcde\nBar
|
||
No match
|
||
|
||
/^.*B/
|
||
\= Expect 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
|
||
\= Expect no match
|
||
z
|
||
No match
|
||
|
||
/abcde{0,0}/
|
||
abcd
|
||
0: abcd
|
||
\= Expect no match
|
||
abce
|
||
No match
|
||
|
||
/ab[cd]{0,0}e/
|
||
abe
|
||
0: abe
|
||
\= Expect no match
|
||
abcde
|
||
No match
|
||
|
||
/ab(c){0,0}d/
|
||
abd
|
||
0: abd
|
||
\= Expect no match
|
||
abcd
|
||
No match
|
||
|
||
/a(b*)/
|
||
a
|
||
0: a
|
||
1:
|
||
ab
|
||
0: ab
|
||
1: b
|
||
abbbb
|
||
0: abbbb
|
||
1: bbbb
|
||
\= Expect no match
|
||
bbbbb
|
||
No match
|
||
|
||
/ab\d{0}e/
|
||
abe
|
||
0: abe
|
||
\= Expect 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
|
||
|
||
/<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
|
||
\= Expect 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
|
||
a\bx\n
|
||
0: x
|
||
a\nx\n
|
||
0: x
|
||
\= Expect no match
|
||
x\nb\n
|
||
No match
|
||
|
||
/(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
|
||
\= Expect no match
|
||
barfoo
|
||
No match
|
||
towbarfoo
|
||
No match
|
||
|
||
/\w{3}(?<!bar)foo/
|
||
catfood
|
||
0: catfoo
|
||
\= Expect no match
|
||
foo
|
||
No match
|
||
barfoo
|
||
No match
|
||
towbarfoo
|
||
No match
|
||
|
||
/(?<=(foo)a)bar/
|
||
fooabar
|
||
0: bar
|
||
1: foo
|
||
\= Expect no match
|
||
bar
|
||
No match
|
||
foobbar
|
||
No match
|
||
|
||
/\Aabc\z/m
|
||
abc
|
||
0: abc
|
||
\= Expect 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/and/foo
|
||
0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
|
||
\= Expect no match
|
||
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
|
||
No match
|
||
|
||
/(?>(\.\d\d[1-9]?))\d+/
|
||
1.230003938
|
||
0: .230003938
|
||
1: .23
|
||
1.875000282
|
||
0: .875000282
|
||
1: .875
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
No match
|
||
|
||
/a(?-i)b/i
|
||
ab
|
||
0: ab
|
||
Ab
|
||
0: Ab
|
||
\= Expect no match
|
||
aB
|
||
No match
|
||
AB
|
||
No match
|
||
|
||
/(a (?x)b c)d e/
|
||
a bcd e
|
||
0: a bcd e
|
||
1: a bc
|
||
\= Expect 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
|
||
\= Expect no match
|
||
abcdef
|
||
No match
|
||
|
||
/(a(?i)b)c/
|
||
abc
|
||
0: abc
|
||
1: ab
|
||
aBc
|
||
0: aBc
|
||
1: aB
|
||
\= Expect 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
|
||
\= Expect no match
|
||
ABC
|
||
No match
|
||
abC
|
||
No match
|
||
aBC
|
||
No match
|
||
|
||
/a(?i:b)*c/
|
||
aBc
|
||
0: aBc
|
||
aBBc
|
||
0: aBBc
|
||
\= Expect no match
|
||
aBC
|
||
No match
|
||
aBBC
|
||
No match
|
||
|
||
/a(?=b(?i)c)\w\wd/
|
||
abcd
|
||
0: abcd
|
||
abCd
|
||
0: abCd
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
Abc
|
||
No match
|
||
abAb
|
||
No match
|
||
abbC
|
||
No match
|
||
|
||
/(?=a(?i)b)\w\wc/
|
||
abc
|
||
0: abc
|
||
aBc
|
||
0: aBc
|
||
\= Expect 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
|
||
\= Expect no match
|
||
Abxxc
|
||
No match
|
||
ABxxc
|
||
No match
|
||
abxxC
|
||
No match
|
||
|
||
/(?:(a)|b)(?(1)A|B)/
|
||
aA
|
||
0: aA
|
||
1: a
|
||
bB
|
||
0: bB
|
||
\= Expect no match
|
||
aB
|
||
No match
|
||
bA
|
||
No match
|
||
|
||
/^(a)?(?(1)a|b)+$/
|
||
aa
|
||
0: aa
|
||
1: a
|
||
b
|
||
0: b
|
||
bb
|
||
0: bb
|
||
\= Expect 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
|
||
\= Expect no match
|
||
xyz
|
||
No match
|
||
|
||
/^(?(?!abc)\d\d|\w{3}:)$/
|
||
abc:
|
||
0: abc:
|
||
12
|
||
0: 12
|
||
\= Expect no match
|
||
123
|
||
No match
|
||
xyz
|
||
No match
|
||
|
||
/(?(?<=foo)bar|cat)/
|
||
foobar
|
||
0: bar
|
||
cat
|
||
0: cat
|
||
fcat
|
||
0: cat
|
||
focat
|
||
0: cat
|
||
\= Expect no match
|
||
foocat
|
||
No match
|
||
|
||
/(?(?<!foo)cat|bar)/
|
||
foobar
|
||
0: bar
|
||
cat
|
||
0: cat
|
||
fcat
|
||
0: cat
|
||
focat
|
||
0: cat
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
sep-12-98
|
||
No match
|
||
|
||
/(?<=(foo))bar\1/
|
||
foobarfoo
|
||
0: barfoo
|
||
1: foo
|
||
foobarfootling
|
||
0: barfoo
|
||
1: foo
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
aCD
|
||
No match
|
||
XY
|
||
No match
|
||
|
||
/(?<=foo\n)^bar/m
|
||
foo\nbar
|
||
0: bar
|
||
\= Expect no match
|
||
bar
|
||
No match
|
||
baz\nbar
|
||
No match
|
||
|
||
/(?<=(?<!foo)bar)baz/
|
||
barbaz
|
||
0: baz
|
||
barbarbaz
|
||
0: baz
|
||
koobarbaz
|
||
0: baz
|
||
\= Expect 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
|
||
# recursive references in Perl, as far as 5.11.3 - see some stuff in test #2.
|
||
|
||
/^(a\1?){4}$/
|
||
aaaaa
|
||
0: aaaaa
|
||
1: a
|
||
aaaaaaa
|
||
0: aaaaaaa
|
||
1: a
|
||
aaaaaaaaaa
|
||
0: aaaaaaaaaa
|
||
1: aaaa
|
||
\= Expect no match
|
||
a
|
||
No match
|
||
aa
|
||
No match
|
||
aaa
|
||
No match
|
||
aaaaaaaa
|
||
No match
|
||
aaaaaaaaa
|
||
No match
|
||
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?)$/
|
||
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
|
||
aaaaaaaaaa
|
||
0: aaaaaaaaaa
|
||
1: a
|
||
2: aa
|
||
3: aaa
|
||
4: aaaa
|
||
\= Expect no match
|
||
a
|
||
No match
|
||
aa
|
||
No match
|
||
aaa
|
||
No match
|
||
aaaaaaaa
|
||
No match
|
||
aaaaaaaaa
|
||
No match
|
||
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.
|
||
|
||
/abc/
|
||
abc
|
||
0: abc
|
||
xabcy
|
||
0: abc
|
||
ababc
|
||
0: abc
|
||
\= Expect 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
|
||
\= Expect 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/
|
||
\= Expect 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
|
||
\= Expect no match
|
||
abbbbc
|
||
No match
|
||
abcc
|
||
No match
|
||
|
||
/^abc/
|
||
abcc
|
||
0: abc
|
||
|
||
/^abc$/
|
||
|
||
/abc$/
|
||
aabc
|
||
0: abc
|
||
\= Expect no match
|
||
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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
abd
|
||
No match
|
||
abd
|
||
No match
|
||
|
||
/a[^-b]c/
|
||
adc
|
||
0: adc
|
||
|
||
/a[^]b]c/
|
||
adc
|
||
0: adc
|
||
a-c
|
||
0: a-c
|
||
\= Expect no match
|
||
a]c
|
||
No match
|
||
|
||
/\ba\b/
|
||
a-
|
||
0: a
|
||
-a
|
||
0: a
|
||
-a-
|
||
0: a
|
||
|
||
/\by\b/
|
||
\= Expect no match
|
||
xy
|
||
No match
|
||
yz
|
||
No match
|
||
xyz
|
||
No match
|
||
|
||
/\Ba\B/
|
||
\= Expect no match
|
||
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: -
|
||
\= Expect no match
|
||
a
|
||
No match
|
||
|
||
/a\sb/
|
||
a b
|
||
0: a b
|
||
|
||
/a\Sb/
|
||
a-b
|
||
0: a-b
|
||
\= Expect no match
|
||
a b
|
||
No match
|
||
|
||
/\d/
|
||
1
|
||
0: 1
|
||
|
||
/\D/
|
||
-
|
||
0: -
|
||
\= Expect no match
|
||
1
|
||
No match
|
||
|
||
/[\w]/
|
||
a
|
||
0: a
|
||
|
||
/[\W]/
|
||
-
|
||
0: -
|
||
\= Expect no match
|
||
a
|
||
No match
|
||
|
||
/a[\s]b/
|
||
a b
|
||
0: a b
|
||
|
||
/a[\S]b/
|
||
a-b
|
||
0: a-b
|
||
\= Expect no match
|
||
a b
|
||
No match
|
||
|
||
/[\d]/
|
||
1
|
||
0: 1
|
||
|
||
/[\D]/
|
||
-
|
||
0: -
|
||
\= Expect no match
|
||
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/
|
||
\= Expect no match
|
||
b
|
||
No match
|
||
|
||
/a*/
|
||
\
|
||
0:
|
||
|
||
/([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/
|
||
\= Expect 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
|
||
\= Expect 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/
|
||
\= Expect 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
|
||
ab
|
||
0: a
|
||
1: a
|
||
\= Expect no match
|
||
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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
AABC
|
||
0: AABC
|
||
\= Expect no match
|
||
AXYZD
|
||
No match
|
||
|
||
/a[bc]d/i
|
||
ABD
|
||
0: ABD
|
||
|
||
/a[b-d]e/i
|
||
ACE
|
||
0: ACE
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect 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])*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
|
||
\= Expect no match
|
||
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
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
AB
|
||
No match
|
||
aaaaaaaaa
|
||
No match
|
||
aaaaaaaaaaa
|
||
No match
|
||
|
||
/^(a(?(1)\1)){4}$/
|
||
aaaaaaaaaa
|
||
0: aaaaaaaaaa
|
||
1: aaaa
|
||
\= Expect 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
|
||
\= Expect 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/
|
||
\= Expect 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/
|
||
\= Expect 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
|
||
aB
|
||
0: aB
|
||
\= Expect no match
|
||
Ab
|
||
No match
|
||
AB
|
||
No match
|
||
|
||
/(?-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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
Ab
|
||
No match
|
||
AB
|
||
No match
|
||
|
||
/((?-i:a))b/i
|
||
|
||
/((?-i:a.))b/i
|
||
\= Expect 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/
|
||
\= Expect 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
|
||
\= Expect 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/
|
||
\= Expect 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)/
|
||
\= Expect 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
|
||
\= Expect no match
|
||
a
|
||
No match
|
||
blah)
|
||
No match
|
||
(blah
|
||
No match
|
||
|
||
/^(\(+)?blah(?(1)(\)))$/
|
||
(blah)
|
||
0: (blah)
|
||
1: (
|
||
2: )
|
||
blah
|
||
0: blah
|
||
\= Expect no match
|
||
blah)
|
||
No match
|
||
(blah
|
||
No match
|
||
|
||
/(?(?!a)a|b)/
|
||
|
||
/(?(?!a)b|a)/
|
||
a
|
||
0: a
|
||
|
||
/(?(?=a)b|a)/
|
||
\= Expect 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/
|
||
\= Expect 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
|
||
\= Expect no match
|
||
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/
|
||
\= Expect 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
|
||
|
||
/^(?>(?(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:
|
||
\= Expect 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
|
||
\= Expect 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
|
||
\= Expect no match
|
||
word cat dog elephant mussel cow horse canary baboon snake shark
|
||
No match
|
||
|
||
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
|
||
\= Expect no match
|
||
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
|
||
\= Expect no match
|
||
123abcfoo
|
||
No match
|
||
|
||
/(?<=(?!...999)\d{3})foo/
|
||
999foo
|
||
0: foo
|
||
123999foo
|
||
0: foo
|
||
\= Expect no match
|
||
123abcfoo
|
||
No match
|
||
|
||
/(?<=\d{3}(?!999)...)foo/
|
||
123abcfoo
|
||
0: foo
|
||
123456foo
|
||
0: foo
|
||
\= Expect no match
|
||
123999foo
|
||
No match
|
||
|
||
/(?<=\d{3}...)(?<!999)foo/
|
||
123abcfoo
|
||
0: foo
|
||
123456foo
|
||
0: foo
|
||
\= Expect 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:
|
||
|
||
/^[\d-a]/
|
||
abcde
|
||
0: a
|
||
-things
|
||
0: -
|
||
0digit
|
||
0: 0
|
||
\= Expect no match
|
||
bcdef
|
||
No match
|
||
|
||
/[\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
|
||
\= Expect no match
|
||
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
|
||
#\= Expect 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
|
||
\= Expect no match
|
||
xyzabc
|
||
No match
|
||
|
||
/a(?x: b c )d/
|
||
XabcdY
|
||
0: abcd
|
||
\= Expect 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
|
||
\= Expect no match
|
||
XabcY
|
||
No match
|
||
|
||
/((?i)AB(?-i)C|D)E/
|
||
abCE
|
||
0: abCE
|
||
1: abC
|
||
DE
|
||
0: DE
|
||
1: D
|
||
\= Expect 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:
|
||
\= Expect 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: ]
|
||
#\= Expect no match
|
||
# b
|
||
#No match
|
||
|
||
#TODO: PCRE has an optimization to make this workable, .NET does not
|
||
#/(a+)*b/
|
||
#\= Expect no match
|
||
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
#No match
|
||
|
||
# All these had to be updated because we understand unicode
|
||
# and this looks like it's expecting single byte matches
|
||
|
||
# .NET generates \xe4...not sure what's up, might just be different code pages
|
||
/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
|
||
REGular
|
||
0: REGular
|
||
regulaer
|
||
0: regulaer
|
||
Regex
|
||
0: Regex
|
||
regulär
|
||
0: regul\xc3\xa4r
|
||
|
||
#/Åæåä[à-ÿÀ-ß]+/
|
||
# Åæåäà
|
||
# 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
|
||
\= Expect no match
|
||
abcddefg
|
||
No match
|
||
|
||
/(?<![^f]oo)(bar)/
|
||
foobarX
|
||
0: bar
|
||
1: bar
|
||
\= Expect no match
|
||
boobarX
|
||
No match
|
||
|
||
/(?<![^f])X/
|
||
offX
|
||
0: X
|
||
\= Expect no match
|
||
onyX
|
||
No match
|
||
|
||
/(?<=[^f])X/
|
||
onyX
|
||
0: X
|
||
\= Expect no match
|
||
offX
|
||
No match
|
||
|
||
/(?:(?(1)a|b)(X))+/
|
||
bXaX
|
||
0: bXaX
|
||
1: X
|
||
|
||
/(?:(?(1)\1a|b)(X|Y))+/
|
||
bXXaYYaY
|
||
0: bXXaYYaY
|
||
1: Y
|
||
bXYaXXaX
|
||
0: bX
|
||
1: X
|
||
|
||
# TODO: I think this is a difference caused by the
|
||
# collision of group numbers, but not sure
|
||
#/()()()()()()()()()(?:(?(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: #
|
||
\= Expect no match
|
||
#
|
||
No match
|
||
|
||
"(?x-is)(?:(?-ixs) \s*#\s*) include"
|
||
A #include
|
||
0: #include
|
||
\= Expect 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
|
||
#\= Expect no match
|
||
# E
|
||
#No match
|
||
|
||
#/^[a-\Ec]/
|
||
# b
|
||
# 0: b
|
||
#\= Expect no match
|
||
# -
|
||
#No match
|
||
# E
|
||
#No match
|
||
|
||
#/^[a\E\E-\Ec]/
|
||
# b
|
||
# 0: b
|
||
#\= Expect no match
|
||
# -
|
||
#No match
|
||
# E
|
||
#No match
|
||
|
||
#/^[\E\Qa\E-\Qz\E]+/
|
||
# b
|
||
# 0: b
|
||
#\= Expect 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:
|
||
|
||
# this is really long with debug -- removing for now
|
||
#/(a|)*\d/
|
||
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
||
# 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
||
# 1:
|
||
#\= Expect no match
|
||
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
#No match
|
||
|
||
/(?>a|)*\d/
|
||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
||
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
||
\= Expect no match
|
||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
No match
|
||
|
||
/(?:a|)*\d/
|
||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
||
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
||
\= Expect no match
|
||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||
No match
|
||
|
||
/^(?s)(?>.*)(?<!\n)/
|
||
abc
|
||
0: abc
|
||
\= Expect no match
|
||
abc\n
|
||
No match
|
||
|
||
/^(?![^\n]*\n\z)/
|
||
abc
|
||
0:
|
||
\= Expect no match
|
||
abc\n
|
||
No match
|
||
|
||
/\z(?<!\n)/
|
||
abc
|
||
0:
|
||
\= Expect no match
|
||
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]/
|
||
\= Expect no match
|
||
fooabcfoo
|
||
No match
|
||
|
||
/(?(?=.*b)b|^)/
|
||
adc
|
||
0:
|
||
abc
|
||
0: b
|
||
|
||
/(?(?=^.*b)b|^)/
|
||
adc
|
||
0:
|
||
\= Expect no match
|
||
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
|
||
\= Expect no match
|
||
XABX
|
||
No match
|
||
|
||
/[\x00-\xff\s]+/
|
||
\x0a\x0b\x0c\x0d
|
||
0: \x0a\x0b\x0c\x0d
|
||
|
||
/(abc)\1/i
|
||
\= Expect no match
|
||
abc
|
||
No match
|
||
|
||
/(abc)\1/
|
||
\= Expect no match
|
||
abc
|
||
No match
|
||
|
||
/[^a]*/i
|
||
12abc
|
||
0: 12
|
||
12ABC
|
||
0: 12
|
||
|
||
#Posses
|
||
/[^a]*/i
|
||
12abc
|
||
0: 12
|
||
12ABC
|
||
0: 12
|
||
|
||
/[^a]*?X/i
|
||
\= Expect no match
|
||
12abc
|
||
No match
|
||
12ABC
|
||
No match
|
||
|
||
/[^a]+?X/i
|
||
\= Expect 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]{2,3}/i
|
||
abcdef
|
||
0: bcd
|
||
ABCDEF
|
||
0: BCD
|
||
|
||
/[^a]{2,3}?/i
|
||
abcdef
|
||
0: bc
|
||
ABCDEF
|
||
0: BC
|
||
|
||
/((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: <unset>
|
||
2: a
|
||
3: ac
|
||
|
||
/(?>(?>(a))b|(a)c)/
|
||
ac
|
||
0: ac
|
||
1: <unset>
|
||
2: a
|
||
|
||
/((?>(a+)b)+(aabab))/
|
||
aaaabaaabaabab
|
||
0: aaaabaaabaabab
|
||
1: aaaabaaabaabab
|
||
2: aaa
|
||
3: aabab
|
||
|
||
/(?>a+|ab)+?c/
|
||
\= Expect no match
|
||
aabc
|
||
No match
|
||
|
||
/(?>a+|ab)+c/
|
||
\= Expect no match
|
||
aabc
|
||
No match
|
||
|
||
/(?:a+|ab)+c/
|
||
aabc
|
||
0: aabc
|
||
|
||
/^(?:a|ab)+c/
|
||
aaaabc
|
||
0: aaaabc
|
||
|
||
/(?=abc){0}xyz/
|
||
xyz
|
||
0: xyz
|
||
|
||
/(?=abc){1}xyz/
|
||
\= Expect no match
|
||
xyz
|
||
No match
|
||
|
||
/(?=(a))?./
|
||
ab
|
||
0: a
|
||
1: a
|
||
bc
|
||
0: b
|
||
|
||
/(?=(a))??./
|
||
ab
|
||
0: a
|
||
bc
|
||
0: b
|
||
|
||
/^(?!a){0}\w+/
|
||
aaaaa
|
||
0: aaaaa
|
||
|
||
/(?<=(abc))?xyz/
|
||
abcxyz
|
||
0: xyz
|
||
1: abc
|
||
pqrxyz
|
||
0: xyz
|
||
|
||
/^[g<a>]+/
|
||
ggg<<<aaa>>>
|
||
0: ggg<<<aaa>>>
|
||
\= Expect no match
|
||
\\ga
|
||
No match
|
||
|
||
/^[ga]+/
|
||
gggagagaxyz
|
||
0: gggagaga
|
||
|
||
/[:a]xxx[b:]/
|
||
:xxx:
|
||
0: :xxx:
|
||
|
||
/(?<=a{2})b/i
|
||
xaabc
|
||
0: b
|
||
\= Expect no match
|
||
xabc
|
||
No match
|
||
|
||
/(?<!a{2})b/i
|
||
xabc
|
||
0: b
|
||
\= Expect no match
|
||
xaabc
|
||
No match
|
||
|
||
/(?<=[^a]{2})b/
|
||
axxbc
|
||
0: b
|
||
aAAbc
|
||
0: b
|
||
\= Expect no match
|
||
xaabc
|
||
No match
|
||
|
||
/(?<=[^a]{2})b/i
|
||
axxbc
|
||
0: b
|
||
\= Expect no match
|
||
aAAbc
|
||
No match
|
||
xaabc
|
||
No match
|
||
|
||
#/(?|(abc)|(xyz))\1/
|
||
# abcabc
|
||
# 0: abcabc
|
||
# 1: abc
|
||
# xyzxyz
|
||
# 0: xyzxyz
|
||
# 1: xyz
|
||
#\= Expect no match
|
||
# abcxyz
|
||
#No match
|
||
# xyzabc
|
||
#No match
|
||
|
||
#/(?|(abc)|(xyz))(?1)/
|
||
# abcabc
|
||
# 0: abcabc
|
||
# 1: abc
|
||
# xyzabc
|
||
# 0: xyzabc
|
||
# 1: xyz
|
||
#\= Expect 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
|
||
\= Expect 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
|
||
|
||
# .NET has more consistent grouping numbers with these dupe groups for the two options
|
||
/(?: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: "
|
||
2: <unset>
|
||
3: "
|
||
\= Expect no match
|
||
b\"11111
|
||
No match
|
||
|
||
#/(?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
|
||
|
||
# Check the use of names for failure
|
||
|
||
# Check opening parens in comment when seeking forward reference.
|
||
|
||
#/(?P<abn>(?P=abn)xxx|)+/
|
||
# xxx
|
||
# 0:
|
||
# 1:
|
||
|
||
#Posses
|
||
/^(a)?(\w)/
|
||
aaaaX
|
||
0: aa
|
||
1: a
|
||
2: a
|
||
YZ
|
||
0: Y
|
||
1: <unset>
|
||
2: Y
|
||
|
||
#Posses
|
||
/^(?:a)?(\w)/
|
||
aaaaX
|
||
0: aa
|
||
1: a
|
||
YZ
|
||
0: Y
|
||
1: Y
|
||
|
||
/\A.*?(a|bc)/
|
||
ba
|
||
0: ba
|
||
1: a
|
||
|
||
/\A.*?(?:a|bc|d)/
|
||
ba
|
||
0: ba
|
||
|
||
# --------------------------
|
||
|
||
/(another)?(\1?)test/
|
||
hello world test
|
||
0: test
|
||
1: <unset>
|
||
2:
|
||
|
||
/(another)?(\1+)test/
|
||
\= Expect no match
|
||
hello world test
|
||
No match
|
||
|
||
/((?:a?)*)*c/
|
||
aac
|
||
0: aac
|
||
1:
|
||
|
||
/((?>a?)*)*c/
|
||
aac
|
||
0: aac
|
||
1:
|
||
|
||
/(?>.*?a)(?<=ba)/
|
||
aba
|
||
0: ba
|
||
|
||
/(?:.*?a)(?<=ba)/
|
||
aba
|
||
0: aba
|
||
|
||
/(?>.*?a)b/s
|
||
aab
|
||
0: ab
|
||
|
||
/(?>.*?a)b/
|
||
aab
|
||
0: ab
|
||
|
||
/(?>^a)b/s
|
||
\= Expect no match
|
||
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"
|
||
\= Expect no match
|
||
abcdfooxyz
|
||
No match
|
||
|
||
"(?>.*?)foo"
|
||
abcdfooxyz
|
||
0: foo
|
||
|
||
# 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.
|
||
|
||
/a(?=bc).|abd/
|
||
abd
|
||
0: abd
|
||
abc
|
||
0: ab
|
||
|
||
/a(?>bc)d|abd/
|
||
abceabd
|
||
0: abd
|
||
|
||
# These tests were formerly in test 2, but changes in PCRE and Perl have
|
||
# made them compatible.
|
||
|
||
/^(a)?(?(1)a|b)+$/
|
||
\= Expect no match
|
||
a
|
||
No match
|
||
|
||
# ----
|
||
|
||
/^\d*\w{4}/
|
||
1234
|
||
0: 1234
|
||
\= Expect no match
|
||
123
|
||
No match
|
||
|
||
/^[^b]*\w{4}/
|
||
aaaa
|
||
0: aaaa
|
||
\= Expect no match
|
||
aaa
|
||
No match
|
||
|
||
/^[^b]*\w{4}/i
|
||
aaaa
|
||
0: aaaa
|
||
\= Expect no match
|
||
aaa
|
||
No match
|
||
|
||
/^a*\w{4}/
|
||
aaaa
|
||
0: aaaa
|
||
\= Expect no match
|
||
aaa
|
||
No match
|
||
|
||
/^a*\w{4}/i
|
||
aaaa
|
||
0: aaaa
|
||
\= Expect no match
|
||
aaa
|
||
No match
|
||
|
||
/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
|
||
foofoo
|
||
0: foofoo
|
||
1: foo
|
||
barbar
|
||
0: barbar
|
||
1: bar
|
||
|
||
# A notable difference between PCRE and .NET. According to
|
||
# the PCRE docs:
|
||
# If you make a subroutine call to a non-unique named
|
||
# subpattern, the one that corresponds to the first
|
||
# occurrence of the name is used. In the absence of
|
||
# duplicate numbers (see the previous section) this is
|
||
# the one with the lowest number.
|
||
# .NET takes the most recently captured number according to MSDN:
|
||
# A backreference refers to the most recent definition of
|
||
# a group (the definition most immediately to the left,
|
||
# when matching left to right). When a group makes multiple
|
||
# captures, a backreference refers to the most recent capture.
|
||
|
||
#/(?<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
|
||
#\= Expect 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
|
||
|
||
# TODO: .NET's group number ordering here in the second example is a bit odd
|
||
/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?(A)x) (?(B)y)$/x,dupnames
|
||
Ax
|
||
0: Ax
|
||
1: A
|
||
BAxy
|
||
0: BAxy
|
||
1: A
|
||
2: B
|
||
|
||
/ ^ 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
|
||
|
||
/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
|
||
\= Expect no match
|
||
acb
|
||
No match
|
||
|
||
#Posses
|
||
#/\A(?:[^\"]+|\"(?:[^\"]*|\"\")*\")+/
|
||
# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||
# 0: NON QUOTED "QUOT""ED" AFTER
|
||
|
||
#Posses
|
||
#/\A(?:[^\"]+|\"(?:[^\"]+|\"\")*\")+/
|
||
# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||
# 0: NON QUOTED "QUOT""ED" AFTER
|
||
|
||
#Posses
|
||
#/\A(?:[^\"]+|\"(?:[^\"]+|\"\")+\")+/
|
||
# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
||
# 0: NON QUOTED "QUOT""ED" AFTER
|
||
|
||
#Posses
|
||
#/\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<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/
|
||
\x0babc
|
||
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
|
||
|
||
/(|ab)*?d/
|
||
abd
|
||
0: abd
|
||
1: ab
|
||
xyd
|
||
0: d
|
||
|
||
/(\2|a)(\1)/
|
||
aaa
|
||
0: aa
|
||
1: a
|
||
2: a
|
||
|
||
/(\2)(\1)/
|
||
|
||
"Z*(|d*){216}"
|
||
|
||
/((((((((((((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
|
||
|
||
#"(?|(\k'Pm')|(?'Pm'))"
|
||
# abcd
|
||
# 0:
|
||
# 1:
|
||
|
||
#/(?|(aaa)|(b))\g{1}/
|
||
# aaaaaa
|
||
# 0: aaaaaa
|
||
# 1: aaa
|
||
# bb
|
||
# 0: bb
|
||
# 1: b
|
||
|
||
#/(?|(aaa)|(b))(?1)/
|
||
# aaaaaa
|
||
# 0: aaaaaa
|
||
# 1: aaa
|
||
# baaa
|
||
# 0: baaa
|
||
# 1: b
|
||
#\= Expect no match
|
||
# bb
|
||
#No match
|
||
|
||
#/(?|(aaa)|(b))/
|
||
# xaaa
|
||
# 0: aaa
|
||
# 1: aaa
|
||
# xbc
|
||
# 0: b
|
||
# 1: b
|
||
|
||
#/(?|(?'a'aaa)|(?'a'b))\k'a'/
|
||
# aaaaaa
|
||
# 0: aaaaaa
|
||
# 1: aaa
|
||
# bb
|
||
# 0: bb
|
||
# 1: b
|
||
|
||
#/(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/dupnames
|
||
# aaaccccaaa
|
||
# 0: aaaccccaaa
|
||
# 1: aaa
|
||
# 2: cccc
|
||
# bccccb
|
||
# 0: bccccb
|
||
# 1: b
|
||
# 2: cccc
|
||
|
||
# End of testinput1
|