You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7923 lines
126 KiB
7923 lines
126 KiB
# This set of tests check the DFA matching functionality of pcre2_dfa_match(),
|
|
# excluding UTF and Unicode property support. All matches are done using DFA,
|
|
# forced by setting a default subject modifier at the start.
|
|
|
|
#forbid_utf
|
|
#subject dfa
|
|
#newline_default lf anycrlf any
|
|
|
|
/abc/
|
|
abc
|
|
0: abc
|
|
|
|
/ab*c/
|
|
abc
|
|
0: abc
|
|
abbbbc
|
|
0: abbbbc
|
|
ac
|
|
0: ac
|
|
|
|
/ab+c/
|
|
abc
|
|
0: abc
|
|
abbbbbbc
|
|
0: abbbbbbc
|
|
\= Expect no match
|
|
ac
|
|
No match
|
|
ab
|
|
No match
|
|
|
|
/a*/no_auto_possess
|
|
a
|
|
0: a
|
|
1:
|
|
aaaaaaaaaaaaaaaaa
|
|
Matched, but offsets vector is too small to show all matches
|
|
0: aaaaaaaaaaaaaaaaa
|
|
1: aaaaaaaaaaaaaaaa
|
|
2: aaaaaaaaaaaaaaa
|
|
3: aaaaaaaaaaaaaa
|
|
4: aaaaaaaaaaaaa
|
|
5: aaaaaaaaaaaa
|
|
6: aaaaaaaaaaa
|
|
7: aaaaaaaaaa
|
|
8: aaaaaaaaa
|
|
9: aaaaaaaa
|
|
10: aaaaaaa
|
|
11: aaaaaa
|
|
12: aaaaa
|
|
13: aaaa
|
|
14: aaa
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=ovector=10
|
|
Matched, but offsets vector is too small to show all matches
|
|
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
4: aaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
5: aaaaaaaaaaaaaaaaaaaaaaaaa
|
|
6: aaaaaaaaaaaaaaaaaaaaaaaa
|
|
7: aaaaaaaaaaaaaaaaaaaaaaa
|
|
8: aaaaaaaaaaaaaaaaaaaaaa
|
|
9: aaaaaaaaaaaaaaaaaaaaa
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=dfa_shortest
|
|
0:
|
|
|
|
/(a|abcd|african)/
|
|
a
|
|
0: a
|
|
abcd
|
|
0: abcd
|
|
1: a
|
|
african
|
|
0: african
|
|
1: a
|
|
|
|
/^abc/
|
|
abcdef
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabc
|
|
No match
|
|
xyz\nabc
|
|
No match
|
|
|
|
/^abc/m
|
|
abcdef
|
|
0: abc
|
|
xyz\nabc
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabc
|
|
No match
|
|
|
|
/\Aabc/
|
|
abcdef
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabc
|
|
No match
|
|
xyz\nabc
|
|
No match
|
|
|
|
/\Aabc/m
|
|
abcdef
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabc
|
|
No match
|
|
xyz\nabc
|
|
No match
|
|
|
|
/\Gabc/
|
|
abcdef
|
|
0: abc
|
|
xyzabc\=offset=3
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabc
|
|
No match
|
|
xyzabc\=offset=2
|
|
No match
|
|
|
|
/x\dy\Dz/
|
|
x9yzz
|
|
0: x9yzz
|
|
x0y+z
|
|
0: x0y+z
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
xxy0z
|
|
No match
|
|
|
|
/x\sy\Sz/
|
|
x yzz
|
|
0: x yzz
|
|
x y+z
|
|
0: x y+z
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
xxyyz
|
|
No match
|
|
|
|
/x\wy\Wz/
|
|
xxy+z
|
|
0: xxy+z
|
|
\= Expect no match
|
|
xxy0z
|
|
No match
|
|
x+y+z
|
|
No match
|
|
|
|
/x.y/
|
|
x+y
|
|
0: x+y
|
|
x-y
|
|
0: x-y
|
|
\= Expect no match
|
|
x\ny
|
|
No match
|
|
|
|
/x.y/s
|
|
x+y
|
|
0: x+y
|
|
x-y
|
|
0: x-y
|
|
x\ny
|
|
0: x\x0ay
|
|
|
|
/(a.b(?s)c.d|x.y)p.q/
|
|
a+bc+dp+q
|
|
0: a+bc+dp+q
|
|
a+bc\ndp+q
|
|
0: a+bc\x0adp+q
|
|
x\nyp+q
|
|
0: x\x0ayp+q
|
|
\= Expect no match
|
|
a\nbc\ndp+q
|
|
No match
|
|
a+bc\ndp\nq
|
|
No match
|
|
x\nyp\nq
|
|
No match
|
|
|
|
/a\d\z/
|
|
ba0
|
|
0: a0
|
|
\= Expect no match
|
|
ba0\n
|
|
No match
|
|
ba0\ncd
|
|
No match
|
|
|
|
/a\d\z/m
|
|
ba0
|
|
0: a0
|
|
\= Expect no match
|
|
ba0\n
|
|
No match
|
|
ba0\ncd
|
|
No match
|
|
|
|
/a\d\Z/
|
|
ba0
|
|
0: a0
|
|
ba0\n
|
|
0: a0
|
|
\= Expect no match
|
|
ba0\ncd
|
|
No match
|
|
|
|
/a\d\Z/m
|
|
ba0
|
|
0: a0
|
|
ba0\n
|
|
0: a0
|
|
\= Expect no match
|
|
ba0\ncd
|
|
No match
|
|
|
|
/a\d$/
|
|
ba0
|
|
0: a0
|
|
ba0\n
|
|
0: a0
|
|
\= Expect no match
|
|
ba0\ncd
|
|
No match
|
|
|
|
/a\d$/m
|
|
ba0
|
|
0: a0
|
|
ba0\n
|
|
0: a0
|
|
ba0\ncd
|
|
0: a0
|
|
|
|
/abc/i
|
|
abc
|
|
0: abc
|
|
aBc
|
|
0: aBc
|
|
ABC
|
|
0: ABC
|
|
|
|
/[^a]/
|
|
abcd
|
|
0: b
|
|
|
|
/ab?\w/
|
|
abz
|
|
0: abz
|
|
1: ab
|
|
abbz
|
|
0: abb
|
|
1: ab
|
|
azz
|
|
0: az
|
|
|
|
/x{0,3}yz/
|
|
ayzq
|
|
0: yz
|
|
axyzq
|
|
0: xyz
|
|
axxyz
|
|
0: xxyz
|
|
axxxyzq
|
|
0: xxxyz
|
|
axxxxyzq
|
|
0: xxxyz
|
|
\= Expect no match
|
|
ax
|
|
No match
|
|
axx
|
|
No match
|
|
|
|
/x{3}yz/
|
|
axxxyzq
|
|
0: xxxyz
|
|
axxxxyzq
|
|
0: xxxyz
|
|
\= Expect no match
|
|
ax
|
|
No match
|
|
axx
|
|
No match
|
|
ayzq
|
|
No match
|
|
axyzq
|
|
No match
|
|
axxyz
|
|
No match
|
|
|
|
/x{2,3}yz/
|
|
axxyz
|
|
0: xxyz
|
|
axxxyzq
|
|
0: xxxyz
|
|
axxxxyzq
|
|
0: xxxyz
|
|
\= Expect no match
|
|
ax
|
|
No match
|
|
axx
|
|
No match
|
|
ayzq
|
|
No match
|
|
axyzq
|
|
No match
|
|
|
|
/[^a]+/no_auto_possess
|
|
bac
|
|
0: b
|
|
bcdefax
|
|
0: bcdef
|
|
1: bcde
|
|
2: bcd
|
|
3: bc
|
|
4: b
|
|
\= Expect no match
|
|
aaaaa
|
|
No match
|
|
|
|
/[^a]*/no_auto_possess
|
|
bac
|
|
0: b
|
|
1:
|
|
bcdefax
|
|
0: bcdef
|
|
1: bcde
|
|
2: bcd
|
|
3: bc
|
|
4: b
|
|
5:
|
|
aaaaa
|
|
0:
|
|
|
|
/[^a]{3,5}/no_auto_possess
|
|
xyz
|
|
0: xyz
|
|
awxyza
|
|
0: wxyz
|
|
1: wxy
|
|
abcdefa
|
|
0: bcdef
|
|
1: bcde
|
|
2: bcd
|
|
abcdefghijk
|
|
0: bcdef
|
|
1: bcde
|
|
2: bcd
|
|
\= Expect no match
|
|
axya
|
|
No match
|
|
axa
|
|
No match
|
|
aaaaa
|
|
No match
|
|
|
|
/\d*/
|
|
1234b567
|
|
0: 1234
|
|
xyz
|
|
0:
|
|
|
|
/\D*/
|
|
a1234b567
|
|
0: a
|
|
xyz
|
|
0: xyz
|
|
|
|
/\d+/
|
|
ab1234c56
|
|
0: 1234
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
|
|
/\D+/
|
|
ab123c56
|
|
0: ab
|
|
\= Expect no match
|
|
789
|
|
No match
|
|
|
|
/\d?A/
|
|
045ABC
|
|
0: 5A
|
|
ABC
|
|
0: A
|
|
\= Expect no match
|
|
XYZ
|
|
No match
|
|
|
|
/\D?A/
|
|
ABC
|
|
0: A
|
|
BAC
|
|
0: BA
|
|
9ABC
|
|
0: A
|
|
|
|
/a+/
|
|
aaaa
|
|
0: aaaa
|
|
|
|
/^.*xyz/
|
|
xyz
|
|
0: xyz
|
|
ggggggggxyz
|
|
0: ggggggggxyz
|
|
|
|
/^.+xyz/
|
|
abcdxyz
|
|
0: abcdxyz
|
|
axyz
|
|
0: axyz
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
|
|
/^.?xyz/
|
|
xyz
|
|
0: xyz
|
|
cxyz
|
|
0: cxyz
|
|
|
|
/^\d{2,3}X/
|
|
12X
|
|
0: 12X
|
|
123X
|
|
0: 123X
|
|
\= Expect no match
|
|
X
|
|
No match
|
|
1X
|
|
No match
|
|
1234X
|
|
No match
|
|
|
|
/^[abcd]\d/
|
|
a45
|
|
0: a4
|
|
b93
|
|
0: b9
|
|
c99z
|
|
0: c9
|
|
d04
|
|
0: d0
|
|
\= Expect no match
|
|
e45
|
|
No match
|
|
abcd
|
|
No match
|
|
abcd1234
|
|
No match
|
|
1234
|
|
No match
|
|
|
|
/^[abcd]*\d/
|
|
a45
|
|
0: a4
|
|
b93
|
|
0: b9
|
|
c99z
|
|
0: c9
|
|
d04
|
|
0: d0
|
|
abcd1234
|
|
0: abcd1
|
|
1234
|
|
0: 1
|
|
\= Expect no match
|
|
e45
|
|
No match
|
|
abcd
|
|
No match
|
|
|
|
/^[abcd]+\d/
|
|
a45
|
|
0: a4
|
|
b93
|
|
0: b9
|
|
c99z
|
|
0: c9
|
|
d04
|
|
0: d0
|
|
abcd1234
|
|
0: abcd1
|
|
\= Expect no match
|
|
1234
|
|
No match
|
|
e45
|
|
No match
|
|
abcd
|
|
No match
|
|
|
|
/^a+X/
|
|
aX
|
|
0: aX
|
|
aaX
|
|
0: aaX
|
|
|
|
/^[abcd]?\d/
|
|
a45
|
|
0: a4
|
|
b93
|
|
0: b9
|
|
c99z
|
|
0: c9
|
|
d04
|
|
0: d0
|
|
1234
|
|
0: 1
|
|
\= Expect no match
|
|
abcd1234
|
|
No match
|
|
e45
|
|
No match
|
|
|
|
/^[abcd]{2,3}\d/
|
|
ab45
|
|
0: ab4
|
|
bcd93
|
|
0: bcd9
|
|
\= Expect no match
|
|
1234
|
|
No match
|
|
a36
|
|
No match
|
|
abcd1234
|
|
No match
|
|
ee45
|
|
No match
|
|
|
|
/^(abc)*\d/
|
|
abc45
|
|
0: abc4
|
|
abcabcabc45
|
|
0: abcabcabc4
|
|
42xyz
|
|
0: 4
|
|
|
|
/^(abc)+\d/
|
|
abc45
|
|
0: abc4
|
|
abcabcabc45
|
|
0: abcabcabc4
|
|
\= Expect no match
|
|
42xyz
|
|
No match
|
|
|
|
/^(abc)?\d/
|
|
abc45
|
|
0: abc4
|
|
42xyz
|
|
0: 4
|
|
\= Expect no match
|
|
abcabcabc45
|
|
No match
|
|
|
|
/^(abc){2,3}\d/
|
|
abcabc45
|
|
0: abcabc4
|
|
abcabcabc45
|
|
0: abcabcabc4
|
|
\= Expect no match
|
|
abcabcabcabc45
|
|
No match
|
|
abc45
|
|
No match
|
|
42xyz
|
|
No match
|
|
|
|
/1(abc|xyz)2(?1)3/
|
|
1abc2abc3456
|
|
0: 1abc2abc3
|
|
1abc2xyz3456
|
|
0: 1abc2xyz3
|
|
|
|
/^(a*\w|ab)=(a*\w|ab)/
|
|
ab=ab
|
|
0: ab=ab
|
|
1: ab=a
|
|
|
|
/^(a*\w|ab)=(?1)/
|
|
ab=ab
|
|
0: ab=ab
|
|
1: ab=a
|
|
|
|
/^([^()]|\((?1)*\))*$/
|
|
abc
|
|
0: abc
|
|
a(b)c
|
|
0: a(b)c
|
|
a(b(c))d
|
|
0: a(b(c))d
|
|
\= Expect no match)
|
|
a(b(c)d
|
|
No match
|
|
|
|
/^>abc>([^()]|\((?1)*\))*<xyz<$/
|
|
>abc>123<xyz<
|
|
0: >abc>123<xyz<
|
|
>abc>1(2)3<xyz<
|
|
0: >abc>1(2)3<xyz<
|
|
>abc>(1(2)3)<xyz<
|
|
0: >abc>(1(2)3)<xyz<
|
|
|
|
/^(?>a*)\d/
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
|
|
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
|
|
\= Expect no match
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
No match
|
|
|
|
/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
|
|
<>
|
|
0: <>
|
|
<abcd>
|
|
0: <abcd>
|
|
<abc <123> hij>
|
|
0: <abc <123> hij>
|
|
<abc <def> hij>
|
|
0: <def>
|
|
<abc<>def>
|
|
0: <abc<>def>
|
|
<abc<>
|
|
0: <>
|
|
\= Expect no match
|
|
<abc
|
|
No match
|
|
|
|
/^(?(?=abc)\w{3}:|\d\d)$/
|
|
abc:
|
|
0: abc:
|
|
12
|
|
0: 12
|
|
\= Expect no match
|
|
123
|
|
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
|
|
|
|
/^(?=abc)\w{5}:$/
|
|
abcde:
|
|
0: abcde:
|
|
\= Expect no match
|
|
abc..
|
|
No match
|
|
123
|
|
No match
|
|
vwxyz
|
|
No match
|
|
|
|
/^(?!abc)\d\d$/
|
|
12
|
|
0: 12
|
|
\= Expect no match
|
|
abcde:
|
|
No match
|
|
abc..
|
|
No match
|
|
123
|
|
No match
|
|
vwxyz
|
|
No match
|
|
|
|
/(?<=abc|xy)123/
|
|
abc12345
|
|
0: 123
|
|
wxy123z
|
|
0: 123
|
|
\= Expect no match
|
|
123abc
|
|
No match
|
|
|
|
/(?<!abc|xy)123/
|
|
123abc
|
|
0: 123
|
|
mno123456
|
|
0: 123
|
|
\= Expect no match
|
|
abc12345
|
|
No match
|
|
wxy123z
|
|
No match
|
|
|
|
/abc(?C1)xyz/
|
|
abcxyz
|
|
--->abcxyz
|
|
1 ^ ^ x
|
|
0: abcxyz
|
|
123abcxyz999
|
|
--->123abcxyz999
|
|
1 ^ ^ x
|
|
0: abcxyz
|
|
|
|
/(ab|cd){3,4}/auto_callout
|
|
ababab
|
|
--->ababab
|
|
+0 ^ (
|
|
+1 ^ a
|
|
+4 ^ c
|
|
+2 ^^ b
|
|
+3 ^ ^ |
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+2 ^ ^ b
|
|
+3 ^ ^ |
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+2 ^ ^ b
|
|
+3 ^ ^ |
|
|
+12 ^ ^ End of pattern
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
0: ababab
|
|
abcdabcd
|
|
--->abcdabcd
|
|
+0 ^ (
|
|
+1 ^ a
|
|
+4 ^ c
|
|
+2 ^^ b
|
|
+3 ^ ^ |
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+5 ^ ^ d
|
|
+6 ^ ^ ){3,4}
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+2 ^ ^ b
|
|
+3 ^ ^ |
|
|
+12 ^ ^ End of pattern
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+5 ^ ^ d
|
|
+6 ^ ^ ){3,4}
|
|
+12 ^ ^ End of pattern
|
|
0: abcdabcd
|
|
1: abcdab
|
|
abcdcdcdcdcd
|
|
--->abcdcdcdcdcd
|
|
+0 ^ (
|
|
+1 ^ a
|
|
+4 ^ c
|
|
+2 ^^ b
|
|
+3 ^ ^ |
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+5 ^ ^ d
|
|
+6 ^ ^ ){3,4}
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+5 ^ ^ d
|
|
+6 ^ ^ ){3,4}
|
|
+12 ^ ^ End of pattern
|
|
+1 ^ ^ a
|
|
+4 ^ ^ c
|
|
+5 ^ ^ d
|
|
+6 ^ ^ ){3,4}
|
|
+12 ^ ^ End of pattern
|
|
0: abcdcdcd
|
|
1: abcdcd
|
|
|
|
/^abc/
|
|
abcdef
|
|
0: abc
|
|
\= Expect no match
|
|
abcdef\=notbol
|
|
No match
|
|
|
|
/^(a*|xyz)/
|
|
bcd
|
|
0:
|
|
aaabcd
|
|
0: aaa
|
|
xyz
|
|
0: xyz
|
|
1:
|
|
xyz\=notempty
|
|
0: xyz
|
|
\= Expect no match
|
|
bcd\=notempty
|
|
No match
|
|
|
|
/xyz$/
|
|
xyz
|
|
0: xyz
|
|
xyz\n
|
|
0: xyz
|
|
\= Expect no match
|
|
xyz\=noteol
|
|
No match
|
|
xyz\n\=noteol
|
|
No match
|
|
|
|
/xyz$/m
|
|
xyz
|
|
0: xyz
|
|
xyz\n
|
|
0: xyz
|
|
abcxyz\npqr
|
|
0: xyz
|
|
abcxyz\npqr\=noteol
|
|
0: xyz
|
|
xyz\n\=noteol
|
|
0: xyz
|
|
\= Expect no match
|
|
xyz\=noteol
|
|
No match
|
|
|
|
/\Gabc/
|
|
abcdef
|
|
0: abc
|
|
defabcxyz\=offset=3
|
|
0: abc
|
|
\= Expect no match
|
|
defabcxyz
|
|
No match
|
|
|
|
/^abcdef/
|
|
ab\=ps
|
|
Partial match: ab
|
|
abcde\=ps
|
|
Partial match: abcde
|
|
abcdef\=ps
|
|
0: abcdef
|
|
\= Expect no match
|
|
abx\=ps
|
|
No match
|
|
|
|
/^a{2,4}\d+z/
|
|
a\=ps
|
|
Partial match: a
|
|
aa\=ps
|
|
Partial match: aa
|
|
aa2\=ps
|
|
Partial match: aa2
|
|
aaa\=ps
|
|
Partial match: aaa
|
|
aaa23\=ps
|
|
Partial match: aaa23
|
|
aaaa12345\=ps
|
|
Partial match: aaaa12345
|
|
aa0z\=ps
|
|
0: aa0z
|
|
aaaa4444444444444z\=ps
|
|
0: aaaa4444444444444z
|
|
\= Expect no match
|
|
az\=ps
|
|
No match
|
|
aaaaa\=ps
|
|
No match
|
|
a56\=ps
|
|
No match
|
|
|
|
/^abcdef/
|
|
abc\=ps
|
|
Partial match: abc
|
|
def\=dfa_restart
|
|
0: def
|
|
|
|
/(?<=foo)bar/
|
|
foob\=ps,offset=2,allusedtext
|
|
Partial match: foob
|
|
<<<
|
|
foobar...\=ps,dfa_restart,offset=4
|
|
0: ar
|
|
foobar\=offset=2
|
|
0: bar
|
|
\= Expect no match
|
|
xyzfo\=ps
|
|
No match
|
|
obar\=dfa_restart
|
|
No match
|
|
|
|
/(ab*(cd|ef))+X/
|
|
lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=ps,notbol,noteol
|
|
Partial match: abbbbbbcdaefabbbbbbbefa
|
|
cdabbbbbbbb\=ps,notbol,dfa_restart,noteol
|
|
Partial match: cdabbbbbbbb
|
|
efabbbbbbbbbbbbbbbb\=ps,notbol,dfa_restart,noteol
|
|
Partial match: efabbbbbbbbbbbbbbbb
|
|
bbbbbbbbbbbbcdXyasdfadf\=ps,notbol,dfa_restart,noteol
|
|
0: bbbbbbbbbbbbcdX
|
|
\= Expect no match
|
|
adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=ps,noteol
|
|
No match
|
|
|
|
/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
|
|
abcabczz
|
|
0: abcabczz
|
|
\= Expect no match
|
|
zz
|
|
No match
|
|
abcabcabczz
|
|
No match
|
|
>>abczz
|
|
No match
|
|
|
|
/^(b+?|a){1,2}?c/
|
|
bc
|
|
0: bc
|
|
bbc
|
|
0: bbc
|
|
bbbc
|
|
0: bbbc
|
|
bac
|
|
0: bac
|
|
bbac
|
|
0: bbac
|
|
aac
|
|
0: aac
|
|
abbbbbbbbbbbc
|
|
0: abbbbbbbbbbbc
|
|
bbbbbbbbbbbac
|
|
0: bbbbbbbbbbbac
|
|
\= Expect no match
|
|
aaac
|
|
No match
|
|
abbbbbbbbbbbac
|
|
No match
|
|
|
|
/^(b+|a){1,2}c/
|
|
bc
|
|
0: bc
|
|
bbc
|
|
0: bbc
|
|
bbbc
|
|
0: bbbc
|
|
bac
|
|
0: bac
|
|
bbac
|
|
0: bbac
|
|
aac
|
|
0: aac
|
|
abbbbbbbbbbbc
|
|
0: abbbbbbbbbbbc
|
|
bbbbbbbbbbbac
|
|
0: bbbbbbbbbbbac
|
|
\= Expect no match
|
|
aaac
|
|
No match
|
|
abbbbbbbbbbbac
|
|
No match
|
|
|
|
/^(b+|a){1,2}?bc/
|
|
bbc
|
|
0: bbc
|
|
|
|
/^(b*|ba){1,2}?bc/
|
|
babc
|
|
0: babc
|
|
bbabc
|
|
0: bbabc
|
|
bababc
|
|
0: bababc
|
|
\= Expect no match
|
|
bababbc
|
|
No match
|
|
babababc
|
|
No match
|
|
|
|
/^(ba|b*){1,2}?bc/
|
|
babc
|
|
0: babc
|
|
bbabc
|
|
0: bbabc
|
|
bababc
|
|
0: bababc
|
|
\= Expect no match
|
|
bababbc
|
|
No match
|
|
babababc
|
|
No match
|
|
|
|
/^\ca\cA\c[\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
|
|
|
|
/^\�/
|
|
�
|
|
0: \x81
|
|
|
|
/^ÿ/
|
|
ÿ
|
|
0: \xff
|
|
|
|
/^[0-9]+$/
|
|
0
|
|
0: 0
|
|
1
|
|
0: 1
|
|
2
|
|
0: 2
|
|
3
|
|
0: 3
|
|
4
|
|
0: 4
|
|
5
|
|
0: 5
|
|
6
|
|
0: 6
|
|
7
|
|
0: 7
|
|
8
|
|
0: 8
|
|
9
|
|
0: 9
|
|
10
|
|
0: 10
|
|
100
|
|
0: 100
|
|
\= 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
|
|
xx123
|
|
0: xx123
|
|
123456
|
|
0: 123456
|
|
x1234
|
|
0: x1234
|
|
\= Expect no match
|
|
123
|
|
No match
|
|
|
|
/^.+?[0-9][0-9][0-9]$/
|
|
x123
|
|
0: x123
|
|
xx123
|
|
0: xx123
|
|
123456
|
|
0: 123456
|
|
x1234
|
|
0: x1234
|
|
\= 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
|
|
\= 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
|
|
No match without a colon
|
|
No match
|
|
|
|
/([\da-f:]+)$/i
|
|
0abc
|
|
0: 0abc
|
|
abc
|
|
0: abc
|
|
fed
|
|
0: fed
|
|
E
|
|
0: E
|
|
::
|
|
0: ::
|
|
5f03:12C0::932e
|
|
0: 5f03:12C0::932e
|
|
fed def
|
|
0: def
|
|
Any old stuff
|
|
0: 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
|
|
A.12.123.0
|
|
0: A.12.123.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 IN SOA non-sp1 non-sp2 (
|
|
0: 1 IN SOA non-sp1 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.
|
|
sxk.zzz.ac.uk.
|
|
0: sxk.zzz.ac.uk.
|
|
x-.y-.
|
|
0: x-.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
|
|
*.c3-b.c
|
|
0: *.c3-b.c
|
|
*.c-a.b-c
|
|
0: *.c-a.b-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
|
|
|
|
/^(?!(ab)de|x)(abd)(f)/
|
|
abdf
|
|
0: abdf
|
|
|
|
/^(?=(ab(cd)))(ab)/
|
|
abcd
|
|
0: ab
|
|
|
|
/^[\da-f](\.[\da-f])*$/i
|
|
a.b.c.d
|
|
0: a.b.c.d
|
|
A.B.C.D
|
|
0: A.B.C.D
|
|
a.b.c.1.2.3.C
|
|
0: a.b.c.1.2.3.C
|
|
|
|
/^\".*\"\s*(;.*)?$/
|
|
\"1234\"
|
|
0: "1234"
|
|
\"abcd\" ;
|
|
0: "abcd" ;
|
|
\"\" ; rhubarb
|
|
0: "" ; rhubarb
|
|
\= Expect no match
|
|
\"1234\" : things
|
|
No match
|
|
|
|
/^$/
|
|
\
|
|
0:
|
|
|
|
/ ^ 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
|
|
|
|
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
|
|
abcdefhijklm
|
|
0: abcdefhijklm
|
|
|
|
/^[\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
|
|
1: a
|
|
aaaz
|
|
0: aaaz
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
a
|
|
0: a
|
|
aa
|
|
0: aa
|
|
1: a
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
a+
|
|
0: a
|
|
aa+
|
|
0: aa
|
|
1: a
|
|
|
|
/^a*?\w/
|
|
z
|
|
0: z
|
|
az
|
|
0: az
|
|
1: a
|
|
aaaz
|
|
0: aaaz
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
a
|
|
0: a
|
|
aa
|
|
0: aa
|
|
1: a
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
a+
|
|
0: a
|
|
aa+
|
|
0: aa
|
|
1: a
|
|
|
|
/^a+\w/
|
|
az
|
|
0: az
|
|
aaaz
|
|
0: aaaz
|
|
1: aaa
|
|
2: aa
|
|
aa
|
|
0: aa
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
aa+
|
|
0: aa
|
|
|
|
/^a+?\w/
|
|
az
|
|
0: az
|
|
aaaz
|
|
0: aaaz
|
|
1: aaa
|
|
2: aa
|
|
aa
|
|
0: aa
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: 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: 12345
|
|
1: 1234
|
|
aaaaa
|
|
0: aaaaa
|
|
1: aaaa
|
|
123456
|
|
0: 12345
|
|
1: 1234
|
|
|
|
/^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
|
|
|
|
/^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
|
|
From abcd Mon Sep 1 12:33:02 1997
|
|
0: From abcd Mon Sep 1 12:33
|
|
\= 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?
|
|
|
|
/(?:(?!foo)...|^.{0,2})bar(.*)/
|
|
foobar crowbar etc
|
|
0: rowbar etc
|
|
barrel
|
|
0: barrel
|
|
2barrel
|
|
0: 2barrel
|
|
A barrel
|
|
0: A barrel
|
|
|
|
/^(\D*)(?=\d)(?!123)/
|
|
abc456
|
|
0: 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
|
|
|
|
/(?!^)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)/no_auto_possess
|
|
aabbbbb
|
|
0: aabbbbb
|
|
1: aabbbb
|
|
2: aabbb
|
|
3: aabb
|
|
4: aab
|
|
5: aa
|
|
|
|
/^[ab]{1,3}?(ab*|b)/no_auto_possess
|
|
aabbbbb
|
|
0: aabbbbb
|
|
1: aabbbb
|
|
2: aabbb
|
|
3: aabb
|
|
4: aab
|
|
5: aa
|
|
|
|
/^[ab]{1,3}?(ab*?|b)/no_auto_possess
|
|
aabbbbb
|
|
0: aabbbbb
|
|
1: aabbbb
|
|
2: aabbb
|
|
3: aabb
|
|
4: aab
|
|
5: aa
|
|
|
|
/^[ab]{1,3}(ab*?|b)/no_auto_possess
|
|
aabbbbb
|
|
0: aabbbbb
|
|
1: aabbbb
|
|
2: aabbb
|
|
3: aabb
|
|
4: aab
|
|
5: aa
|
|
|
|
/ (?: [\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
|
|
1: user@dom
|
|
user\@dom.ain
|
|
0: user@dom.ain
|
|
1: user@dom
|
|
\"A. Other\" <user.1234\@dom.ain> (a comment)
|
|
0: "A. Other" <user.1234@dom.ain> (a comment)
|
|
1: "A. Other" <user.1234@dom.ain>
|
|
2: "A. Other" <user.1234@dom.ain>
|
|
A. Other <user.1234\@dom.ain> (a comment)
|
|
0: Other <user.1234@dom.ain> (a comment)
|
|
1: Other <user.1234@dom.ain>
|
|
2: 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
|
|
1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
|
|
A missing angle <user\@some.where
|
|
0: user@some.where
|
|
1: user@some
|
|
\= 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
|
|
1: user@dom
|
|
user\@dom.ain
|
|
0: user@dom.ain
|
|
1: user@dom
|
|
\"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
|
|
1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
|
|
A missing angle <user\@some.where
|
|
0: user@some.where
|
|
1: user@some
|
|
\= 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
|
|
|
|
/\0*/
|
|
\0\0\0\0
|
|
0: \x00\x00\x00\x00
|
|
|
|
/A\x0{2,3}Z/
|
|
The A\x0\x0Z
|
|
0: A\x00\x00Z
|
|
An A\0\x0\0Z
|
|
0: A\x00\x00\x00Z
|
|
\= Expect no match
|
|
A\0Z
|
|
No match
|
|
A\0\x0\0\x0Z
|
|
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
|
|
|
|
/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
|
|
|
|
/([^.]*)\.([^:]*):[T ]+(.*)/i
|
|
track1.title:TBlah blah blah
|
|
0: track1.title:TBlah blah blah
|
|
|
|
/([^.]*)\.([^:]*):[t ]+(.*)/i
|
|
track1.title:TBlah blah blah
|
|
0: track1.title:TBlah 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
|
|
|
|
/\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
|
|
|
|
/\x5c/
|
|
\\
|
|
0: \
|
|
|
|
/\x20Z/
|
|
the Zoo
|
|
0: Z
|
|
\= Expect no match
|
|
Zulu
|
|
No match
|
|
|
|
/ab{3cd/
|
|
ab{3cd
|
|
0: ab{3cd
|
|
|
|
/ab{3,cd/
|
|
ab{3,cd
|
|
0: ab{3,cd
|
|
|
|
/ab{3,4a}cd/
|
|
ab{3,4a}cd
|
|
0: ab{3,4a}cd
|
|
|
|
/{4,5a}bc/
|
|
{4,5a}bc
|
|
0: {4,5a}bc
|
|
|
|
/^a.b/newline=lf
|
|
a\rb
|
|
0: a\x0db
|
|
\= Expect no match
|
|
a\nb
|
|
No match
|
|
|
|
/abc$/
|
|
abc
|
|
0: abc
|
|
abc\n
|
|
0: abc
|
|
\= Expect no match
|
|
abc\ndef
|
|
No match
|
|
|
|
/(abc)\123/
|
|
abc\x53
|
|
0: abcS
|
|
|
|
/(abc)\223/
|
|
abc\x93
|
|
0: abc\x93
|
|
|
|
/(abc)\323/
|
|
abc\xd3
|
|
0: abc\xd3
|
|
|
|
/(abc)\100/
|
|
abc\x40
|
|
0: abc@
|
|
abc\100
|
|
0: abc@
|
|
|
|
/(abc)\1000/
|
|
abc\x400
|
|
0: abc@0
|
|
abc\x40\x30
|
|
0: abc@0
|
|
abc\1000
|
|
0: abc@0
|
|
abc\100\x30
|
|
0: abc@0
|
|
abc\100\060
|
|
0: abc@0
|
|
abc\100\60
|
|
0: abc@0
|
|
|
|
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
|
|
abcdefghijk\12S
|
|
0: abcdefghijk\x0aS
|
|
|
|
/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
|
|
|
|
/(?s)a.b/
|
|
a\nb
|
|
0: a\x0ab
|
|
|
|
/^([^a])([^\b])([^c]*)([^d]{3,4})/
|
|
baNOTccccd
|
|
0: baNOTcccc
|
|
1: baNOTccc
|
|
2: baNOTcc
|
|
3: baNOTc
|
|
baNOTcccd
|
|
0: baNOTccc
|
|
1: baNOTcc
|
|
2: baNOTc
|
|
baNOTccd
|
|
0: baNOTcc
|
|
1: baNOTc
|
|
bacccd
|
|
0: baccc
|
|
\= 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]/
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: A
|
|
|
|
/[^a]/i
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: b
|
|
|
|
/[^az]/
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: A
|
|
|
|
/[^az]/i
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: b
|
|
|
|
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
|
|
\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
|
|
0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
|
|
|
|
/P[^*]TAIRE[^*]{1,6}?LL/
|
|
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
|
|
0: PSTAIREISLL
|
|
|
|
/P[^*]TAIRE[^*]{1,}?LL/
|
|
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
|
|
0: PSTAIREISLL
|
|
|
|
/(\.\d\d[1-9]?)\d+/
|
|
1.230003938
|
|
0: .230003938
|
|
1.875000282
|
|
0: .875000282
|
|
1.235
|
|
0: .235
|
|
|
|
/(\.\d\d((?=0)|\d(?=\d)))/
|
|
1.230003938
|
|
0: .230
|
|
1: .23
|
|
1.875000282
|
|
0: .875
|
|
\= Expect no match
|
|
1.235
|
|
No match
|
|
|
|
/a(?)b/
|
|
ab
|
|
0: ab
|
|
|
|
/\b(foo)\s+(\w+)/i
|
|
Food is on the foo table
|
|
0: foo table
|
|
|
|
/foo(.*)bar/
|
|
The food is under the bar in the barn.
|
|
0: food is under the bar in the bar
|
|
1: food is under the bar
|
|
|
|
/foo(.*?)bar/
|
|
The food is under the bar in the barn.
|
|
0: food is under the bar in the bar
|
|
1: food is under the bar
|
|
|
|
/(.*)(\d*)/no_auto_possess
|
|
I have 2 numbers: 53147
|
|
Matched, but offsets vector is too small to show all matches
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers: 5314
|
|
2: I have 2 numbers: 531
|
|
3: I have 2 numbers: 53
|
|
4: I have 2 numbers: 5
|
|
5: I have 2 numbers:
|
|
6: I have 2 numbers:
|
|
7: I have 2 numbers
|
|
8: I have 2 number
|
|
9: I have 2 numbe
|
|
10: I have 2 numb
|
|
11: I have 2 num
|
|
12: I have 2 nu
|
|
13: I have 2 n
|
|
14: I have 2
|
|
|
|
/(.*)(\d+)/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2
|
|
|
|
/(.*?)(\d*)/no_auto_possess
|
|
I have 2 numbers: 53147
|
|
Matched, but offsets vector is too small to show all matches
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers: 5314
|
|
2: I have 2 numbers: 531
|
|
3: I have 2 numbers: 53
|
|
4: I have 2 numbers: 5
|
|
5: I have 2 numbers:
|
|
6: I have 2 numbers:
|
|
7: I have 2 numbers
|
|
8: I have 2 number
|
|
9: I have 2 numbe
|
|
10: I have 2 numb
|
|
11: I have 2 num
|
|
12: I have 2 nu
|
|
13: I have 2 n
|
|
14: I have 2
|
|
|
|
/(.*?)(\d+)/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2
|
|
|
|
/(.*)(\d+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
|
|
/(.*?)(\d+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
|
|
/(.*)\b(\d+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
|
|
/(.*\D)(\d+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
|
|
/^\D*(?!123)/
|
|
ABC123
|
|
0: AB
|
|
1: A
|
|
2:
|
|
|
|
/^(\D*)(?=\d)(?!123)/
|
|
ABC445
|
|
0: 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:
|
|
aab
|
|
0: a
|
|
1:
|
|
|
|
/^(a){0,2}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1:
|
|
aab
|
|
0: aa
|
|
1: a
|
|
2:
|
|
|
|
/^(a){0,3}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1:
|
|
aab
|
|
0: aa
|
|
1: a
|
|
2:
|
|
aaa
|
|
0: aaa
|
|
1: aa
|
|
2: a
|
|
3:
|
|
|
|
/^(a){0,}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1:
|
|
aab
|
|
0: aa
|
|
1: a
|
|
2:
|
|
aaa
|
|
0: aaa
|
|
1: aa
|
|
2: a
|
|
3:
|
|
aaaaaaaa
|
|
0: aaaaaaaa
|
|
1: aaaaaaa
|
|
2: aaaaaa
|
|
3: aaaaa
|
|
4: aaaa
|
|
5: aaa
|
|
6: aa
|
|
7: a
|
|
8:
|
|
|
|
/^(a){1,1}/
|
|
abc
|
|
0: a
|
|
aab
|
|
0: a
|
|
\= Expect no match
|
|
bcd
|
|
No match
|
|
|
|
/^(a){1,2}/
|
|
abc
|
|
0: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
\= Expect no match
|
|
bcd
|
|
No match
|
|
|
|
/^(a){1,3}/
|
|
abc
|
|
0: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
aaa
|
|
0: aaa
|
|
1: aa
|
|
2: a
|
|
\= Expect no match
|
|
bcd
|
|
No match
|
|
|
|
/^(a){1,}/
|
|
abc
|
|
0: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
aaa
|
|
0: aaa
|
|
1: aa
|
|
2: a
|
|
aaaaaaaa
|
|
0: aaaaaaaa
|
|
1: aaaaaaa
|
|
2: aaaaaa
|
|
3: aaaaa
|
|
4: aaaa
|
|
5: aaa
|
|
6: aa
|
|
7: 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
|
|
1: borfle\x0abib.gif
|
|
2: borfle
|
|
|
|
/.*$/
|
|
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
|
|
1: borfle\x0abib.gif\x0ano
|
|
|
|
/.*$/ms
|
|
borfle\nbib.gif\nno\n
|
|
0: borfle\x0abib.gif\x0ano\x0a
|
|
1: borfle\x0abib.gif\x0ano
|
|
2: borfle\x0abib.gif
|
|
3: borfle
|
|
|
|
/(.*X|^B)/
|
|
abcde\n1234Xyz
|
|
0: 1234X
|
|
BarFoo
|
|
0: B
|
|
\= Expect no match
|
|
abcde\nBar
|
|
No match
|
|
|
|
/(.*X|^B)/m
|
|
abcde\n1234Xyz
|
|
0: 1234X
|
|
BarFoo
|
|
0: B
|
|
abcde\nBar
|
|
0: B
|
|
|
|
/(.*X|^B)/s
|
|
abcde\n1234Xyz
|
|
0: abcde\x0a1234X
|
|
BarFoo
|
|
0: B
|
|
\= Expect no match
|
|
abcde\nBar
|
|
No match
|
|
|
|
/(.*X|^B)/ms
|
|
abcde\n1234Xyz
|
|
0: abcde\x0a1234X
|
|
BarFoo
|
|
0: B
|
|
abcde\nBar
|
|
0: B
|
|
|
|
/(?s)(.*X|^B)/
|
|
abcde\n1234Xyz
|
|
0: abcde\x0a1234X
|
|
BarFoo
|
|
0: 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
|
|
|
|
/^[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
|
|
ab
|
|
0: ab
|
|
abbbb
|
|
0: abbbb
|
|
\= 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"
|
|
\"the \\\"quick\\\" brown fox\"
|
|
0: "the \"quick\" brown fox"
|
|
|
|
/.*?/g,aftertext
|
|
abc
|
|
0: abc
|
|
0+
|
|
1: ab
|
|
2: a
|
|
3:
|
|
0:
|
|
0+
|
|
|
|
/\b/g,aftertext
|
|
abc
|
|
0:
|
|
0+ abc
|
|
0:
|
|
0+
|
|
|
|
/\b/g,aftertext
|
|
abc
|
|
0:
|
|
0+ abc
|
|
0:
|
|
0+
|
|
|
|
//g
|
|
abc
|
|
0:
|
|
0:
|
|
0:
|
|
0:
|
|
|
|
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
|
|
<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
|
|
0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
|
|
|
|
/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
|
|
bbac
|
|
0: bbac
|
|
bbbac
|
|
0: bbbac
|
|
bbbbac
|
|
0: bbbbac
|
|
bbbbbac
|
|
0: bbbbbac
|
|
|
|
/^(b+|a){1,2}?c/
|
|
bac
|
|
0: bac
|
|
bbac
|
|
0: bbac
|
|
bbbac
|
|
0: bbbac
|
|
bbbbac
|
|
0: bbbbac
|
|
bbbbbac
|
|
0: bbbbbac
|
|
|
|
/(?!\A)x/m
|
|
a\bx\n
|
|
0: x
|
|
\= Expect no match
|
|
x\nb\n
|
|
No match
|
|
|
|
/\x0{ab}/
|
|
\0{ab}
|
|
0: \x00{ab}
|
|
|
|
/(A|B)*?CD/
|
|
CD
|
|
0: CD
|
|
|
|
/(A|B)*CD/
|
|
CD
|
|
0: CD
|
|
|
|
/(?<!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
|
|
\= 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"
|
|
\= Expect no match
|
|
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
|
|
No match
|
|
|
|
"(?>.*/)foo"
|
|
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
|
|
0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
|
|
|
|
/(?>(\.\d\d[1-9]?))\d+/
|
|
1.230003938
|
|
0: .230003938
|
|
1.875000282
|
|
0: .875000282
|
|
\= 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
|
|
\= Expect no match
|
|
this is not a line with only words and spaces!
|
|
No match
|
|
|
|
/(\d+)(\w)/
|
|
12345a
|
|
0: 12345a
|
|
1: 12345
|
|
2: 1234
|
|
3: 123
|
|
4: 12
|
|
12345+
|
|
0: 12345
|
|
1: 1234
|
|
2: 123
|
|
3: 12
|
|
|
|
/((?>\d+))(\w)/
|
|
12345a
|
|
0: 12345a
|
|
\= Expect no match
|
|
12345+
|
|
No match
|
|
|
|
/(?>a+)b/
|
|
aaab
|
|
0: aaab
|
|
|
|
/((?>a+)b)/
|
|
aaab
|
|
0: aaab
|
|
|
|
/(?>(a+))b/
|
|
aaab
|
|
0: aaab
|
|
|
|
/(?>b)+/
|
|
aaabbbccc
|
|
0: bbb
|
|
1: bb
|
|
2: b
|
|
|
|
/(?>a+|b+|c+)*c/
|
|
aaabbbbccccd
|
|
0: aaabbbbcccc
|
|
1: aaabbbbc
|
|
|
|
/(a+|b+|c+)*c/
|
|
aaabbbbccccd
|
|
0: aaabbbbcccc
|
|
1: aaabbbbccc
|
|
2: aaabbbbcc
|
|
3: aaabbbbc
|
|
|
|
/((?>[^()]+)|\([^()]*\))+/
|
|
((abc(ade)ufh()()x
|
|
0: abc(ade)ufh()()x
|
|
1: abc(ade)ufh()()
|
|
2: abc(ade)ufh()
|
|
3: abc(ade)ufh
|
|
4: abc(ade)
|
|
5: abc
|
|
|
|
/\(((?>[^()]+)|\([^()]+\))+\)/
|
|
(abc)
|
|
0: (abc)
|
|
(abc(def)xyz)
|
|
0: (abc(def)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
|
|
\= 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
|
|
\= Expect no match
|
|
abcdef
|
|
No match
|
|
|
|
/(a(?i)b)c/
|
|
abc
|
|
0: abc
|
|
aBc
|
|
0: aBc
|
|
\= 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
|
|
aBxxc
|
|
0: xxc
|
|
\= Expect no match
|
|
Abxxc
|
|
No match
|
|
ABxxc
|
|
No match
|
|
abxxC
|
|
No match
|
|
|
|
/^(?(?=abc)\w{3}:|\d\d)$/
|
|
abc:
|
|
0: abc:
|
|
12
|
|
0: 12
|
|
\= Expect no match
|
|
123
|
|
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
|
|
|
|
/(?>a*)*/
|
|
a
|
|
0: a
|
|
1:
|
|
aa
|
|
0: aa
|
|
1:
|
|
aaaa
|
|
0: aaaa
|
|
1:
|
|
|
|
/(abc|)+/
|
|
abc
|
|
0: abc
|
|
1:
|
|
abcabc
|
|
0: abcabc
|
|
1: abc
|
|
2:
|
|
abcabcabc
|
|
0: abcabcabc
|
|
1: abcabc
|
|
2: abc
|
|
3:
|
|
xyz
|
|
0:
|
|
|
|
/([a]*)*/
|
|
a
|
|
0: a
|
|
1:
|
|
aaaaa
|
|
0: aaaaa
|
|
1: aaaa
|
|
2: aaa
|
|
3: aa
|
|
4: a
|
|
5:
|
|
|
|
/([ab]*)*/
|
|
a
|
|
0: a
|
|
1:
|
|
b
|
|
0: b
|
|
1:
|
|
ababab
|
|
0: ababab
|
|
1: ababa
|
|
2: abab
|
|
3: aba
|
|
4: ab
|
|
5: a
|
|
6:
|
|
aaaabcde
|
|
0: aaaab
|
|
1: aaaa
|
|
2: aaa
|
|
3: aa
|
|
4: a
|
|
5:
|
|
bbbb
|
|
0: bbbb
|
|
1: bbb
|
|
2: bb
|
|
3: b
|
|
4:
|
|
|
|
/([^a]*)*/
|
|
b
|
|
0: b
|
|
1:
|
|
bbbb
|
|
0: bbbb
|
|
1: bbb
|
|
2: bb
|
|
3: b
|
|
4:
|
|
aaa
|
|
0:
|
|
|
|
/([^ab]*)*/
|
|
cccc
|
|
0: cccc
|
|
1: ccc
|
|
2: cc
|
|
3: c
|
|
4:
|
|
abab
|
|
0:
|
|
|
|
/([a]*?)*/
|
|
a
|
|
0: a
|
|
1:
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
4:
|
|
|
|
/([ab]*?)*/
|
|
a
|
|
0: a
|
|
1:
|
|
b
|
|
0: b
|
|
1:
|
|
abab
|
|
0: abab
|
|
1: aba
|
|
2: ab
|
|
3: a
|
|
4:
|
|
baba
|
|
0: baba
|
|
1: bab
|
|
2: ba
|
|
3: b
|
|
4:
|
|
|
|
/([^a]*?)*/
|
|
b
|
|
0: b
|
|
1:
|
|
bbbb
|
|
0: bbbb
|
|
1: bbb
|
|
2: bb
|
|
3: b
|
|
4:
|
|
aaa
|
|
0:
|
|
|
|
/([^ab]*?)*/
|
|
c
|
|
0: c
|
|
1:
|
|
cccc
|
|
0: cccc
|
|
1: ccc
|
|
2: cc
|
|
3: c
|
|
4:
|
|
baba
|
|
0:
|
|
|
|
/(?>a*)*/
|
|
a
|
|
0: a
|
|
1:
|
|
aaabcde
|
|
0: aaa
|
|
1:
|
|
|
|
/((?>a*))*/
|
|
aaaaa
|
|
0: aaaaa
|
|
1:
|
|
aabbaa
|
|
0: aa
|
|
1:
|
|
|
|
/((?>a*?))*/
|
|
aaaaa
|
|
0: aaaaa
|
|
1:
|
|
aabbaa
|
|
0: aa
|
|
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
|
|
|
|
/(?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
|
|
aBCx
|
|
0: aBCx
|
|
bbx
|
|
0: bbx
|
|
BBx
|
|
0: BBx
|
|
\= Expect no match
|
|
abcX
|
|
No match
|
|
aBCX
|
|
No match
|
|
bbX
|
|
No match
|
|
BBX
|
|
No match
|
|
|
|
/^([ab](?i)[cd]|[ef])/
|
|
ac
|
|
0: ac
|
|
aC
|
|
0: aC
|
|
bD
|
|
0: bD
|
|
elephant
|
|
0: e
|
|
Europe
|
|
0: E
|
|
frog
|
|
0: f
|
|
France
|
|
0: F
|
|
\= Expect no match
|
|
Africa
|
|
No match
|
|
|
|
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
|
|
ab
|
|
0: ab
|
|
aBd
|
|
0: aBd
|
|
xy
|
|
0: xy
|
|
xY
|
|
0: xY
|
|
zebra
|
|
0: z
|
|
Zambesi
|
|
0: 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 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+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
|
|
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
|
|
|
|
/$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
|
|
\= Expect no match
|
|
a\b
|
|
No match
|
|
|
|
/((a))/
|
|
abc
|
|
0: a
|
|
|
|
/(a)b(c)/
|
|
abc
|
|
0: abc
|
|
|
|
/a+b+c/
|
|
aabbabc
|
|
0: abc
|
|
|
|
/a{1,}b{1,}c/
|
|
aabbabc
|
|
0: abc
|
|
|
|
/a.+?c/
|
|
abcabc
|
|
0: abcabc
|
|
1: abc
|
|
|
|
/(a+|b)*/
|
|
ab
|
|
0: ab
|
|
1: a
|
|
2:
|
|
|
|
/(a+|b){0,}/
|
|
ab
|
|
0: ab
|
|
1: a
|
|
2:
|
|
|
|
/(a+|b)+/
|
|
ab
|
|
0: ab
|
|
1: a
|
|
|
|
/(a+|b){1,}/
|
|
ab
|
|
0: ab
|
|
1: a
|
|
|
|
/(a+|b)?/
|
|
ab
|
|
0: a
|
|
1:
|
|
|
|
/(a+|b){0,1}/
|
|
ab
|
|
0: a
|
|
1:
|
|
|
|
/[^ab]*/
|
|
cde
|
|
0: cde
|
|
|
|
/abc/
|
|
\= Expect no match
|
|
b
|
|
No match
|
|
|
|
/a*/
|
|
|
|
/([abc])*d/
|
|
abbbcd
|
|
0: abbbcd
|
|
|
|
/([abc])*bcd/
|
|
abcd
|
|
0: abcd
|
|
|
|
/a|b|c|d|e/
|
|
e
|
|
0: e
|
|
|
|
/(a|b|c|d|e)f/
|
|
ef
|
|
0: ef
|
|
|
|
/abcd*efg/
|
|
abcdefg
|
|
0: abcdefg
|
|
|
|
/ab*/
|
|
xabyabbbz
|
|
0: ab
|
|
xayabbbz
|
|
0: a
|
|
|
|
/(ab|cd)e/
|
|
abcde
|
|
0: cde
|
|
|
|
/[abhgefdc]ij/
|
|
hij
|
|
0: hij
|
|
|
|
/^(ab|cd)e/
|
|
|
|
/(abc|)ef/
|
|
abcdef
|
|
0: ef
|
|
|
|
/(a|b)c*d/
|
|
abcd
|
|
0: bcd
|
|
|
|
/(ab|ab*)bc/
|
|
abc
|
|
0: abc
|
|
|
|
/a([bc]*)c*/
|
|
abc
|
|
0: abc
|
|
1: a
|
|
|
|
/a([bc]*)(c*d)/
|
|
abcd
|
|
0: abcd
|
|
|
|
/a([bc]+)(c*d)/
|
|
abcd
|
|
0: abcd
|
|
|
|
/a([bc]*)(c+d)/
|
|
abcd
|
|
0: abcd
|
|
|
|
/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
|
|
|
|
/((a)(b)c)(d)/
|
|
abcd
|
|
0: abcd
|
|
|
|
/[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
|
|
ij
|
|
0: ij
|
|
reffgz
|
|
0: effgz
|
|
\= Expect no match
|
|
effg
|
|
No match
|
|
bcdd
|
|
No match
|
|
|
|
/((((((((((a))))))))))/
|
|
a
|
|
0: a
|
|
|
|
/(((((((((a)))))))))/
|
|
a
|
|
0: 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
|
|
|
|
/\((.*), (.*)\)/
|
|
(a, b)
|
|
0: (a, b)
|
|
|
|
/[k]/
|
|
|
|
/abcd/
|
|
abcd
|
|
0: abcd
|
|
|
|
/a(bc)d/
|
|
abcd
|
|
0: abcd
|
|
|
|
/a[-]?c/
|
|
ac
|
|
0: ac
|
|
|
|
/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
|
|
|
|
/$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
|
|
\= Expect no match
|
|
A\=notbol
|
|
No match
|
|
|
|
/((a))/i
|
|
ABC
|
|
0: A
|
|
|
|
/(a)b(c)/i
|
|
ABC
|
|
0: ABC
|
|
|
|
/a+b+c/i
|
|
AABBABC
|
|
0: ABC
|
|
|
|
/a{1,}b{1,}c/i
|
|
AABBABC
|
|
0: ABC
|
|
|
|
/a.+?c/i
|
|
ABCABC
|
|
0: ABCABC
|
|
1: ABC
|
|
|
|
/a.*?c/i
|
|
ABCABC
|
|
0: ABCABC
|
|
1: ABC
|
|
|
|
/a.{0,5}?c/i
|
|
ABCABC
|
|
0: ABCABC
|
|
1: ABC
|
|
|
|
/(a+|b)*/i
|
|
AB
|
|
0: AB
|
|
1: A
|
|
2:
|
|
|
|
/(a+|b){0,}/i
|
|
AB
|
|
0: AB
|
|
1: A
|
|
2:
|
|
|
|
/(a+|b)+/i
|
|
AB
|
|
0: AB
|
|
1: A
|
|
|
|
/(a+|b){1,}/i
|
|
AB
|
|
0: AB
|
|
1: A
|
|
|
|
/(a+|b)?/i
|
|
AB
|
|
0: A
|
|
1:
|
|
|
|
/(a+|b){0,1}/i
|
|
AB
|
|
0: A
|
|
1:
|
|
|
|
/(a+|b){0,1}?/i
|
|
AB
|
|
0: A
|
|
1:
|
|
|
|
/[^ab]*/i
|
|
CDE
|
|
0: CDE
|
|
|
|
/abc/i
|
|
|
|
/a*/i
|
|
|
|
/([abc])*d/i
|
|
ABBBCD
|
|
0: ABBBCD
|
|
|
|
/([abc])*bcd/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a|b|c|d|e/i
|
|
E
|
|
0: E
|
|
|
|
/(a|b|c|d|e)f/i
|
|
EF
|
|
0: EF
|
|
|
|
/abcd*efg/i
|
|
ABCDEFG
|
|
0: ABCDEFG
|
|
|
|
/ab*/i
|
|
XABYABBBZ
|
|
0: AB
|
|
XAYABBBZ
|
|
0: A
|
|
|
|
/(ab|cd)e/i
|
|
ABCDE
|
|
0: CDE
|
|
|
|
/[abhgefdc]ij/i
|
|
HIJ
|
|
0: HIJ
|
|
|
|
/^(ab|cd)e/i
|
|
\= Expect no match
|
|
ABCDE
|
|
No match
|
|
|
|
/(abc|)ef/i
|
|
ABCDEF
|
|
0: EF
|
|
|
|
/(a|b)c*d/i
|
|
ABCD
|
|
0: BCD
|
|
|
|
/(ab|ab*)bc/i
|
|
ABC
|
|
0: ABC
|
|
|
|
/a([bc]*)c*/i
|
|
ABC
|
|
0: ABC
|
|
1: A
|
|
|
|
/a([bc]*)(c*d)/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a([bc]+)(c*d)/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a([bc]*)(c+d)/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a[bcd]*dcdcde/i
|
|
ADCDCDE
|
|
0: ADCDCDE
|
|
|
|
/a[bcd]+dcdcde/i
|
|
|
|
/(ab|a)b*c/i
|
|
ABC
|
|
0: ABC
|
|
|
|
/((a)(b)c)(d)/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/[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
|
|
IJ
|
|
0: IJ
|
|
REFFGZ
|
|
0: EFFGZ
|
|
\= Expect no match
|
|
ADCDCDE
|
|
No match
|
|
EFFG
|
|
No match
|
|
BCDD
|
|
No match
|
|
|
|
/((((((((((a))))))))))/i
|
|
A
|
|
0: A
|
|
|
|
/(((((((((a)))))))))/i
|
|
A
|
|
0: A
|
|
|
|
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
|
|
A
|
|
0: A
|
|
|
|
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
|
|
C
|
|
0: 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
|
|
|
|
/\((.*), (.*)\)/i
|
|
(A, B)
|
|
0: (A, B)
|
|
|
|
/[k]/i
|
|
|
|
/abcd/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a(bc)d/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a[-]?c/i
|
|
AC
|
|
0: AC
|
|
|
|
/a(?!b)./
|
|
abad
|
|
0: ad
|
|
|
|
/a(?=d)./
|
|
abad
|
|
0: ad
|
|
|
|
/a(?=c|d)./
|
|
abad
|
|
0: ad
|
|
|
|
/a(?:b|c|d)(.)/
|
|
ace
|
|
0: ace
|
|
|
|
/a(?:b|c|d)*(.)/
|
|
ace
|
|
0: ace
|
|
1: ac
|
|
|
|
/a(?:b|c|d)+?(.)/
|
|
ace
|
|
0: ace
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
1: acdbcdb
|
|
2: acdbcd
|
|
3: acdbc
|
|
4: acdb
|
|
5: acd
|
|
|
|
/a(?:b|c|d)+(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
1: acdbcdb
|
|
2: acdbcd
|
|
3: acdbc
|
|
4: acdb
|
|
5: acd
|
|
|
|
/a(?:b|c|d){2}(.)/
|
|
acdbcdbe
|
|
0: acdb
|
|
|
|
/a(?:b|c|d){4,5}(.)/
|
|
acdbcdbe
|
|
0: acdbcdb
|
|
1: acdbcd
|
|
|
|
/a(?:b|c|d){4,5}?(.)/
|
|
acdbcdbe
|
|
0: acdbcdb
|
|
1: acdbcd
|
|
|
|
/((foo)|(bar))*/
|
|
foobar
|
|
0: foobar
|
|
1: foo
|
|
2:
|
|
|
|
/a(?:b|c|d){6,7}(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
|
|
/a(?:b|c|d){6,7}?(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
|
|
/a(?:b|c|d){5,6}(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
1: acdbcdb
|
|
|
|
/a(?:b|c|d){5,6}?(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
1: acdbcdb
|
|
|
|
/a(?:b|c|d){5,7}(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
1: acdbcdb
|
|
|
|
/a(?:b|c|d){5,7}?(.)/
|
|
acdbcdbe
|
|
0: acdbcdbe
|
|
1: acdbcdb
|
|
|
|
/a(?:b|(c|e){1,2}?|d)+?(.)/
|
|
ace
|
|
0: ace
|
|
|
|
/^(.+)?B/
|
|
AB
|
|
0: AB
|
|
|
|
/^([^a-z])|(\^)$/
|
|
.
|
|
0: .
|
|
|
|
/^[<>]&/
|
|
<&OUT
|
|
0: <&
|
|
|
|
/(?:(f)(o)(o)|(b)(a)(r))*/
|
|
foobar
|
|
0: foobar
|
|
1: foo
|
|
2:
|
|
|
|
/(?<=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
|
|
1: a
|
|
|
|
/(?:..)*?a/
|
|
aba
|
|
0: aba
|
|
1: a
|
|
|
|
/^(){3,5}/
|
|
abc
|
|
0:
|
|
|
|
/^(a+)*ax/
|
|
aax
|
|
0: aax
|
|
|
|
/^((a|b)+)*ax/
|
|
aax
|
|
0: aax
|
|
|
|
/^((a|bc)+)*ax/
|
|
aax
|
|
0: aax
|
|
|
|
/(a|x)*ab/
|
|
cab
|
|
0: ab
|
|
|
|
/(a)*ab/
|
|
cab
|
|
0: ab
|
|
|
|
/(?:(?i)a)b/
|
|
ab
|
|
0: ab
|
|
|
|
/((?i)a)b/
|
|
ab
|
|
0: ab
|
|
|
|
/(?:(?i)a)b/
|
|
Ab
|
|
0: Ab
|
|
|
|
/((?i)a)b/
|
|
Ab
|
|
0: Ab
|
|
|
|
/(?:(?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
|
|
|
|
/(?i:a)b/
|
|
Ab
|
|
0: Ab
|
|
|
|
/((?i:a))b/
|
|
Ab
|
|
0: Ab
|
|
|
|
/(?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
|
|
|
|
/(?:(?-i)a)b/i
|
|
aB
|
|
0: aB
|
|
|
|
/((?-i)a)b/i
|
|
aB
|
|
0: aB
|
|
|
|
/(?:(?-i)a)b/i
|
|
aB
|
|
0: aB
|
|
\= Expect no match
|
|
Ab
|
|
No match
|
|
|
|
/((?-i)a)b/i
|
|
|
|
/(?:(?-i)a)b/i
|
|
aB
|
|
0: aB
|
|
|
|
/((?-i)a)b/i
|
|
aB
|
|
0: aB
|
|
|
|
/(?:(?-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
|
|
|
|
/(?-i:a)b/i
|
|
aB
|
|
0: aB
|
|
|
|
/((?-i:a))b/i
|
|
aB
|
|
0: aB
|
|
|
|
/(?-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
|
|
|
|
/(?-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
|
|
|
|
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
|
|
cabbbb
|
|
0: cabbbb
|
|
|
|
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
|
|
caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
|
0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
|
|
|
/foo\w*\d{4}baz/
|
|
foobar1234baz
|
|
0: foobar1234baz
|
|
|
|
/x(~~)*(?:(?:F)?)?/
|
|
x~~
|
|
0: x~~
|
|
1: x
|
|
|
|
/^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?)*$/
|
|
\= Expect no match
|
|
dbcb
|
|
No match
|
|
a--
|
|
No match
|
|
|
|
/((?s)^a(.))((?m)^b$)/
|
|
a\nb\nc\n
|
|
0: a\x0ab
|
|
|
|
/((?m)^b$)/
|
|
a\nb\nc\n
|
|
0: b
|
|
|
|
/(?m)^b/
|
|
a\nb\n
|
|
0: b
|
|
|
|
/(?m)^(b)/
|
|
a\nb\n
|
|
0: b
|
|
|
|
/((?m)^b)/
|
|
a\nb\n
|
|
0: b
|
|
|
|
/\n((?m)^b)/
|
|
a\nb\n
|
|
0: \x0ab
|
|
|
|
/((?s).)c(?!.)/
|
|
a\nb\nc\n
|
|
0: \x0ac
|
|
a\nb\nc\n
|
|
0: \x0ac
|
|
|
|
/((?s)b.)c(?!.)/
|
|
a\nb\nc\n
|
|
0: b\x0ac
|
|
a\nb\nc\n
|
|
0: b\x0ac
|
|
|
|
/^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
|
|
|
|
/(?(?!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
|
|
|
|
/(\w+:)+/
|
|
one:
|
|
0: one:
|
|
|
|
/$(?<=^(a))/
|
|
a
|
|
0:
|
|
|
|
/([\w:]+::)?(\w+)$/
|
|
abcd
|
|
0: abcd
|
|
xy:z:::abcd
|
|
0: xy:z:::abcd
|
|
|
|
/^[^bcd]*(c+)/
|
|
aexycd
|
|
0: aexyc
|
|
|
|
/(a*)b+/
|
|
caab
|
|
0: aab
|
|
|
|
/([\w:]+::)?(\w+)$/
|
|
abcd
|
|
0: abcd
|
|
xy:z:::abcd
|
|
0: xy:z:::abcd
|
|
\= Expect no match
|
|
abcd:
|
|
No match
|
|
abcd:
|
|
No match
|
|
|
|
/^[^bcd]*(c+)/
|
|
aexycd
|
|
0: aexyc
|
|
|
|
/(>a+)ab/
|
|
|
|
/(?>a+)b/
|
|
aaab
|
|
0: aaab
|
|
|
|
/([[:]+)/
|
|
a:[b]:
|
|
0: :[
|
|
|
|
/([[=]+)/
|
|
a=[b]=
|
|
0: =[
|
|
|
|
/([[.]+)/
|
|
a.[b].
|
|
0: .[
|
|
|
|
/((?>a+)b)/
|
|
aaab
|
|
0: aaab
|
|
|
|
/(?>(a+))b/
|
|
aaab
|
|
0: aaab
|
|
|
|
/((?>[^()]+)|\([^()]*\))+/
|
|
((abc(ade)ufh()()x
|
|
0: abc(ade)ufh()()x
|
|
1: abc(ade)ufh()()
|
|
2: abc(ade)ufh()
|
|
3: abc(ade)ufh
|
|
4: abc(ade)
|
|
5: abc
|
|
|
|
/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
|
|
|
|
/(?>.*)(?<=(abcd|wxyz))/
|
|
alphabetabcd
|
|
0: alphabetabcd
|
|
endingwxyz
|
|
0: endingwxyz
|
|
\= 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
|
|
|
|
/((Z)+|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: Z
|
|
2:
|
|
|
|
/(Z()|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: Z
|
|
2:
|
|
|
|
/(Z(())|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: Z
|
|
2:
|
|
|
|
/((?>Z)+|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: Z
|
|
2:
|
|
|
|
/((?>)+|A)*/
|
|
ZABCDEFG
|
|
0:
|
|
|
|
/a*/g
|
|
abbab
|
|
0: a
|
|
0:
|
|
0:
|
|
0: a
|
|
0:
|
|
0:
|
|
|
|
/[[:space:]]+/
|
|
> \x09\x0a\x0c\x0d\x0b<
|
|
0: \x09\x0a\x0c\x0d\x0b
|
|
|
|
/[[:blank:]]+/
|
|
> \x09\x0a\x0c\x0d\x0b<
|
|
0: \x09
|
|
|
|
/[\s]+/
|
|
> \x09\x0a\x0c\x0d\x0b<
|
|
0: \x09\x0a\x0c\x0d\x0b
|
|
|
|
/\s+/
|
|
> \x09\x0a\x0c\x0d\x0b<
|
|
0: \x09\x0a\x0c\x0d\x0b
|
|
|
|
/ab/x
|
|
ab
|
|
0: ab
|
|
|
|
/(?!\A)x/m
|
|
a\nxb\n
|
|
0: x
|
|
|
|
/(?!^)x/m
|
|
\= 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
|
|
|
|
/\Gabc./g
|
|
abc1abc2xyzabc3
|
|
0: abc1
|
|
0: abc2
|
|
|
|
/abc./g
|
|
abc1abc2xyzabc3
|
|
0: abc1
|
|
0: abc2
|
|
0: abc3
|
|
|
|
/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
|
|
AxyzB
|
|
0: xyz
|
|
|
|
/(?i)AB(?-i)C/
|
|
XabCY
|
|
0: abC
|
|
\= Expect no match
|
|
XabcY
|
|
No match
|
|
|
|
/((?i)AB(?-i)C|D)E/
|
|
abCE
|
|
0: abCE
|
|
DE
|
|
0: DE
|
|
\= Expect no match
|
|
abcE
|
|
No match
|
|
abCe
|
|
No match
|
|
dE
|
|
No match
|
|
De
|
|
No match
|
|
|
|
/[z\Qa-d]\E]/
|
|
z
|
|
0: z
|
|
a
|
|
0: a
|
|
-
|
|
0: -
|
|
d
|
|
0: d
|
|
]
|
|
0: ]
|
|
\= Expect no match
|
|
b
|
|
No match
|
|
|
|
/(a+)*b/
|
|
\= Expect no match
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
No match
|
|
|
|
/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
|
|
REGular
|
|
0: REGular
|
|
regulaer
|
|
0: regulaer
|
|
Regex
|
|
0: Regex
|
|
regulär
|
|
0: regul\xe4r
|
|
|
|
/Åæåä[à-ÿÀ-ß]+/
|
|
Åæåäà
|
|
0: \xc5\xe6\xe5\xe4\xe0
|
|
Åæåäÿ
|
|
0: \xc5\xe6\xe5\xe4\xff
|
|
ÅæåäÀ
|
|
0: \xc5\xe6\xe5\xe4\xc0
|
|
Åæåäß
|
|
0: \xc5\xe6\xe5\xe4\xdf
|
|
|
|
/(?<=Z)X./
|
|
\x84XAZXB
|
|
0: XB
|
|
|
|
/^(?(2)a|(1)(2))+$/
|
|
123a
|
|
Failed: error -40: backreference condition or recursion test is not supported for DFA matching
|
|
|
|
/(?<=a|bbbb)c/
|
|
ac
|
|
0: c
|
|
bbbbc
|
|
0: c
|
|
|
|
/line\nbreak/
|
|
this is a line\nbreak
|
|
0: line\x0abreak
|
|
line one\nthis is a line\nbreak in the second line
|
|
0: line\x0abreak
|
|
|
|
/line\nbreak/firstline
|
|
this is a line\nbreak
|
|
0: line\x0abreak
|
|
\= Expect no match
|
|
line one\nthis is a line\nbreak in the second line
|
|
No match
|
|
|
|
/line\nbreak/m,firstline
|
|
this is a line\nbreak
|
|
0: line\x0abreak
|
|
\= Expect no match
|
|
line one\nthis is a line\nbreak in the second line
|
|
No match
|
|
|
|
/1234/
|
|
123\=ps
|
|
Partial match: 123
|
|
\= Expect no match
|
|
a4\=ps,dfa_restart
|
|
No match
|
|
|
|
/1234/
|
|
123\=ps
|
|
Partial match: 123
|
|
4\=ps,dfa_restart
|
|
0: 4
|
|
|
|
/^/gm
|
|
a\nb\nc\n
|
|
0:
|
|
0:
|
|
0:
|
|
\
|
|
0:
|
|
|
|
/(?<=C\n)^/gm
|
|
A\nC\nC\n
|
|
0:
|
|
|
|
/(?s)A?B/
|
|
AB
|
|
0: AB
|
|
aB
|
|
0: B
|
|
|
|
/(?s)A*B/
|
|
AB
|
|
0: AB
|
|
aB
|
|
0: B
|
|
|
|
/(?m)A?B/
|
|
AB
|
|
0: AB
|
|
aB
|
|
0: B
|
|
|
|
/(?m)A*B/
|
|
AB
|
|
0: AB
|
|
aB
|
|
0: B
|
|
|
|
/Content-Type\x3A[^\r\n]{6,}/
|
|
Content-Type:xxxxxyyy
|
|
0: Content-Type:xxxxxyyy
|
|
|
|
/Content-Type\x3A[^\r\n]{6,}z/
|
|
Content-Type:xxxxxyyyz
|
|
0: Content-Type:xxxxxyyyz
|
|
|
|
/Content-Type\x3A[^a]{6,}/
|
|
Content-Type:xxxyyy
|
|
0: Content-Type:xxxyyy
|
|
|
|
/Content-Type\x3A[^a]{6,}z/
|
|
Content-Type:xxxyyyz
|
|
0: Content-Type:xxxyyyz
|
|
|
|
/^abc/Im,newline=lf
|
|
Capture group count = 0
|
|
Options: multiline
|
|
Forced newline is LF
|
|
First code unit at start or follows newline
|
|
Last code unit = 'c'
|
|
Subject length lower bound = 3
|
|
xyz\nabc
|
|
0: abc
|
|
xyz\r\nabc
|
|
0: abc
|
|
\= Expect no match
|
|
xyz\rabc
|
|
No match
|
|
xyzabc\r
|
|
No match
|
|
xyzabc\rpqr
|
|
No match
|
|
xyzabc\r\n
|
|
No match
|
|
xyzabc\r\npqr
|
|
No match
|
|
|
|
/^abc/Im,newline=crlf
|
|
Capture group count = 0
|
|
Options: multiline
|
|
Forced newline is CRLF
|
|
First code unit at start or follows newline
|
|
Last code unit = 'c'
|
|
Subject length lower bound = 3
|
|
xyz\r\nabclf>
|
|
0: abc
|
|
\= Expect no match
|
|
xyz\nabclf
|
|
No match
|
|
xyz\rabclf
|
|
No match
|
|
|
|
/^abc/Im,newline=cr
|
|
Capture group count = 0
|
|
Options: multiline
|
|
Forced newline is CR
|
|
First code unit at start or follows newline
|
|
Last code unit = 'c'
|
|
Subject length lower bound = 3
|
|
xyz\rabc
|
|
0: abc
|
|
\= Expect no match
|
|
xyz\nabc
|
|
No match
|
|
xyz\r\nabc
|
|
No match
|
|
|
|
/.*/I,newline=lf
|
|
Capture group count = 0
|
|
May match empty string
|
|
Forced newline is LF
|
|
First code unit at start or follows newline
|
|
Subject length lower bound = 0
|
|
abc\ndef
|
|
0: abc
|
|
abc\rdef
|
|
0: abc\x0ddef
|
|
abc\r\ndef
|
|
0: abc\x0d
|
|
|
|
/.*/I,newline=cr
|
|
Capture group count = 0
|
|
May match empty string
|
|
Forced newline is CR
|
|
First code unit at start or follows newline
|
|
Subject length lower bound = 0
|
|
abc\ndef
|
|
0: abc\x0adef
|
|
abc\rdef
|
|
0: abc
|
|
abc\r\ndef
|
|
0: abc
|
|
|
|
/.*/I,newline=crlf
|
|
Capture group count = 0
|
|
May match empty string
|
|
Forced newline is CRLF
|
|
First code unit at start or follows newline
|
|
Subject length lower bound = 0
|
|
abc\ndef
|
|
0: abc\x0adef
|
|
abc\rdef
|
|
0: abc\x0ddef
|
|
abc\r\ndef
|
|
0: abc
|
|
|
|
/\w+(.)(.)?def/Is
|
|
Capture group count = 2
|
|
Options: dotall
|
|
Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
|
|
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
|
|
Last code unit = 'f'
|
|
Subject length lower bound = 5
|
|
abc\ndef
|
|
0: abc\x0adef
|
|
abc\rdef
|
|
0: abc\x0ddef
|
|
abc\r\ndef
|
|
0: abc\x0d\x0adef
|
|
|
|
/\w+(.)(.)?def/s
|
|
abc\ndef
|
|
0: abc\x0adef
|
|
abc\rdef
|
|
0: abc\x0ddef
|
|
abc\r\ndef
|
|
0: abc\x0d\x0adef
|
|
|
|
/^\w+=.*(\\\n.*)*/
|
|
abc=xyz\\\npqr
|
|
0: abc=xyz\\x0apqr
|
|
1: abc=xyz\\x0apq
|
|
2: abc=xyz\\x0ap
|
|
3: abc=xyz\\x0a
|
|
4: abc=xyz\
|
|
5: abc=xyz
|
|
6: abc=xy
|
|
7: abc=x
|
|
8: abc=
|
|
|
|
/^(a()*)*/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
4:
|
|
|
|
/^(?:a(?:(?:))*)*/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
4:
|
|
|
|
/^(a()+)+/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
|
|
/^(?:a(?:(?:))+)+/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
|
|
/(a|)*\d/
|
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
|
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
|
|
\= 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
|
|
|
|
/^a.b/newline=lf
|
|
a\rb
|
|
0: a\x0db
|
|
\= Expect no match
|
|
a\nb
|
|
No match
|
|
|
|
/^a.b/newline=cr
|
|
a\nb
|
|
0: a\x0ab
|
|
\= Expect no match
|
|
a\rb
|
|
No match
|
|
|
|
/^a.b/newline=anycrlf
|
|
a\x85b
|
|
0: a\x85b
|
|
\= Expect no match
|
|
a\rb
|
|
No match
|
|
|
|
/^a.b/newline=any
|
|
\= Expect no match
|
|
a\nb
|
|
No match
|
|
a\rb
|
|
No match
|
|
a\x85b
|
|
No match
|
|
|
|
/^abc./gmx,newline=any
|
|
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
|
|
0: abc1
|
|
0: abc2
|
|
0: abc3
|
|
0: abc4
|
|
0: abc5
|
|
0: abc6
|
|
0: abc7
|
|
|
|
/abc.$/gmx,newline=any
|
|
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
|
|
0: abc1
|
|
0: abc2
|
|
0: abc3
|
|
0: abc4
|
|
0: abc5
|
|
0: abc6
|
|
0: abc9
|
|
|
|
/^a\Rb/bsr=unicode
|
|
a\nb
|
|
0: a\x0ab
|
|
a\rb
|
|
0: a\x0db
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
a\x0bb
|
|
0: a\x0bb
|
|
a\x0cb
|
|
0: a\x0cb
|
|
a\x85b
|
|
0: a\x85b
|
|
\= Expect no match
|
|
a\n\rb
|
|
No match
|
|
|
|
/^a\R*b/bsr=unicode
|
|
ab
|
|
0: ab
|
|
a\nb
|
|
0: a\x0ab
|
|
a\rb
|
|
0: a\x0db
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
a\x0bb
|
|
0: a\x0bb
|
|
a\x0cb
|
|
0: a\x0cb
|
|
a\x85b
|
|
0: a\x85b
|
|
a\n\rb
|
|
0: a\x0a\x0db
|
|
a\n\r\x85\x0cb
|
|
0: a\x0a\x0d\x85\x0cb
|
|
|
|
/^a\R+b/bsr=unicode
|
|
a\nb
|
|
0: a\x0ab
|
|
a\rb
|
|
0: a\x0db
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
a\x0bb
|
|
0: a\x0bb
|
|
a\x0cb
|
|
0: a\x0cb
|
|
a\x85b
|
|
0: a\x85b
|
|
a\n\rb
|
|
0: a\x0a\x0db
|
|
a\n\r\x85\x0cb
|
|
0: a\x0a\x0d\x85\x0cb
|
|
\= Expect no match
|
|
ab
|
|
No match
|
|
|
|
/^a\R{1,3}b/bsr=unicode
|
|
a\nb
|
|
0: a\x0ab
|
|
a\n\rb
|
|
0: a\x0a\x0db
|
|
a\n\r\x85b
|
|
0: a\x0a\x0d\x85b
|
|
a\r\n\r\nb
|
|
0: a\x0d\x0a\x0d\x0ab
|
|
a\r\n\r\n\r\nb
|
|
0: a\x0d\x0a\x0d\x0a\x0d\x0ab
|
|
a\n\r\n\rb
|
|
0: a\x0a\x0d\x0a\x0db
|
|
a\n\n\r\nb
|
|
0: a\x0a\x0a\x0d\x0ab
|
|
\= Expect no match
|
|
a\n\n\n\rb
|
|
No match
|
|
a\r
|
|
No match
|
|
|
|
/.+foo/
|
|
afoo
|
|
0: afoo
|
|
\= Expect no match
|
|
\r\nfoo
|
|
No match
|
|
\nfoo
|
|
No match
|
|
|
|
/.+foo/newline=crlf
|
|
afoo
|
|
0: afoo
|
|
\nfoo
|
|
0: \x0afoo
|
|
\= Expect no match
|
|
\r\nfoo
|
|
No match
|
|
|
|
/.+foo/newline=any
|
|
afoo
|
|
0: afoo
|
|
\= Expect no match
|
|
\nfoo
|
|
No match
|
|
\r\nfoo
|
|
No match
|
|
|
|
/.+foo/s
|
|
afoo
|
|
0: afoo
|
|
\r\nfoo
|
|
0: \x0d\x0afoo
|
|
\nfoo
|
|
0: \x0afoo
|
|
|
|
/^$/gm,newline=any
|
|
abc\r\rxyz
|
|
0:
|
|
abc\n\rxyz
|
|
0:
|
|
\= Expect no match
|
|
abc\r\nxyz
|
|
No match
|
|
|
|
/^X/m
|
|
XABC
|
|
0: X
|
|
\= Expect no match
|
|
XABC\=notbol
|
|
No match
|
|
|
|
/(?m)^$/g,newline=any,aftertext
|
|
abc\r\n\r\n
|
|
0:
|
|
0+ \x0d\x0a
|
|
|
|
/(?m)^$|^\r\n/g,newline=any,aftertext
|
|
abc\r\n\r\n
|
|
0: \x0d\x0a
|
|
0+
|
|
1:
|
|
|
|
/(?m)$/g,newline=any,aftertext
|
|
abc\r\n\r\n
|
|
0:
|
|
0+ \x0d\x0a\x0d\x0a
|
|
0:
|
|
0+ \x0d\x0a
|
|
0:
|
|
0+
|
|
|
|
/(?|(abc)|(xyz))/
|
|
>abc<
|
|
0: abc
|
|
>xyz<
|
|
0: xyz
|
|
|
|
/(x)(?|(abc)|(xyz))(x)/
|
|
xabcx
|
|
0: xabcx
|
|
xxyzx
|
|
0: xxyzx
|
|
|
|
/(x)(?|(abc)(pqr)|(xyz))(x)/
|
|
xabcpqrx
|
|
0: xabcpqrx
|
|
xxyzx
|
|
0: xxyzx
|
|
|
|
/(?|(abc)|(xyz))(?1)/
|
|
abcabc
|
|
0: abcabc
|
|
xyzabc
|
|
0: xyzabc
|
|
\= Expect no match
|
|
xyzxyz
|
|
No match
|
|
|
|
/\H\h\V\v/
|
|
X X\x0a
|
|
0: X X\x0a
|
|
X\x09X\x0b
|
|
0: X\x09X\x0b
|
|
\= Expect no match
|
|
\xa0 X\x0a
|
|
No match
|
|
|
|
/\H*\h+\V?\v{3,4}/
|
|
\x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
|
|
0: \x09 \xa0X\x0a\x0b\x0c\x0d
|
|
\x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
|
|
0: \x09 \xa0\x0a\x0b\x0c\x0d
|
|
\x09\x20\xa0\x0a\x0b\x0c
|
|
0: \x09 \xa0\x0a\x0b\x0c
|
|
\= Expect no match
|
|
\x09\x20\xa0\x0a\x0b
|
|
No match
|
|
|
|
/\H{3,4}/
|
|
XY ABCDE
|
|
0: ABCD
|
|
XY PQR ST
|
|
0: PQR
|
|
|
|
/.\h{3,4}./
|
|
XY AB PQRS
|
|
0: B P
|
|
1: B
|
|
|
|
/\h*X\h?\H+Y\H?Z/
|
|
>XNNNYZ
|
|
0: XNNNYZ
|
|
> X NYQZ
|
|
0: X NYQZ
|
|
\= Expect no match
|
|
>XYZ
|
|
No match
|
|
> X NY Z
|
|
No match
|
|
|
|
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
|
|
>XY\x0aZ\x0aA\x0bNN\x0c
|
|
0: XY\x0aZ\x0aA\x0bNN\x0c
|
|
>\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
|
|
0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
|
|
|
|
/.+A/newline=crlf
|
|
\= Expect no match
|
|
\r\nA
|
|
No match
|
|
|
|
/\nA/newline=crlf
|
|
\r\nA
|
|
0: \x0aA
|
|
|
|
/[\r\n]A/newline=crlf
|
|
\r\nA
|
|
0: \x0aA
|
|
|
|
/(\r|\n)A/newline=crlf
|
|
\r\nA
|
|
0: \x0aA
|
|
|
|
/a\Rb/I,bsr=anycrlf
|
|
Capture group count = 0
|
|
\R matches CR, LF, or CRLF
|
|
First code unit = 'a'
|
|
Last code unit = 'b'
|
|
Subject length lower bound = 3
|
|
a\rb
|
|
0: a\x0db
|
|
a\nb
|
|
0: a\x0ab
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
\= Expect no match
|
|
a\x85b
|
|
No match
|
|
a\x0bb
|
|
No match
|
|
|
|
/a\Rb/I,bsr=unicode
|
|
Capture group count = 0
|
|
\R matches any Unicode newline
|
|
First code unit = 'a'
|
|
Last code unit = 'b'
|
|
Subject length lower bound = 3
|
|
a\rb
|
|
0: a\x0db
|
|
a\nb
|
|
0: a\x0ab
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
a\x85b
|
|
0: a\x85b
|
|
a\x0bb
|
|
0: a\x0bb
|
|
|
|
/a\R?b/I,bsr=anycrlf
|
|
Capture group count = 0
|
|
\R matches CR, LF, or CRLF
|
|
First code unit = 'a'
|
|
Last code unit = 'b'
|
|
Subject length lower bound = 2
|
|
a\rb
|
|
0: a\x0db
|
|
a\nb
|
|
0: a\x0ab
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
\= Expect no match
|
|
a\x85b
|
|
No match
|
|
a\x0bb
|
|
No match
|
|
|
|
/a\R?b/I,bsr=unicode
|
|
Capture group count = 0
|
|
\R matches any Unicode newline
|
|
First code unit = 'a'
|
|
Last code unit = 'b'
|
|
Subject length lower bound = 2
|
|
a\rb
|
|
0: a\x0db
|
|
a\nb
|
|
0: a\x0ab
|
|
a\r\nb
|
|
0: a\x0d\x0ab
|
|
a\x85b
|
|
0: a\x85b
|
|
a\x0bb
|
|
0: a\x0bb
|
|
|
|
/a\R{2,4}b/I,bsr=anycrlf
|
|
Capture group count = 0
|
|
\R matches CR, LF, or CRLF
|
|
First code unit = 'a'
|
|
Last code unit = 'b'
|
|
Subject length lower bound = 4
|
|
a\r\n\nb
|
|
0: a\x0d\x0a\x0ab
|
|
a\n\r\rb
|
|
0: a\x0a\x0d\x0db
|
|
a\r\n\r\n\r\n\r\nb
|
|
0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab
|
|
\= Expect no match
|
|
a\x0b\x0bb
|
|
No match
|
|
a\x85\x85b
|
|
No match
|
|
|
|
/a\R{2,4}b/I,bsr=unicode
|
|
Capture group count = 0
|
|
\R matches any Unicode newline
|
|
First code unit = 'a'
|
|
Last code unit = 'b'
|
|
Subject length lower bound = 4
|
|
a\r\rb
|
|
0: a\x0d\x0db
|
|
a\n\n\nb
|
|
0: a\x0a\x0a\x0ab
|
|
a\r\n\n\r\rb
|
|
0: a\x0d\x0a\x0a\x0d\x0db
|
|
a\x85\x85b
|
|
0: a\x85\x85b
|
|
a\x0b\x0bb
|
|
0: a\x0b\x0bb
|
|
\= Expect no match
|
|
a\r\r\r\r\rb
|
|
No match
|
|
|
|
/a(?!)|\wbc/
|
|
abc
|
|
0: abc
|
|
|
|
/a[]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
|
|
\= Expect no match
|
|
ab
|
|
No match
|
|
|
|
/a[]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
|
|
\= Expect no match
|
|
ab
|
|
No match
|
|
|
|
/a[]*+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
|
|
\= Expect no match
|
|
ab
|
|
No match
|
|
|
|
/a[^]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
|
|
aXb
|
|
0: aXb
|
|
a\nb
|
|
0: a\x0ab
|
|
\= Expect no match
|
|
ab
|
|
No match
|
|
|
|
/a[^]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames
|
|
aXb
|
|
0: aXb
|
|
a\nX\nXb
|
|
0: a\x0aX\x0aXb
|
|
\= Expect no match
|
|
ab
|
|
No match
|
|
|
|
/X$/dollar_endonly
|
|
X
|
|
0: X
|
|
\= Expect no match
|
|
X\n
|
|
No match
|
|
|
|
/X$/
|
|
X
|
|
0: X
|
|
X\n
|
|
0: X
|
|
|
|
/xyz/auto_callout
|
|
xyz
|
|
--->xyz
|
|
+0 ^ x
|
|
+1 ^^ y
|
|
+2 ^ ^ z
|
|
+3 ^ ^ End of pattern
|
|
0: xyz
|
|
abcxyz
|
|
--->abcxyz
|
|
+0 ^ x
|
|
+1 ^^ y
|
|
+2 ^ ^ z
|
|
+3 ^ ^ End of pattern
|
|
0: xyz
|
|
\= Expect no match
|
|
abc
|
|
No match
|
|
abcxypqr
|
|
No match
|
|
|
|
/xyz/auto_callout,no_start_optimize
|
|
abcxyz
|
|
--->abcxyz
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+1 ^^ y
|
|
+2 ^ ^ z
|
|
+3 ^ ^ End of pattern
|
|
0: xyz
|
|
\= Expect no match
|
|
abc
|
|
--->abc
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
No match
|
|
abcxypqr
|
|
--->abcxypqr
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+1 ^^ y
|
|
+2 ^ ^ z
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
+0 ^ x
|
|
No match
|
|
|
|
/(*NO_START_OPT)xyz/auto_callout
|
|
abcxyz
|
|
--->abcxyz
|
|
+15 ^ x
|
|
+15 ^ x
|
|
+15 ^ x
|
|
+15 ^ x
|
|
+16 ^^ y
|
|
+17 ^ ^ z
|
|
+18 ^ ^ End of pattern
|
|
0: xyz
|
|
|
|
/(?C)ab/
|
|
ab
|
|
--->ab
|
|
0 ^ a
|
|
0: ab
|
|
ab\=callout_none
|
|
0: ab
|
|
|
|
/ab/auto_callout
|
|
ab
|
|
--->ab
|
|
+0 ^ a
|
|
+1 ^^ b
|
|
+2 ^ ^ End of pattern
|
|
0: ab
|
|
ab\=callout_none
|
|
0: ab
|
|
|
|
/^"((?(?=[a])[^"])|b)*"$/auto_callout
|
|
"ab"
|
|
--->"ab"
|
|
+0 ^ ^
|
|
+1 ^ "
|
|
+2 ^^ (
|
|
+21 ^^ "
|
|
+3 ^^ (?
|
|
+18 ^^ b
|
|
+5 ^^ (?=
|
|
+8 ^ [a]
|
|
+11 ^^ )
|
|
+12 ^^ [^"]
|
|
+16 ^ ^ )
|
|
+17 ^ ^ |
|
|
+21 ^ ^ "
|
|
+3 ^ ^ (?
|
|
+18 ^ ^ b
|
|
+5 ^ ^ (?=
|
|
+8 ^ [a]
|
|
+19 ^ ^ )*
|
|
+21 ^ ^ "
|
|
+3 ^ ^ (?
|
|
+18 ^ ^ b
|
|
+5 ^ ^ (?=
|
|
+8 ^ [a]
|
|
+17 ^ ^ |
|
|
+22 ^ ^ $
|
|
+23 ^ ^ End of pattern
|
|
0: "ab"
|
|
"ab"\=callout_none
|
|
0: "ab"
|
|
|
|
/\d+X|9+Y/
|
|
++++123999\=ps
|
|
Partial match: 123999
|
|
++++123999Y\=ps
|
|
0: 999Y
|
|
|
|
/Z(*F)/
|
|
\= Expect no match
|
|
Z\=ps
|
|
No match
|
|
ZA\=ps
|
|
No match
|
|
|
|
/Z(?!)/
|
|
\= Expect no match
|
|
Z\=ps
|
|
No match
|
|
ZA\=ps
|
|
No match
|
|
|
|
/dog(sbody)?/
|
|
dogs\=ps
|
|
0: dog
|
|
dogs\=ph
|
|
Partial match: dogs
|
|
|
|
/dog(sbody)??/
|
|
dogs\=ps
|
|
0: dog
|
|
dogs\=ph
|
|
Partial match: dogs
|
|
|
|
/dog|dogsbody/
|
|
dogs\=ps
|
|
0: dog
|
|
dogs\=ph
|
|
Partial match: dogs
|
|
|
|
/dogsbody|dog/
|
|
dogs\=ps
|
|
0: dog
|
|
dogs\=ph
|
|
Partial match: dogs
|
|
|
|
/Z(*F)Q|ZXY/
|
|
Z\=ps
|
|
Partial match: Z
|
|
\= Expect no match
|
|
ZA\=ps
|
|
No match
|
|
X\=ps
|
|
No match
|
|
|
|
/\bthe cat\b/
|
|
the cat\=ps
|
|
0: the cat
|
|
the cat\=ph
|
|
Partial match: the cat
|
|
|
|
/dog(sbody)?/
|
|
dogs\=ps
|
|
0: dog
|
|
body\=dfa_restart
|
|
0: body
|
|
|
|
/dog(sbody)?/
|
|
dogs\=ph
|
|
Partial match: dogs
|
|
body\=dfa_restart
|
|
0: body
|
|
|
|
/abc/
|
|
abc\=ps
|
|
0: abc
|
|
abc\=ph
|
|
0: abc
|
|
|
|
/abc\K123/
|
|
xyzabc123pqr
|
|
Failed: error -42: pattern contains an item that is not supported for DFA matching
|
|
|
|
/(?<=abc)123/allusedtext
|
|
xyzabc123pqr
|
|
0: abc123
|
|
<<<
|
|
xyzabc12\=ps
|
|
Partial match: abc12
|
|
<<<
|
|
xyzabc12\=ph
|
|
Partial match: abc12
|
|
<<<
|
|
|
|
/\babc\b/allusedtext
|
|
+++abc+++
|
|
0: +abc+
|
|
< >
|
|
+++ab\=ps
|
|
Partial match: +ab
|
|
<
|
|
+++ab\=ph
|
|
Partial match: +ab
|
|
<
|
|
|
|
/(?=C)/g,aftertext
|
|
ABCDECBA
|
|
0:
|
|
0+ CDECBA
|
|
0:
|
|
0+ CBA
|
|
|
|
/(abc|def|xyz)/I
|
|
Capture group count = 1
|
|
Starting code units: a d x
|
|
Subject length lower bound = 3
|
|
terhjk;abcdaadsfe
|
|
0: abc
|
|
the quick xyz brown fox
|
|
0: xyz
|
|
\= Expect no match
|
|
thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
|
|
No match
|
|
|
|
/(abc|def|xyz)/I,no_start_optimize
|
|
Capture group count = 1
|
|
Options: no_start_optimize
|
|
terhjk;abcdaadsfe
|
|
0: abc
|
|
the quick xyz brown fox
|
|
0: xyz
|
|
\= Expect no match
|
|
thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
|
|
No match
|
|
|
|
/abcd*/aftertext
|
|
xxxxabcd\=ps
|
|
0: abcd
|
|
0+
|
|
xxxxabcd\=ph
|
|
Partial match: abcd
|
|
dddxxx\=dfa_restart
|
|
0: ddd
|
|
0+ xxx
|
|
xxxxabcd\=ph
|
|
Partial match: abcd
|
|
xxx\=dfa_restart
|
|
0:
|
|
0+ xxx
|
|
|
|
/abcd*/i
|
|
xxxxabcd\=ps
|
|
0: abcd
|
|
xxxxabcd\=ph
|
|
Partial match: abcd
|
|
XXXXABCD\=ps
|
|
0: ABCD
|
|
XXXXABCD\=ph
|
|
Partial match: ABCD
|
|
|
|
/abc\d*/
|
|
xxxxabc1\=ps
|
|
0: abc1
|
|
xxxxabc1\=ph
|
|
Partial match: abc1
|
|
|
|
/abc[de]*/
|
|
xxxxabcde\=ps
|
|
0: abcde
|
|
xxxxabcde\=ph
|
|
Partial match: abcde
|
|
|
|
/(?:(?1)|B)(A(*F)|C)/
|
|
ABCD
|
|
0: BC
|
|
CCD
|
|
0: CC
|
|
\= Expect no match
|
|
CAD
|
|
No match
|
|
|
|
/^(?:(?1)|B)(A(*F)|C)/
|
|
CCD
|
|
0: CC
|
|
BCD
|
|
0: BC
|
|
\= Expect no match
|
|
ABCD
|
|
No match
|
|
CAD
|
|
No match
|
|
BAD
|
|
No match
|
|
|
|
/^(?!a(*SKIP)b)/
|
|
ac
|
|
Failed: error -42: pattern contains an item that is not supported for DFA matching
|
|
|
|
/^(?=a(*SKIP)b|ac)/
|
|
ac
|
|
Failed: error -42: pattern contains an item that is not supported for DFA matching
|
|
|
|
/^(?=a(*THEN)b|ac)/
|
|
ac
|
|
Failed: error -42: pattern contains an item that is not supported for DFA matching
|
|
|
|
/^(?=a(*PRUNE)b)/
|
|
ab
|
|
Failed: error -42: pattern contains an item that is not supported for DFA matching
|
|
|
|
/^(?(?!a(*SKIP)b))/
|
|
ac
|
|
Failed: error -42: pattern contains an item that is not supported for DFA matching
|
|
|
|
/(?<=abc)def/allusedtext
|
|
abc\=ph
|
|
Partial match: abc
|
|
<<<
|
|
|
|
/abc$/
|
|
abc
|
|
0: abc
|
|
abc\=ps
|
|
0: abc
|
|
abc\=ph
|
|
Partial match: abc
|
|
|
|
/abc$/m
|
|
abc
|
|
0: abc
|
|
abc\n
|
|
0: abc
|
|
abc\=ph
|
|
Partial match: abc
|
|
abc\n\=ph
|
|
0: abc
|
|
abc\=ps
|
|
0: abc
|
|
abc\n\=ps
|
|
0: abc
|
|
|
|
/abc\z/
|
|
abc
|
|
0: abc
|
|
abc\=ps
|
|
0: abc
|
|
abc\=ph
|
|
Partial match: abc
|
|
|
|
/abc\Z/
|
|
abc
|
|
0: abc
|
|
abc\=ps
|
|
0: abc
|
|
abc\=ph
|
|
Partial match: abc
|
|
|
|
/abc\b/
|
|
abc
|
|
0: abc
|
|
abc\=ps
|
|
0: abc
|
|
abc\=ph
|
|
Partial match: abc
|
|
|
|
/abc\B/
|
|
abc\=ps
|
|
Partial match: abc
|
|
abc\=ph
|
|
Partial match: abc
|
|
\= Expect no match
|
|
abc
|
|
No match
|
|
|
|
/.+/
|
|
abc\=offset=0
|
|
0: abc
|
|
abc\=offset=1
|
|
0: bc
|
|
abc\=offset=2
|
|
0: c
|
|
\= Bad offsets
|
|
abc\=offset=4
|
|
Failed: error -33: bad offset value
|
|
abc\=offset=-4
|
|
** Invalid value in 'offset=-4'
|
|
\= Expect no match
|
|
abc\=offset=3
|
|
No match
|
|
|
|
/^(?:a)++\w/
|
|
aaaab
|
|
0: aaaab
|
|
\= Expect no match
|
|
aaaa
|
|
No match
|
|
bbb
|
|
No match
|
|
|
|
/^(?:aa|(?:a)++\w)/
|
|
aaaab
|
|
0: aaaab
|
|
1: aa
|
|
aaaa
|
|
0: aa
|
|
\= Expect no match
|
|
bbb
|
|
No match
|
|
|
|
/^(?:a)*+\w/
|
|
aaaab
|
|
0: aaaab
|
|
bbb
|
|
0: b
|
|
\= Expect no match
|
|
aaaa
|
|
No match
|
|
|
|
/^(a)++\w/
|
|
aaaab
|
|
0: aaaab
|
|
\= Expect no match
|
|
aaaa
|
|
No match
|
|
bbb
|
|
No match
|
|
|
|
/^(a|)++\w/
|
|
aaaab
|
|
0: aaaab
|
|
\= Expect no match
|
|
aaaa
|
|
No match
|
|
bbb
|
|
No match
|
|
|
|
/(?=abc){3}abc/aftertext
|
|
abcabcabc
|
|
0: abc
|
|
0+ abcabc
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
|
|
/(?=abc)+abc/aftertext
|
|
abcabcabc
|
|
0: abc
|
|
0+ abcabc
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
|
|
/(?=abc)++abc/aftertext
|
|
abcabcabc
|
|
0: abc
|
|
0+ abcabc
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
|
|
/(?=abc){0}xyz/
|
|
xyz
|
|
0: xyz
|
|
|
|
/(?=abc){1}xyz/
|
|
\= Expect no match
|
|
xyz
|
|
No match
|
|
|
|
/(?=(a))?./
|
|
ab
|
|
0: a
|
|
bc
|
|
0: b
|
|
|
|
/(?=(a))??./
|
|
ab
|
|
0: a
|
|
bc
|
|
0: b
|
|
|
|
/^(?=(a)){0}b(?1)/
|
|
backgammon
|
|
0: ba
|
|
|
|
/^(?=(?1))?[az]([abc])d/
|
|
abd
|
|
0: abd
|
|
zcdxx
|
|
0: zcd
|
|
|
|
/^(?!a){0}\w+/
|
|
aaaaa
|
|
0: aaaaa
|
|
|
|
/(?<=(abc))?xyz/
|
|
abcxyz
|
|
0: xyz
|
|
pqrxyz
|
|
0: xyz
|
|
|
|
/((?2))((?1))/
|
|
abc
|
|
Failed: error -52: nested recursion at the same subject position
|
|
|
|
/(?(R)a+|(?R)b)/
|
|
aaaabcde
|
|
0: aaaab
|
|
|
|
/(?(R)a+|((?R))b)/
|
|
aaaabcde
|
|
0: aaaab
|
|
|
|
/((?(R)a+|(?1)b))/
|
|
aaaabcde
|
|
0: aaaab
|
|
|
|
/((?(R2)a+|(?1)b))()/
|
|
aaaabcde
|
|
Failed: error -40: backreference condition or recursion test is not supported for DFA matching
|
|
|
|
/(?(R)a*(?1)|((?R))b)/
|
|
aaaabcde
|
|
Failed: error -52: nested recursion at the same subject position
|
|
|
|
/(a+)/no_auto_possess
|
|
aaaa\=ovector=3
|
|
Matched, but offsets vector is too small to show all matches
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
aaaa\=ovector=4
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
|
|
/^\R/
|
|
\r\=ps
|
|
0: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
|
|
/^\R{2,3}x/
|
|
\r\=ps
|
|
Partial match: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
\r\r\=ps
|
|
Partial match: \x0d\x0d
|
|
\r\r\=ph
|
|
Partial match: \x0d\x0d
|
|
\r\r\r\=ps
|
|
Partial match: \x0d\x0d\x0d
|
|
\r\r\r\=ph
|
|
Partial match: \x0d\x0d\x0d
|
|
\r\rx
|
|
0: \x0d\x0dx
|
|
\r\r\rx
|
|
0: \x0d\x0d\x0dx
|
|
|
|
/^\R{2,3}?x/
|
|
\r\=ps
|
|
Partial match: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
\r\r\=ps
|
|
Partial match: \x0d\x0d
|
|
\r\r\=ph
|
|
Partial match: \x0d\x0d
|
|
\r\r\r\=ps
|
|
Partial match: \x0d\x0d\x0d
|
|
\r\r\r\=ph
|
|
Partial match: \x0d\x0d\x0d
|
|
\r\rx
|
|
0: \x0d\x0dx
|
|
\r\r\rx
|
|
0: \x0d\x0d\x0dx
|
|
|
|
/^\R?x/
|
|
\r\=ps
|
|
Partial match: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
x
|
|
0: x
|
|
\rx
|
|
0: \x0dx
|
|
|
|
/^\R+x/
|
|
\r\=ps
|
|
Partial match: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
\r\n\=ps
|
|
Partial match: \x0d\x0a
|
|
\r\n\=ph
|
|
Partial match: \x0d\x0a
|
|
\rx
|
|
0: \x0dx
|
|
|
|
/^a$/newline=crlf
|
|
a\r\=ps
|
|
Partial match: a\x0d
|
|
a\r\=ph
|
|
Partial match: a\x0d
|
|
|
|
/^a$/m,newline=crlf
|
|
a\r\=ps
|
|
Partial match: a\x0d
|
|
a\r\=ph
|
|
Partial match: a\x0d
|
|
|
|
/^(a$|a\r)/newline=crlf
|
|
a\r\=ps
|
|
0: a\x0d
|
|
a\r\=ph
|
|
Partial match: a\x0d
|
|
|
|
/^(a$|a\r)/m,newline=crlf
|
|
a\r\=ps
|
|
0: a\x0d
|
|
a\r\=ph
|
|
Partial match: a\x0d
|
|
|
|
/./newline=crlf
|
|
\r\=ps
|
|
0: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
|
|
/.{2,3}/newline=crlf
|
|
\r\=ps
|
|
Partial match: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
\r\r\=ps
|
|
0: \x0d\x0d
|
|
\r\r\=ph
|
|
Partial match: \x0d\x0d
|
|
\r\r\r\=ps
|
|
0: \x0d\x0d\x0d
|
|
\r\r\r\=ph
|
|
Partial match: \x0d\x0d\x0d
|
|
|
|
/.{2,3}?/newline=crlf
|
|
\r\=ps
|
|
Partial match: \x0d
|
|
\r\=ph
|
|
Partial match: \x0d
|
|
\r\r\=ps
|
|
0: \x0d\x0d
|
|
\r\r\=ph
|
|
Partial match: \x0d\x0d
|
|
\r\r\r\=ps
|
|
0: \x0d\x0d\x0d
|
|
1: \x0d\x0d
|
|
\r\r\r\=ph
|
|
Partial match: \x0d\x0d\x0d
|
|
|
|
# Test simple validity check for restarts
|
|
|
|
/abcdef/
|
|
abc\=dfa_restart
|
|
Failed: error -38: invalid data in workspace for DFA restart
|
|
|
|
/<H((?(?!<H|F>)(.)|(?R))++)*F>/
|
|
text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
|
|
0: <H more text <H texting more hexA0-"\xa0" hex above 7F-"\xbc" F> text xxxxx <H text F> text F>
|
|
|
|
/^(?>.{4})abc|^\w\w.xabcd/
|
|
xxxxabcd
|
|
0: xxxxabcd
|
|
1: xxxxabc
|
|
xx\xa0xabcd
|
|
0: xx\xa0xabcd
|
|
1: xx\xa0xabc
|
|
|
|
/^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
|
|
xxxxxxxxabcd
|
|
0: xxxxxxxxabcd
|
|
1: xxxxxxxxabc
|
|
xx\xa0xxxxxabcd
|
|
0: xx\xa0xxxxxabcd
|
|
1: xx\xa0xxxxxabc
|
|
|
|
/abcd/
|
|
abcd\=ovector=0
|
|
0: abcd
|
|
|
|
# These tests show up auto-possessification
|
|
|
|
/[ab]*/
|
|
aaaa
|
|
0: aaaa
|
|
|
|
/[ab]*?/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
4:
|
|
|
|
/[ab]?/
|
|
aaaa
|
|
0: a
|
|
|
|
/[ab]??/
|
|
aaaa
|
|
0: a
|
|
1:
|
|
|
|
/[ab]+/
|
|
aaaa
|
|
0: aaaa
|
|
|
|
/[ab]+?/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
|
|
/[ab]{2,3}/
|
|
aaaa
|
|
0: aaa
|
|
|
|
/[ab]{2,3}?/
|
|
aaaa
|
|
0: aaa
|
|
1: aa
|
|
|
|
/[ab]{2,}/
|
|
aaaa
|
|
0: aaaa
|
|
|
|
/[ab]{2,}?/
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
|
|
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
|
|
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
|
0: NON QUOTED "QUOT""ED" AFTER
|
|
|
|
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
|
|
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
|
|
0: NON QUOTED "QUOT""ED" AFTER
|
|
|
|
/abc(?=xyz)/allusedtext
|
|
abcxyzpqr
|
|
0: abcxyz
|
|
>>>
|
|
abcxyzpqr\=aftertext
|
|
0: abcxyz
|
|
>>>
|
|
0+ xyzpqr
|
|
|
|
/(?<=pqr)abc(?=xyz)/allusedtext
|
|
xyzpqrabcxyzpqr
|
|
0: pqrabcxyz
|
|
<<< >>>
|
|
xyzpqrabcxyzpqr\=aftertext
|
|
0: pqrabcxyz
|
|
<<< >>>
|
|
0+ xyzpqr
|
|
|
|
/a\b/
|
|
a.\=allusedtext
|
|
0: a.
|
|
>
|
|
a\=allusedtext
|
|
0: a
|
|
|
|
/abc(?=abcde)(?=ab)/allusedtext
|
|
abcabcdefg
|
|
0: abcabcde
|
|
>>>>>
|
|
|
|
/a*?b*?/
|
|
ab
|
|
0: ab
|
|
1: a
|
|
2:
|
|
|
|
/(*NOTEMPTY)a*?b*?/
|
|
ab
|
|
0: ab
|
|
1: a
|
|
ba
|
|
0: b
|
|
cb
|
|
0: b
|
|
|
|
/(*NOTEMPTY_ATSTART)a*?b*?/aftertext
|
|
ab
|
|
0: ab
|
|
0+
|
|
1: a
|
|
cdab
|
|
0:
|
|
0+ dab
|
|
|
|
/(a)(b)|(c)/
|
|
XcX\=ovector=2,get=1,get=2,get=3,get=4,getall
|
|
0: c
|
|
Get substring 1 failed (-55): requested value is not set
|
|
Get substring 2 failed (-54): requested value is not available
|
|
Get substring 3 failed (-54): requested value is not available
|
|
Get substring 4 failed (-54): requested value is not available
|
|
0L c
|
|
|
|
/(?<A>aa)/
|
|
aa\=get=A
|
|
0: aa
|
|
Get substring 'A' failed (-41): function is not supported for DFA matching
|
|
aa\=copy=A
|
|
0: aa
|
|
Copy substring 'A' failed (-41): function is not supported for DFA matching
|
|
|
|
/a+/no_auto_possess
|
|
a\=ovector=2,get=1,get=2,getall
|
|
0: a
|
|
Get substring 1 failed (-55): requested value is not set
|
|
Get substring 2 failed (-54): requested value is not available
|
|
0L a
|
|
aaa\=ovector=2,get=1,get=2,getall
|
|
Matched, but offsets vector is too small to show all matches
|
|
0: aaa
|
|
1: aa
|
|
1G aa (2)
|
|
Get substring 2 failed (-54): requested value is not available
|
|
0L aaa
|
|
1L aa
|
|
|
|
/a(b)c(d)/
|
|
abc\=ph,copy=0,copy=1,getall
|
|
Partial match: abc
|
|
0C abc (3)
|
|
Copy substring 1 failed (-2): partial match
|
|
get substring list failed (-2): partial match
|
|
|
|
/ab(?C" any text with spaces ")cde/B
|
|
------------------------------------------------------------------
|
|
Bra
|
|
ab
|
|
CalloutStr " any text with spaces " 6 30 1
|
|
cde
|
|
Ket
|
|
End
|
|
------------------------------------------------------------------
|
|
abcde
|
|
Callout (6): " any text with spaces "
|
|
--->abcde
|
|
^ ^ c
|
|
0: abcde
|
|
12abcde
|
|
Callout (6): " any text with spaces "
|
|
--->12abcde
|
|
^ ^ c
|
|
0: abcde
|
|
|
|
/^a(b)c(?C1)def/
|
|
abcdef
|
|
--->abcdef
|
|
1 ^ ^ d
|
|
0: abcdef
|
|
|
|
/^a(b)c(?C"AB")def/
|
|
abcdef
|
|
Callout (10): "AB"
|
|
--->abcdef
|
|
^ ^ d
|
|
0: abcdef
|
|
|
|
/^a(b)c(?C1)def/
|
|
abcdef\=callout_capture
|
|
Callout 1: last capture = 0
|
|
--->abcdef
|
|
^ ^ d
|
|
0: abcdef
|
|
|
|
/^a(b)c(?C{AB})def/B
|
|
------------------------------------------------------------------
|
|
Bra
|
|
^
|
|
a
|
|
CBra 1
|
|
b
|
|
Ket
|
|
c
|
|
CalloutStr {AB} 10 14 1
|
|
def
|
|
Ket
|
|
End
|
|
------------------------------------------------------------------
|
|
abcdef\=callout_capture
|
|
Callout (10): {AB} last capture = 0
|
|
--->abcdef
|
|
^ ^ d
|
|
0: abcdef
|
|
|
|
/^(?(?C25)(?=abc)abcd|xyz)/B
|
|
------------------------------------------------------------------
|
|
Bra
|
|
^
|
|
Cond
|
|
Callout 25 9 3
|
|
Assert
|
|
abc
|
|
Ket
|
|
abcd
|
|
Alt
|
|
xyz
|
|
Ket
|
|
Ket
|
|
End
|
|
------------------------------------------------------------------
|
|
abcdefg
|
|
--->abcdefg
|
|
25 ^ (?=
|
|
0: abcd
|
|
xyz123
|
|
--->xyz123
|
|
25 ^ (?=
|
|
0: xyz
|
|
|
|
/^(?(?C$abc$)(?=abc)abcd|xyz)/B
|
|
------------------------------------------------------------------
|
|
Bra
|
|
^
|
|
Cond
|
|
CalloutStr $abc$ 7 12 3
|
|
Assert
|
|
abc
|
|
Ket
|
|
abcd
|
|
Alt
|
|
xyz
|
|
Ket
|
|
Ket
|
|
End
|
|
------------------------------------------------------------------
|
|
abcdefg
|
|
Callout (7): $abc$
|
|
--->abcdefg
|
|
^ (?=
|
|
0: abcd
|
|
xyz123
|
|
Callout (7): $abc$
|
|
--->xyz123
|
|
^ (?=
|
|
0: xyz
|
|
|
|
/^ab(?C'first')cd(?C"second")ef/
|
|
abcdefg
|
|
Callout (7): 'first'
|
|
--->abcdefg
|
|
^ ^ c
|
|
Callout (20): "second"
|
|
--->abcdefg
|
|
^ ^ e
|
|
0: abcdef
|
|
|
|
/(?:a(?C`code`)){3}X/
|
|
aaaXY
|
|
Callout (8): `code`
|
|
--->aaaXY
|
|
^^ ){3}
|
|
Callout (8): `code`
|
|
--->aaaXY
|
|
^ ^ ){3}
|
|
Callout (8): `code`
|
|
--->aaaXY
|
|
^ ^ ){3}
|
|
0: aaaX
|
|
|
|
# Binary zero in callout string
|
|
/"a(?C'x" 00 "z')b"/hex
|
|
abcdefgh
|
|
Callout (5): 'x\x00z'
|
|
--->abcdefgh
|
|
^^ b
|
|
0: ab
|
|
|
|
/(?(?!)a|b)/
|
|
bbb
|
|
0: b
|
|
\= Expect no match
|
|
aaa
|
|
No match
|
|
|
|
/^/gm
|
|
\n\n\n
|
|
0:
|
|
0:
|
|
0:
|
|
|
|
/^/gm,alt_circumflex
|
|
\n\n\n
|
|
0:
|
|
0:
|
|
0:
|
|
0:
|
|
|
|
/abc/use_offset_limit
|
|
1234abcde\=offset_limit=100
|
|
0: abc
|
|
1234abcde\=offset_limit=9
|
|
0: abc
|
|
1234abcde\=offset_limit=4
|
|
0: abc
|
|
1234abcde\=offset_limit=4,offset=4
|
|
0: abc
|
|
\= Expect no match
|
|
1234abcde\=offset_limit=4,offset=5
|
|
No match
|
|
1234abcde\=offset_limit=3
|
|
No match
|
|
|
|
/(?<=abc)/use_offset_limit
|
|
1234abc\=offset_limit=7
|
|
0:
|
|
\= Expect no match
|
|
1234abc\=offset_limit=6
|
|
No match
|
|
|
|
/abcd/null_context
|
|
abcd\=null_context
|
|
0: abcd
|
|
|
|
/()()a+/no_auto_possess
|
|
aaa\=allcaptures
|
|
** Ignored for DFA matching: allcaptures
|
|
0: aaa
|
|
1: aa
|
|
2: a
|
|
a\=allcaptures
|
|
** Ignored for DFA matching: allcaptures
|
|
0: a
|
|
|
|
/(*LIMIT_DEPTH=100)^((.)(?1)|.)$/
|
|
\= Expect depth limit exceeded
|
|
a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
|
|
Failed: error -53: matching depth limit exceeded
|
|
|
|
/(*LIMIT_HEAP=0)^((.)(?1)|.)$/
|
|
\= Expect heap limit exceeded
|
|
a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
|
|
Failed: error -63: heap limit exceeded
|
|
|
|
/(*LIMIT_HEAP=50000)^((.)(?1)|.)$/
|
|
\= Expect success
|
|
a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
|
|
0: a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]
|
|
|
|
/(02-)?[0-9]{3}-[0-9]{3}/
|
|
02-123-123
|
|
0: 02-123-123
|
|
|
|
/^(a(?2))(b)(?1)/
|
|
abbab\=find_limits
|
|
Minimum heap limit = 0
|
|
Minimum match limit = 4
|
|
Minimum depth limit = 2
|
|
0: abbab
|
|
|
|
/abc/endanchored
|
|
xyzabc
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabcdef
|
|
No match
|
|
\= Expect error
|
|
xyzabc\=ph
|
|
Failed: error -34: bad option value
|
|
|
|
/abc/
|
|
xyzabc\=endanchored
|
|
0: abc
|
|
\= Expect no match
|
|
xyzabcdef\=endanchored
|
|
No match
|
|
\= Expect error
|
|
xyzabc\=ps,endanchored
|
|
Failed: error -34: bad option value
|
|
|
|
/abc|bcd/endanchored
|
|
xyzabcd
|
|
0: bcd
|
|
\= Expect no match
|
|
xyzabcdef
|
|
No match
|
|
|
|
/(*NUL)^.*/
|
|
a\nb\x00ccc
|
|
0: a\x0ab
|
|
|
|
/(*NUL)^.*/s
|
|
a\nb\x00ccc
|
|
0: a\x0ab\x00ccc
|
|
|
|
/^x/m,newline=nul
|
|
ab\x00xy
|
|
0: x
|
|
|
|
/'#comment' 0d 0a 00 '^x\' 0a 'y'/x,newline=nul,hex
|
|
x\nyz
|
|
0: x\x0ay
|
|
|
|
/(*NUL)^X\NY/
|
|
X\nY
|
|
0: X\x0aY
|
|
X\rY
|
|
0: X\x0dY
|
|
\= Expect no match
|
|
X\x00Y
|
|
No match
|
|
|
|
/(?<=abc|)/
|
|
abcde\=aftertext
|
|
0:
|
|
0+ abcde
|
|
|
|
/(?<=|abc)/
|
|
abcde\=aftertext
|
|
0:
|
|
0+ abcde
|
|
|
|
/(?<=abc|)/endanchored
|
|
abcde\=aftertext
|
|
0:
|
|
0+
|
|
|
|
/(?<=|abc)/endanchored
|
|
abcde\=aftertext
|
|
0:
|
|
0+
|
|
|
|
/(*LIMIT_MATCH=100).*(?![|H]?.*(?![|H]?););.*(?![|H]?.*(?![|H]?););\x00\x00\x00\x00\x00\x00\x00(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?![|);)?.*(![|H]?);)?.*(?![|H]?);)?.*(?![|H]?);)?.*(?![|H]););![|H]?););[|H]?);|H]?);)\x00\x00\x00\x00\x00\x00H]?););?![|H]?);)?.*(?![|H]?););[||H]?);)?.*(?![|H]?););[|H]?);(?![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););;[\x00\x00\x00\x00\x00\x00\x00![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););/no_dotstar_anchor
|
|
\= Expect limit exceeded
|
|
.*(?![|H]?.*(?![|H]?););.*(?![|H]?.*(?![|H]?););\x00\x00\x00\x00\x00\x00\x00(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?![|);)?.*(![|H]?);)?.*(?![|H]?);)?.*(?![|H]?);)?.*(?![|H]););![|H]?););[|H]?);|H]?);)\x00\x00\x00\x00\x00\x00H]?););?![|H]?);)?.*(?![|H]?););[||H]?);)?.*(?![|H]?););[|H]?);(?![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););;[\x00\x00\x00\x00\x00\x00\x00![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););
|
|
Failed: error -47: match limit exceeded
|
|
|
|
/\n/firstline
|
|
xyz\nabc
|
|
0: \x0a
|
|
|
|
/\nabc/firstline
|
|
xyz\nabc
|
|
0: \x0aabc
|
|
|
|
/\x{0a}abc/firstline,newline=crlf
|
|
\= Expect no match
|
|
xyz\r\nabc
|
|
No match
|
|
|
|
/[abc]/firstline
|
|
\= Expect no match
|
|
\na
|
|
No match
|
|
|
|
/foobar/
|
|
the foobar thing\=copy_matched_subject
|
|
0: foobar
|
|
the foobar thing\=copy_matched_subject,zero_terminate
|
|
0: foobar
|
|
|
|
/foobar/g
|
|
the foobar thing foobar again\=copy_matched_subject
|
|
0: foobar
|
|
0: foobar
|
|
|
|
/(?(VERSION>=0)^B0W)/
|
|
B0W-W0W
|
|
0: B0W
|
|
\= Expect no match
|
|
0
|
|
No match
|
|
|
|
/(?(VERSION>=1000)^B0W|W0W)/
|
|
B0W-W0W
|
|
0: W0W
|
|
\= Expect no match
|
|
0
|
|
No match
|
|
|
|
/(?<=pqr)abc(?=xyz)/
|
|
123pqrabcxy\=ps,allusedtext
|
|
Partial match: pqrabcxy
|
|
<<<
|
|
123pqrabcxyz\=ps,allusedtext
|
|
0: pqrabcxyz
|
|
<<< >>>
|
|
|
|
/(?>a+b)/
|
|
aaaa\=ps
|
|
Partial match: aaaa
|
|
aaaab\=ps
|
|
0: aaaab
|
|
|
|
/(abc)(?1)/
|
|
abca\=ps
|
|
Partial match: abca
|
|
abcabc\=ps
|
|
0: abcabc
|
|
|
|
/(?(?=abc).*|Z)/
|
|
ab\=ps
|
|
Partial match: ab
|
|
abcxyz\=ps
|
|
0: abcxyz
|
|
|
|
/(abc)++x/
|
|
abcab\=ps
|
|
Partial match: abcab
|
|
abc\=ps
|
|
Partial match: abc
|
|
ab\=ps
|
|
Partial match: ab
|
|
abcx
|
|
0: abcx
|
|
|
|
/\z/
|
|
abc\=ph
|
|
Partial match:
|
|
abc\=ps
|
|
0:
|
|
|
|
/\Z/
|
|
abc\=ph
|
|
Partial match:
|
|
abc\=ps
|
|
0:
|
|
abc\n\=ph
|
|
Partial match: \x0a
|
|
abc\n\=ps
|
|
0:
|
|
|
|
/c*+(?<=[bc])/
|
|
abc\=ph
|
|
Partial match: c
|
|
ab\=ph
|
|
Partial match:
|
|
abc\=ps
|
|
0: c
|
|
ab\=ps
|
|
0:
|
|
|
|
/c++(?<=[bc])/
|
|
abc\=ph
|
|
Partial match: c
|
|
ab\=ph
|
|
Partial match:
|
|
|
|
/(?<=(?=.(?<=x)))/
|
|
abx
|
|
0:
|
|
ab\=ph
|
|
Partial match:
|
|
bxyz
|
|
0:
|
|
xyz
|
|
0:
|
|
|
|
/(?![ab]).*/
|
|
ab\=ph
|
|
Partial match:
|
|
|
|
/c*+/
|
|
ab\=ph,offset=2
|
|
Partial match:
|
|
|
|
/
|
|
/anchored, firstline
|
|
\x0a
|
|
0: \x0a
|
|
|
|
/
|
|
/anchored,firstline,no_start_optimize
|
|
\x0a
|
|
0: \x0a
|
|
|
|
/
|
|
/firstline
|
|
\x0a
|
|
0: \x0a
|
|
abc\x0adef
|
|
0: \x0a
|
|
|
|
/|a(?0)/endanchored
|
|
aaaa
|
|
0: aaaa
|
|
1: aaa
|
|
2: aa
|
|
3: a
|
|
4:
|
|
|
|
# End of testinput6
|