mirror of
https://github.com/php/php-src.git
synced 2024-10-15 13:32:39 +00:00
2073 lines
35 KiB
Plaintext
2073 lines
35 KiB
Plaintext
|
PCRE version 3.1 09-Feb-2000
|
||
|
|
||
|
/(a)b|/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/abc/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
abc
|
||
|
0: abc
|
||
|
defabc
|
||
|
0: abc
|
||
|
\Aabc
|
||
|
0: abc
|
||
|
*** Failers
|
||
|
No match
|
||
|
\Adefabc
|
||
|
No match
|
||
|
ABC
|
||
|
No match
|
||
|
|
||
|
/^abc/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
abc
|
||
|
0: abc
|
||
|
\Aabc
|
||
|
0: abc
|
||
|
*** Failers
|
||
|
No match
|
||
|
defabc
|
||
|
No match
|
||
|
\Adefabc
|
||
|
No match
|
||
|
|
||
|
/a+bc/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
|
||
|
/a*bc/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
|
||
|
/a{3}bc/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
|
||
|
/(abc|a+z)/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/^abc$/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
abc
|
||
|
0: abc
|
||
|
*** Failers
|
||
|
No match
|
||
|
def\nabc
|
||
|
No match
|
||
|
|
||
|
/ab\gdef/X
|
||
|
Failed: unrecognized character follows \ at offset 3
|
||
|
|
||
|
/(?X)ab\gdef/X
|
||
|
Failed: unrecognized character follows \ at offset 7
|
||
|
|
||
|
/x{5,4}/
|
||
|
Failed: numbers out of order in {} quantifier at offset 5
|
||
|
|
||
|
/z{65536}/
|
||
|
Failed: number too big in {} quantifier at offset 7
|
||
|
|
||
|
/[abcd/
|
||
|
Failed: missing terminating ] for character class at offset 5
|
||
|
|
||
|
/[\B]/
|
||
|
Failed: invalid escape sequence in character class at offset 2
|
||
|
|
||
|
/[a-\w]/
|
||
|
Failed: invalid escape sequence in character class at offset 4
|
||
|
|
||
|
/[z-a]/
|
||
|
Failed: range out of order in character class at offset 3
|
||
|
|
||
|
/^*/
|
||
|
Failed: nothing to repeat at offset 1
|
||
|
|
||
|
/(abc/
|
||
|
Failed: missing ) at offset 4
|
||
|
|
||
|
/(?# abc/
|
||
|
Failed: missing ) after comment at offset 7
|
||
|
|
||
|
/(?z)abc/
|
||
|
Failed: unrecognized character after (? at offset 2
|
||
|
|
||
|
/.*b/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
Need char = 'b'
|
||
|
|
||
|
/.*?b/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
Need char = 'b'
|
||
|
|
||
|
/cat|dog|elephant/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
this sentence eventually mentions a cat
|
||
|
0: cat
|
||
|
this sentences rambles on and on for a while and then reaches elephant
|
||
|
0: elephant
|
||
|
|
||
|
/cat|dog|elephant/S
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: c d e
|
||
|
this sentence eventually mentions a cat
|
||
|
0: cat
|
||
|
this sentences rambles on and on for a while and then reaches elephant
|
||
|
0: elephant
|
||
|
|
||
|
/cat|dog|elephant/iS
|
||
|
Capturing subpattern count = 0
|
||
|
Options: caseless
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: C D E c d e
|
||
|
this sentence eventually mentions a CAT cat
|
||
|
0: CAT
|
||
|
this sentences rambles on and on for a while to elephant ElePhant
|
||
|
0: elephant
|
||
|
|
||
|
/a|[bcd]/S
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: a b c d
|
||
|
|
||
|
/(a|[^\dZ])/S
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: \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 \x20 ! " # $ % & ' ( ) * + , - . / : ; < = >
|
||
|
? @ 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 [ \ ] ^ _ ` 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 { | } ~ \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
|
||
|
|
||
|
/(a|b)*[\s]/S
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: \x09 \x0a \x0b \x0c \x0d \x20 a b
|
||
|
|
||
|
/(ab\2)/
|
||
|
Failed: back reference to non-existent subpattern at offset 6
|
||
|
|
||
|
/{4,5}abc/
|
||
|
Failed: nothing to repeat at offset 4
|
||
|
|
||
|
/(a)(b)(c)\2/
|
||
|
Capturing subpattern count = 3
|
||
|
Max back reference = 2
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
abcb
|
||
|
0: abcb
|
||
|
1: a
|
||
|
2: b
|
||
|
3: c
|
||
|
\O0abcb
|
||
|
Matched, but too many substrings
|
||
|
\O3abcb
|
||
|
Matched, but too many substrings
|
||
|
0: abcb
|
||
|
\O6abcb
|
||
|
Matched, but too many substrings
|
||
|
0: abcb
|
||
|
1: a
|
||
|
\O9abcb
|
||
|
Matched, but too many substrings
|
||
|
0: abcb
|
||
|
1: a
|
||
|
2: b
|
||
|
\O12abcb
|
||
|
0: abcb
|
||
|
1: a
|
||
|
2: b
|
||
|
3: c
|
||
|
|
||
|
/(a)bc|(a)(b)\2/
|
||
|
Capturing subpattern count = 3
|
||
|
Max back reference = 2
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
abc
|
||
|
0: abc
|
||
|
1: a
|
||
|
\O0abc
|
||
|
Matched, but too many substrings
|
||
|
\O3abc
|
||
|
Matched, but too many substrings
|
||
|
0: abc
|
||
|
\O6abc
|
||
|
0: abc
|
||
|
1: a
|
||
|
aba
|
||
|
0: aba
|
||
|
1: <unset>
|
||
|
2: a
|
||
|
3: b
|
||
|
\O0aba
|
||
|
Matched, but too many substrings
|
||
|
\O3aba
|
||
|
Matched, but too many substrings
|
||
|
0: aba
|
||
|
\O6aba
|
||
|
Matched, but too many substrings
|
||
|
0: aba
|
||
|
1: <unset>
|
||
|
\O9aba
|
||
|
Matched, but too many substrings
|
||
|
0: aba
|
||
|
1: <unset>
|
||
|
2: a
|
||
|
\O12aba
|
||
|
0: aba
|
||
|
1: <unset>
|
||
|
2: a
|
||
|
3: b
|
||
|
|
||
|
/abc$/E
|
||
|
Capturing subpattern count = 0
|
||
|
Options: dollar_endonly
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
abc
|
||
|
0: abc
|
||
|
*** Failers
|
||
|
No match
|
||
|
abc\n
|
||
|
No match
|
||
|
abc\ndef
|
||
|
No match
|
||
|
|
||
|
/(a)(b)(c)(d)(e)\6/
|
||
|
Failed: back reference to non-existent subpattern at offset 17
|
||
|
|
||
|
/the quick brown fox/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 't'
|
||
|
Need char = 'x'
|
||
|
the quick brown fox
|
||
|
0: the quick brown fox
|
||
|
this is a line with the quick brown fox
|
||
|
0: the quick brown fox
|
||
|
|
||
|
/the quick brown fox/A
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'x'
|
||
|
the quick brown fox
|
||
|
0: the quick brown fox
|
||
|
*** Failers
|
||
|
No match
|
||
|
this is a line with the quick brown fox
|
||
|
No match
|
||
|
|
||
|
/ab(?z)cd/
|
||
|
Failed: unrecognized character after (? at offset 4
|
||
|
|
||
|
/^abc|def/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
abcdef
|
||
|
0: abc
|
||
|
abcdef\B
|
||
|
0: def
|
||
|
|
||
|
/.*((abc)$|(def))/
|
||
|
Capturing subpattern count = 3
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
No need char
|
||
|
defabc
|
||
|
0: defabc
|
||
|
1: abc
|
||
|
2: abc
|
||
|
\Zdefabc
|
||
|
0: def
|
||
|
1: def
|
||
|
2: <unset>
|
||
|
3: def
|
||
|
|
||
|
/abc/P
|
||
|
abc
|
||
|
0: abc
|
||
|
*** Failers
|
||
|
No match: POSIX code 17: match failed
|
||
|
|
||
|
/^abc|def/P
|
||
|
abcdef
|
||
|
0: abc
|
||
|
abcdef\B
|
||
|
0: def
|
||
|
|
||
|
/.*((abc)$|(def))/P
|
||
|
defabc
|
||
|
0: defabc
|
||
|
1: abc
|
||
|
2: abc
|
||
|
\Zdefabc
|
||
|
0: def
|
||
|
1: def
|
||
|
3: def
|
||
|
|
||
|
/the quick brown fox/P
|
||
|
the quick brown fox
|
||
|
0: the quick brown fox
|
||
|
*** Failers
|
||
|
No match: POSIX code 17: match failed
|
||
|
The Quick Brown Fox
|
||
|
No match: POSIX code 17: match failed
|
||
|
|
||
|
/the quick brown fox/Pi
|
||
|
the quick brown fox
|
||
|
0: the quick brown fox
|
||
|
The Quick Brown Fox
|
||
|
0: The Quick Brown Fox
|
||
|
|
||
|
/abc.def/P
|
||
|
*** Failers
|
||
|
No match: POSIX code 17: match failed
|
||
|
abc\ndef
|
||
|
No match: POSIX code 17: match failed
|
||
|
|
||
|
/abc$/P
|
||
|
abc
|
||
|
0: abc
|
||
|
abc\n
|
||
|
0: abc
|
||
|
|
||
|
/(abc)\2/P
|
||
|
Failed: POSIX code 15: bad back reference at offset 7
|
||
|
|
||
|
/(abc\1)/P
|
||
|
abc
|
||
|
No match: POSIX code 17: match failed
|
||
|
|
||
|
/)/
|
||
|
Failed: unmatched parentheses at offset 0
|
||
|
|
||
|
/a[]b/
|
||
|
Failed: missing terminating ] for character class at offset 4
|
||
|
|
||
|
/[^aeiou ]{3,}/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
co-processors, and for
|
||
|
0: -pr
|
||
|
|
||
|
/<.*>/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = '<'
|
||
|
Need char = '>'
|
||
|
abc<def>ghi<klm>nop
|
||
|
0: <def>ghi<klm>
|
||
|
|
||
|
/<.*?>/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = '<'
|
||
|
Need char = '>'
|
||
|
abc<def>ghi<klm>nop
|
||
|
0: <def>
|
||
|
|
||
|
/<.*>/U
|
||
|
Capturing subpattern count = 0
|
||
|
Options: ungreedy
|
||
|
First char = '<'
|
||
|
Need char = '>'
|
||
|
abc<def>ghi<klm>nop
|
||
|
0: <def>
|
||
|
|
||
|
/<.*>(?U)/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: ungreedy
|
||
|
First char = '<'
|
||
|
Need char = '>'
|
||
|
abc<def>ghi<klm>nop
|
||
|
0: <def>
|
||
|
|
||
|
/<.*?>/U
|
||
|
Capturing subpattern count = 0
|
||
|
Options: ungreedy
|
||
|
First char = '<'
|
||
|
Need char = '>'
|
||
|
abc<def>ghi<klm>nop
|
||
|
0: <def>ghi<klm>
|
||
|
|
||
|
/={3,}/U
|
||
|
Capturing subpattern count = 0
|
||
|
Options: ungreedy
|
||
|
First char = '='
|
||
|
Need char = '='
|
||
|
abc========def
|
||
|
0: ===
|
||
|
|
||
|
/(?U)={3,}?/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: ungreedy
|
||
|
First char = '='
|
||
|
Need char = '='
|
||
|
abc========def
|
||
|
0: ========
|
||
|
|
||
|
/(?<!bar|cattle)foo/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'f'
|
||
|
Need char = 'o'
|
||
|
foo
|
||
|
0: foo
|
||
|
catfoo
|
||
|
0: foo
|
||
|
*** Failers
|
||
|
No match
|
||
|
the barfoo
|
||
|
No match
|
||
|
and cattlefoo
|
||
|
No match
|
||
|
|
||
|
/(?<=a+)b/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 6
|
||
|
|
||
|
/(?<=aaa|b{0,3})b/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 14
|
||
|
|
||
|
/(?<!(foo)a\1)bar/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 12
|
||
|
|
||
|
/(?i)abc/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: caseless
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
|
||
|
/(a|(?m)a)/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/(?i)^1234/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored caseless
|
||
|
No first char
|
||
|
Need char = '4'
|
||
|
|
||
|
/(^b|(?i)^d)/
|
||
|
Capturing subpattern count = 1
|
||
|
Options: anchored
|
||
|
Case state changes
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/(?s).*/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored dotall
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/[abcd]/S
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: a b c d
|
||
|
|
||
|
/(?i)[abcd]/S
|
||
|
Capturing subpattern count = 0
|
||
|
Options: caseless
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: A B C D a b c d
|
||
|
|
||
|
/(?m)[xy]|(b|c)/S
|
||
|
Capturing subpattern count = 1
|
||
|
Options: multiline
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: b c x y
|
||
|
|
||
|
/(^a|^b)/m
|
||
|
Capturing subpattern count = 1
|
||
|
Options: multiline
|
||
|
First char at start or follows \n
|
||
|
No need char
|
||
|
|
||
|
/(?i)(^a|^b)/m
|
||
|
Capturing subpattern count = 1
|
||
|
Options: caseless multiline
|
||
|
First char at start or follows \n
|
||
|
No need char
|
||
|
|
||
|
/(a)(?(1)a|b|c)/
|
||
|
Failed: conditional group contains more than two branches at offset 13
|
||
|
|
||
|
/(?(?=a)a|b|c)/
|
||
|
Failed: conditional group contains more than two branches at offset 12
|
||
|
|
||
|
/(?(1a)/
|
||
|
Failed: malformed number after (?( at offset 4
|
||
|
|
||
|
/(?(?i))/
|
||
|
Failed: assertion expected after (?( at offset 3
|
||
|
|
||
|
/(?(abc))/
|
||
|
Failed: assertion expected after (?( at offset 3
|
||
|
|
||
|
/(?(?<ab))/
|
||
|
Failed: unrecognized character after (?< at offset 2
|
||
|
|
||
|
/((?s)blah)\s+\1/
|
||
|
Capturing subpattern count = 1
|
||
|
Max back reference = 1
|
||
|
No options
|
||
|
First char = 'b'
|
||
|
Need char = 'h'
|
||
|
|
||
|
/((?i)blah)\s+\1/
|
||
|
Capturing subpattern count = 1
|
||
|
Max back reference = 1
|
||
|
No options
|
||
|
Case state changes
|
||
|
No first char
|
||
|
Need char = 'h'
|
||
|
|
||
|
/((?i)b)/DS
|
||
|
------------------------------------------------------------------
|
||
|
0 16 Bra 0
|
||
|
3 8 Bra 1
|
||
|
6 01 Opt
|
||
|
8 1 b
|
||
|
11 8 Ket
|
||
|
14 00 Opt
|
||
|
16 16 Ket
|
||
|
19 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
Case state changes
|
||
|
No first char
|
||
|
Need char = 'b'
|
||
|
Starting character set: B b
|
||
|
|
||
|
/(a*b|(?i:c*(?-i)d))/S
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
Case state changes
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: C a b c d
|
||
|
|
||
|
/a$/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
a
|
||
|
0: a
|
||
|
a\n
|
||
|
0: a
|
||
|
*** Failers
|
||
|
No match
|
||
|
\Za
|
||
|
No match
|
||
|
\Za\n
|
||
|
No match
|
||
|
|
||
|
/a$/m
|
||
|
Capturing subpattern count = 0
|
||
|
Options: multiline
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
a
|
||
|
0: a
|
||
|
a\n
|
||
|
0: a
|
||
|
\Za\n
|
||
|
0: a
|
||
|
*** Failers
|
||
|
No match
|
||
|
\Za
|
||
|
No match
|
||
|
|
||
|
/\Aabc/m
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored multiline
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
|
||
|
/^abc/m
|
||
|
Capturing subpattern count = 0
|
||
|
Options: multiline
|
||
|
First char at start or follows \n
|
||
|
Need char = 'c'
|
||
|
|
||
|
/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/
|
||
|
Capturing subpattern count = 5
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'a'
|
||
|
aaaaabbbbbcccccdef
|
||
|
0: aaaaabbbbbcccccdef
|
||
|
1: aaaaabbbbbcccccdef
|
||
|
2: aaaaa
|
||
|
3: b
|
||
|
4: bbbbccccc
|
||
|
5: def
|
||
|
|
||
|
/(?<=foo)[ab]/S
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: a b
|
||
|
|
||
|
/(?<!foo)(alpha|omega)/S
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'a'
|
||
|
Starting character set: a o
|
||
|
|
||
|
/(?!alphabet)[ab]/S
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
Starting character set: a b
|
||
|
|
||
|
/(?<=foo\n)^bar/m
|
||
|
Capturing subpattern count = 0
|
||
|
Options: multiline
|
||
|
First char at start or follows \n
|
||
|
Need char = 'r'
|
||
|
|
||
|
/(?>^abc)/m
|
||
|
Capturing subpattern count = 0
|
||
|
Options: multiline
|
||
|
First char at start or follows \n
|
||
|
Need char = 'c'
|
||
|
abc
|
||
|
0: abc
|
||
|
def\nabc
|
||
|
0: abc
|
||
|
*** Failers
|
||
|
No match
|
||
|
defabc
|
||
|
No match
|
||
|
|
||
|
/(?<=ab(c+)d)ef/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 11
|
||
|
|
||
|
/(?<=ab(?<=c+)d)ef/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 12
|
||
|
|
||
|
/(?<=ab(c|de)f)g/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 13
|
||
|
|
||
|
/The next three are in testinput2 because they have variable length branches/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'T'
|
||
|
Need char = 's'
|
||
|
|
||
|
/(?<=bullock|donkey)-cart/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = '-'
|
||
|
Need char = 't'
|
||
|
the bullock-cart
|
||
|
0: -cart
|
||
|
a donkey-cart race
|
||
|
0: -cart
|
||
|
*** Failers
|
||
|
No match
|
||
|
cart
|
||
|
No match
|
||
|
horse-and-cart
|
||
|
No match
|
||
|
|
||
|
/(?<=ab(?i)x|y|z)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
Case state changes
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/(?>.*)(?<=(abcd)|(xyz))/
|
||
|
Capturing subpattern count = 2
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
No need char
|
||
|
alphabetabcd
|
||
|
0: alphabetabcd
|
||
|
1: abcd
|
||
|
endingxyz
|
||
|
0: endingxyz
|
||
|
1: <unset>
|
||
|
2: xyz
|
||
|
|
||
|
/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
Case state changes
|
||
|
First char = 'Z'
|
||
|
Need char = 'Z'
|
||
|
abxyZZ
|
||
|
0: ZZ
|
||
|
abXyZZ
|
||
|
0: ZZ
|
||
|
ZZZ
|
||
|
0: ZZ
|
||
|
zZZ
|
||
|
0: ZZ
|
||
|
bZZ
|
||
|
0: ZZ
|
||
|
BZZ
|
||
|
0: ZZ
|
||
|
*** Failers
|
||
|
No match
|
||
|
ZZ
|
||
|
No match
|
||
|
abXYZZ
|
||
|
No match
|
||
|
zzz
|
||
|
No match
|
||
|
bzz
|
||
|
No match
|
||
|
|
||
|
/(?<!(foo)a)bar/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = 'b'
|
||
|
Need char = 'r'
|
||
|
bar
|
||
|
0: bar
|
||
|
foobbar
|
||
|
0: bar
|
||
|
*** Failers
|
||
|
No match
|
||
|
fooabar
|
||
|
No match
|
||
|
|
||
|
/This one is here because Perl 5.005_02 doesn't fail it/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'T'
|
||
|
Need char = 't'
|
||
|
|
||
|
/^(a)?(?(1)a|b)+$/
|
||
|
Capturing subpattern count = 1
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
*** Failers
|
||
|
No match
|
||
|
a
|
||
|
No match
|
||
|
|
||
|
/This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'T'
|
||
|
Need char = 'g'
|
||
|
|
||
|
/^(a\1?){4}$/
|
||
|
Capturing subpattern count = 1
|
||
|
Max back reference = 1
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'a'
|
||
|
aaaaaa
|
||
|
0: aaaaaa
|
||
|
1: aa
|
||
|
|
||
|
/These are syntax tests from Perl 5.005/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'T'
|
||
|
Need char = '5'
|
||
|
|
||
|
/a[b-a]/
|
||
|
Failed: range out of order in character class at offset 4
|
||
|
|
||
|
/a[]b/
|
||
|
Failed: missing terminating ] for character class at offset 4
|
||
|
|
||
|
/a[/
|
||
|
Failed: missing terminating ] for character class at offset 2
|
||
|
|
||
|
/*a/
|
||
|
Failed: nothing to repeat at offset 0
|
||
|
|
||
|
/(*)b/
|
||
|
Failed: nothing to repeat at offset 1
|
||
|
|
||
|
/abc)/
|
||
|
Failed: unmatched parentheses at offset 3
|
||
|
|
||
|
/(abc/
|
||
|
Failed: missing ) at offset 4
|
||
|
|
||
|
/a**/
|
||
|
Failed: nothing to repeat at offset 2
|
||
|
|
||
|
/)(/
|
||
|
Failed: unmatched parentheses at offset 0
|
||
|
|
||
|
/\1/
|
||
|
Failed: back reference to non-existent subpattern at offset 2
|
||
|
|
||
|
/\2/
|
||
|
Failed: back reference to non-existent subpattern at offset 2
|
||
|
|
||
|
/(a)|\2/
|
||
|
Failed: back reference to non-existent subpattern at offset 6
|
||
|
|
||
|
/a[b-a]/i
|
||
|
Failed: range out of order in character class at offset 4
|
||
|
|
||
|
/a[]b/i
|
||
|
Failed: missing terminating ] for character class at offset 4
|
||
|
|
||
|
/a[/i
|
||
|
Failed: missing terminating ] for character class at offset 2
|
||
|
|
||
|
/*a/i
|
||
|
Failed: nothing to repeat at offset 0
|
||
|
|
||
|
/(*)b/i
|
||
|
Failed: nothing to repeat at offset 1
|
||
|
|
||
|
/abc)/i
|
||
|
Failed: unmatched parentheses at offset 3
|
||
|
|
||
|
/(abc/i
|
||
|
Failed: missing ) at offset 4
|
||
|
|
||
|
/a**/i
|
||
|
Failed: nothing to repeat at offset 2
|
||
|
|
||
|
/)(/i
|
||
|
Failed: unmatched parentheses at offset 0
|
||
|
|
||
|
/:(?:/
|
||
|
Failed: missing ) at offset 4
|
||
|
|
||
|
/(?<%)b/
|
||
|
Failed: unrecognized character after (?< at offset 0
|
||
|
|
||
|
/a(?{)b/
|
||
|
Failed: unrecognized character after (? at offset 3
|
||
|
|
||
|
/a(?{{})b/
|
||
|
Failed: unrecognized character after (? at offset 3
|
||
|
|
||
|
/a(?{}})b/
|
||
|
Failed: unrecognized character after (? at offset 3
|
||
|
|
||
|
/a(?{"{"})b/
|
||
|
Failed: unrecognized character after (? at offset 3
|
||
|
|
||
|
/a(?{"{"}})b/
|
||
|
Failed: unrecognized character after (? at offset 3
|
||
|
|
||
|
/(?(1?)a|b)/
|
||
|
Failed: malformed number after (?( at offset 4
|
||
|
|
||
|
/(?(1)a|b|c)/
|
||
|
Failed: conditional group contains more than two branches at offset 10
|
||
|
|
||
|
/[a[:xyz:/
|
||
|
Failed: missing terminating ] for character class at offset 8
|
||
|
|
||
|
/(?<=x+)y/
|
||
|
Failed: lookbehind assertion is not fixed length at offset 6
|
||
|
|
||
|
/a{37,17}/
|
||
|
Failed: numbers out of order in {} quantifier at offset 7
|
||
|
|
||
|
/abc/\
|
||
|
Failed: \ at end of pattern at offset 4
|
||
|
|
||
|
/abc/\P
|
||
|
Failed: POSIX code 9: bad escape sequence at offset 4
|
||
|
|
||
|
/abc/\i
|
||
|
Failed: \ at end of pattern at offset 4
|
||
|
|
||
|
/(a)bc(d)/
|
||
|
Capturing subpattern count = 2
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'd'
|
||
|
abcd
|
||
|
0: abcd
|
||
|
1: a
|
||
|
2: d
|
||
|
abcd\C2
|
||
|
0: abcd
|
||
|
1: a
|
||
|
2: d
|
||
|
2C d (1)
|
||
|
abcd\C5
|
||
|
0: abcd
|
||
|
1: a
|
||
|
2: d
|
||
|
copy substring 5 failed -7
|
||
|
|
||
|
/(.{20})/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
abcdefghijklmnopqrstuvwxyz
|
||
|
0: abcdefghijklmnopqrst
|
||
|
1: abcdefghijklmnopqrst
|
||
|
abcdefghijklmnopqrstuvwxyz\C1
|
||
|
0: abcdefghijklmnopqrst
|
||
|
1: abcdefghijklmnopqrst
|
||
|
copy substring 1 failed -6
|
||
|
abcdefghijklmnopqrstuvwxyz\G1
|
||
|
0: abcdefghijklmnopqrst
|
||
|
1: abcdefghijklmnopqrst
|
||
|
1G abcdefghijklmnopqrst (20)
|
||
|
|
||
|
/(.{15})/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
abcdefghijklmnopqrstuvwxyz
|
||
|
0: abcdefghijklmno
|
||
|
1: abcdefghijklmno
|
||
|
abcdefghijklmnopqrstuvwxyz\C1\G1
|
||
|
0: abcdefghijklmno
|
||
|
1: abcdefghijklmno
|
||
|
1C abcdefghijklmno (15)
|
||
|
1G abcdefghijklmno (15)
|
||
|
|
||
|
/(.{16})/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
abcdefghijklmnopqrstuvwxyz
|
||
|
0: abcdefghijklmnop
|
||
|
1: abcdefghijklmnop
|
||
|
abcdefghijklmnopqrstuvwxyz\C1\G1\L
|
||
|
0: abcdefghijklmnop
|
||
|
1: abcdefghijklmnop
|
||
|
copy substring 1 failed -6
|
||
|
1G abcdefghijklmnop (16)
|
||
|
0L abcdefghijklmnop
|
||
|
1L abcdefghijklmnop
|
||
|
|
||
|
/^(a|(bc))de(f)/
|
||
|
Capturing subpattern count = 3
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'f'
|
||
|
adef\G1\G2\G3\G4\L
|
||
|
0: adef
|
||
|
1: a
|
||
|
2: <unset>
|
||
|
3: f
|
||
|
1G a (1)
|
||
|
2G (0)
|
||
|
3G f (1)
|
||
|
get substring 4 failed -7
|
||
|
0L adef
|
||
|
1L a
|
||
|
2L
|
||
|
3L f
|
||
|
bcdef\G1\G2\G3\G4\L
|
||
|
0: bcdef
|
||
|
1: bc
|
||
|
2: bc
|
||
|
3: f
|
||
|
1G bc (2)
|
||
|
2G bc (2)
|
||
|
3G f (1)
|
||
|
get substring 4 failed -7
|
||
|
0L bcdef
|
||
|
1L bc
|
||
|
2L bc
|
||
|
3L f
|
||
|
adefghijk\C0
|
||
|
0: adef
|
||
|
1: a
|
||
|
2: <unset>
|
||
|
3: f
|
||
|
0C adef (4)
|
||
|
|
||
|
/^abc\00def/
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'f'
|
||
|
abc\00def\L\C0
|
||
|
0: abc\x00def
|
||
|
0C abc (7)
|
||
|
0L abc
|
||
|
|
||
|
/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
|
||
|
)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
|
||
|
)?)?)?)?)?)?)?)?)?otherword/M
|
||
|
Memory allocation (code space): 428
|
||
|
Capturing subpattern count = 8
|
||
|
No options
|
||
|
First char = 'w'
|
||
|
Need char = 'd'
|
||
|
|
||
|
/.*X/D
|
||
|
------------------------------------------------------------------
|
||
|
0 8 Bra 0
|
||
|
3 Any*
|
||
|
5 1 X
|
||
|
8 8 Ket
|
||
|
11 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
Need char = 'X'
|
||
|
|
||
|
/.*X/Ds
|
||
|
------------------------------------------------------------------
|
||
|
0 8 Bra 0
|
||
|
3 Any*
|
||
|
5 1 X
|
||
|
8 8 Ket
|
||
|
11 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored dotall
|
||
|
No first char
|
||
|
Need char = 'X'
|
||
|
|
||
|
/(.*X|^B)/D
|
||
|
------------------------------------------------------------------
|
||
|
0 21 Bra 0
|
||
|
3 8 Bra 1
|
||
|
6 Any*
|
||
|
8 1 X
|
||
|
11 7 Alt
|
||
|
14 ^
|
||
|
15 1 B
|
||
|
18 15 Ket
|
||
|
21 21 Ket
|
||
|
24 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
No need char
|
||
|
|
||
|
/(.*X|^B)/Ds
|
||
|
------------------------------------------------------------------
|
||
|
0 21 Bra 0
|
||
|
3 8 Bra 1
|
||
|
6 Any*
|
||
|
8 1 X
|
||
|
11 7 Alt
|
||
|
14 ^
|
||
|
15 1 B
|
||
|
18 15 Ket
|
||
|
21 21 Ket
|
||
|
24 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 1
|
||
|
Options: anchored dotall
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/(?s)(.*X|^B)/D
|
||
|
------------------------------------------------------------------
|
||
|
0 21 Bra 0
|
||
|
3 8 Bra 1
|
||
|
6 Any*
|
||
|
8 1 X
|
||
|
11 7 Alt
|
||
|
14 ^
|
||
|
15 1 B
|
||
|
18 15 Ket
|
||
|
21 21 Ket
|
||
|
24 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 1
|
||
|
Options: anchored dotall
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/(?s:.*X|^B)/D
|
||
|
------------------------------------------------------------------
|
||
|
0 27 Bra 0
|
||
|
3 10 Bra 0
|
||
|
6 04 Opt
|
||
|
8 Any*
|
||
|
10 1 X
|
||
|
13 9 Alt
|
||
|
16 04 Opt
|
||
|
18 ^
|
||
|
19 1 B
|
||
|
22 19 Ket
|
||
|
25 00 Opt
|
||
|
27 27 Ket
|
||
|
30 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
No need char
|
||
|
|
||
|
/\Biss\B/+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'i'
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
|
||
|
/\Biss\B/+P
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
|
||
|
/iss/G+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'i'
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
0: iss
|
||
|
0+ ippi
|
||
|
|
||
|
/\Biss\B/G+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'i'
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
|
||
|
/\Biss\B/g+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'i'
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
0: iss
|
||
|
0+ ippi
|
||
|
*** Failers
|
||
|
No match
|
||
|
Mississippi\A
|
||
|
No match
|
||
|
|
||
|
/(?<=[Ms])iss/g+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'i'
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
0: iss
|
||
|
0+ ippi
|
||
|
|
||
|
/(?<=[Ms])iss/G+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'i'
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
|
||
|
/^iss/g+
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 's'
|
||
|
ississippi
|
||
|
0: iss
|
||
|
0+ issippi
|
||
|
|
||
|
/.*iss/g+
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char at start or follows \n
|
||
|
Need char = 's'
|
||
|
abciss\nxyzisspqr
|
||
|
0: abciss
|
||
|
0+ \x0axyzisspqr
|
||
|
0: xyziss
|
||
|
0+ pqr
|
||
|
|
||
|
/.i./+g
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'i'
|
||
|
Mississippi
|
||
|
0: Mis
|
||
|
0+ sissippi
|
||
|
0: sis
|
||
|
0+ sippi
|
||
|
0: sip
|
||
|
0+ pi
|
||
|
Mississippi\A
|
||
|
0: Mis
|
||
|
0+ sissippi
|
||
|
0: sis
|
||
|
0+ sippi
|
||
|
0: sip
|
||
|
0+ pi
|
||
|
Missouri river
|
||
|
0: Mis
|
||
|
0+ souri river
|
||
|
0: ri
|
||
|
0+ river
|
||
|
0: riv
|
||
|
0+ er
|
||
|
Missouri river\A
|
||
|
0: Mis
|
||
|
0+ souri river
|
||
|
|
||
|
/^.is/+g
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 's'
|
||
|
Mississippi
|
||
|
0: Mis
|
||
|
0+ sissippi
|
||
|
|
||
|
/^ab\n/g+
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 10
|
||
|
ab\nab\ncd
|
||
|
0: ab\x0a
|
||
|
0+ ab\x0acd
|
||
|
|
||
|
/^ab\n/mg+
|
||
|
Capturing subpattern count = 0
|
||
|
Options: multiline
|
||
|
First char at start or follows \n
|
||
|
Need char = 10
|
||
|
ab\nab\ncd
|
||
|
0: ab\x0a
|
||
|
0+ ab\x0acd
|
||
|
0: ab\x0a
|
||
|
0+ cd
|
||
|
|
||
|
/abc/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
|
||
|
/abc|bac/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
|
||
|
/(abc|bac)/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
|
||
|
/(abc|(c|dc))/
|
||
|
Capturing subpattern count = 2
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
|
||
|
/(abc|(d|de)c)/
|
||
|
Capturing subpattern count = 2
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'c'
|
||
|
|
||
|
/a*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/a+/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/(baa|a+)/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'a'
|
||
|
|
||
|
/a{0,3}/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/baa{3,}/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'b'
|
||
|
Need char = 'a'
|
||
|
|
||
|
/"([^\\"]+|\\.)*"/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = '"'
|
||
|
Need char = '"'
|
||
|
|
||
|
/(abc|ab[cd])/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/(a|.)/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/a|ba|\w/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/abc(?=pqr)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'r'
|
||
|
|
||
|
/...(?<=abc)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/abc(?!pqr)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'c'
|
||
|
|
||
|
/ab./
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/ab[xyz]/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/abc*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/ab.c*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/a.c*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/.c*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/ac*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/(a.c*|b.c*)/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/a.c*|aba/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/.+a/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
Need char = 'a'
|
||
|
|
||
|
/(?=abcda)a.*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/(?=a)a.*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/a(b)*/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/a\d*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/ab\d*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/a(\d)*/
|
||
|
Capturing subpattern count = 1
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/abcde{0,0}/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'd'
|
||
|
|
||
|
/ab\d+/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/a(?(1)b)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/a(?(1)bag|big)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'g'
|
||
|
|
||
|
/a(?(1)bag|big)*/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
No need char
|
||
|
|
||
|
/a(?(1)bag|big)+/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'g'
|
||
|
|
||
|
/a(?(1)b..|b..)/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'b'
|
||
|
|
||
|
/ab\d{0}e/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = 'a'
|
||
|
Need char = 'e'
|
||
|
|
||
|
/a?b?/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
a
|
||
|
0: a
|
||
|
b
|
||
|
0: b
|
||
|
ab
|
||
|
0: ab
|
||
|
\
|
||
|
0:
|
||
|
*** Failers
|
||
|
0:
|
||
|
\N
|
||
|
No match
|
||
|
|
||
|
/|-/
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
abcd
|
||
|
0:
|
||
|
-abc
|
||
|
0:
|
||
|
\Nab-c
|
||
|
0: -
|
||
|
*** Failers
|
||
|
0:
|
||
|
\Nabc
|
||
|
No match
|
||
|
|
||
|
/a*(b+)(z)(z)/P
|
||
|
aaaabbbbzzzz
|
||
|
0: aaaabbbbzz
|
||
|
1: bbbb
|
||
|
2: z
|
||
|
3: z
|
||
|
aaaabbbbzzzz\O0
|
||
|
aaaabbbbzzzz\O1
|
||
|
0: aaaabbbbzz
|
||
|
aaaabbbbzzzz\O2
|
||
|
0: aaaabbbbzz
|
||
|
1: bbbb
|
||
|
aaaabbbbzzzz\O3
|
||
|
0: aaaabbbbzz
|
||
|
1: bbbb
|
||
|
2: z
|
||
|
aaaabbbbzzzz\O4
|
||
|
0: aaaabbbbzz
|
||
|
1: bbbb
|
||
|
2: z
|
||
|
3: z
|
||
|
aaaabbbbzzzz\O5
|
||
|
0: aaaabbbbzz
|
||
|
1: bbbb
|
||
|
2: z
|
||
|
3: z
|
||
|
|
||
|
/^.?abcd/S
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
Need char = 'd'
|
||
|
Study returned NULL
|
||
|
|
||
|
/\( # ( at start
|
||
|
(?: # Non-capturing bracket
|
||
|
(?>[^()]+) # Either a sequence of non-brackets (no backtracking)
|
||
|
| # Or
|
||
|
(?R) # Recurse - i.e. nested bracketed string
|
||
|
)* # Zero or more contents
|
||
|
\) # Closing )
|
||
|
/x
|
||
|
Capturing subpattern count = 0
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(abcd)
|
||
|
0: (abcd)
|
||
|
(abcd)xyz
|
||
|
0: (abcd)
|
||
|
xyz(abcd)
|
||
|
0: (abcd)
|
||
|
(ab(xy)cd)pqr
|
||
|
0: (ab(xy)cd)
|
||
|
(ab(xycd)pqr
|
||
|
0: (xycd)
|
||
|
() abc ()
|
||
|
0: ()
|
||
|
12(abcde(fsh)xyz(foo(bar))lmno)89
|
||
|
0: (abcde(fsh)xyz(foo(bar))lmno)
|
||
|
*** Failers
|
||
|
No match
|
||
|
abcd
|
||
|
No match
|
||
|
abcd)
|
||
|
No match
|
||
|
(abcd
|
||
|
No match
|
||
|
|
||
|
/\( ( (?>[^()]+) | (?R) )* \) /xg
|
||
|
Capturing subpattern count = 1
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(xy)cd)pqr
|
||
|
0: (ab(xy)cd)
|
||
|
1: cd
|
||
|
1(abcd)(x(y)z)pqr
|
||
|
0: (abcd)
|
||
|
1: abcd
|
||
|
0: (x(y)z)
|
||
|
1: z
|
||
|
|
||
|
/\( (?: (?>[^()]+) | (?R) ) \) /x
|
||
|
Capturing subpattern count = 0
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(abcd)
|
||
|
0: (abcd)
|
||
|
(ab(xy)cd)
|
||
|
0: (xy)
|
||
|
(a(b(c)d)e)
|
||
|
0: (c)
|
||
|
((ab))
|
||
|
0: ((ab))
|
||
|
*** Failers
|
||
|
No match
|
||
|
()
|
||
|
No match
|
||
|
|
||
|
/\( (?: (?>[^()]+) | (?R) )? \) /x
|
||
|
Capturing subpattern count = 0
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
()
|
||
|
0: ()
|
||
|
12(abcde(fsh)xyz(foo(bar))lmno)89
|
||
|
0: (fsh)
|
||
|
|
||
|
/\( ( (?>[^()]+) | (?R) )* \) /x
|
||
|
Capturing subpattern count = 1
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(xy)cd)
|
||
|
0: (ab(xy)cd)
|
||
|
1: cd
|
||
|
|
||
|
/\( ( ( (?>[^()]+) | (?R) )* ) \) /x
|
||
|
Capturing subpattern count = 2
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(xy)cd)
|
||
|
0: (ab(xy)cd)
|
||
|
1: ab(xy)cd
|
||
|
2: cd
|
||
|
|
||
|
/\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /x
|
||
|
Capturing subpattern count = 3
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(xy)cd)
|
||
|
0: (ab(xy)cd)
|
||
|
1: <unset>
|
||
|
2: ab(xy)cd
|
||
|
3: cd
|
||
|
(123ab(xy)cd)
|
||
|
0: (123ab(xy)cd)
|
||
|
1: 123
|
||
|
2: ab(xy)cd
|
||
|
3: cd
|
||
|
|
||
|
/\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /x
|
||
|
Capturing subpattern count = 3
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(xy)cd)
|
||
|
0: (ab(xy)cd)
|
||
|
1: ab(xy)cd
|
||
|
2: <unset>
|
||
|
3: cd
|
||
|
(123ab(xy)cd)
|
||
|
0: (123ab(xy)cd)
|
||
|
1: 123ab(xy)cd
|
||
|
2: 123
|
||
|
3: cd
|
||
|
|
||
|
/\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /x
|
||
|
Capturing subpattern count = 11
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(xy)cd)
|
||
|
0: (ab(xy)cd)
|
||
|
1: ab(xy)cd
|
||
|
2: ab(xy)cd
|
||
|
3: ab(xy)cd
|
||
|
4: ab(xy)cd
|
||
|
5: ab(xy)cd
|
||
|
6: ab(xy)cd
|
||
|
7: ab(xy)cd
|
||
|
8: ab(xy)cd
|
||
|
9: ab(xy)cd
|
||
|
10: ab(xy)cd
|
||
|
11: cd
|
||
|
|
||
|
/\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /x
|
||
|
Capturing subpattern count = 3
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(abcd(xyz<p>qrs)123)
|
||
|
0: (abcd(xyz<p>qrs)123)
|
||
|
1: abcd(xyz<p>qrs)123
|
||
|
2: 123
|
||
|
3: <p>qrs
|
||
|
|
||
|
/\( ( ( (?>[^()]+) | ((?R)) )* ) \) /x
|
||
|
Capturing subpattern count = 3
|
||
|
Options: extended
|
||
|
First char = '('
|
||
|
Need char = ')'
|
||
|
(ab(cd)ef)
|
||
|
0: (ab(cd)ef)
|
||
|
1: ab(cd)ef
|
||
|
2: ef
|
||
|
3: (cd)
|
||
|
(ab(cd(ef)gh)ij)
|
||
|
0: (ab(cd(ef)gh)ij)
|
||
|
1: ab(cd(ef)gh)ij
|
||
|
2: ij
|
||
|
3: (cd(ef)gh)
|
||
|
|
||
|
/^[[:alnum:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [0-9A-Za-z]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:alpha:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [A-Za-z]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:ascii:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [\x00-\x7f]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:cntrl:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [\x00-\x1f\x7f]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:digit:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [0-9]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:graph:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [!-~]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:lower:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [a-z]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:print:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [ -~]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:punct:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [!-/:-@[-`{-~]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:space:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [\x09-\x0d ]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:upper:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [A-Z]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:xdigit:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [0-9A-Fa-f]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:word:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [0-9A-Z_a-z]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[[:^cntrl:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [ -~\x80-\xff]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/^[12[:^digit:]]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 37 Bra 0
|
||
|
3 ^
|
||
|
4 [\x00-/1-2:-\xff]
|
||
|
37 37 Ket
|
||
|
40 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
Options: anchored
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/[01[:alpha:]%]/D
|
||
|
------------------------------------------------------------------
|
||
|
0 36 Bra 0
|
||
|
3 [%0-1A-Za-z]
|
||
|
36 36 Ket
|
||
|
39 End
|
||
|
------------------------------------------------------------------
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
No first char
|
||
|
No need char
|
||
|
|
||
|
/[[.ch.]]/
|
||
|
Failed: POSIX collating elements are not supported at offset 1
|
||
|
|
||
|
/[[=ch=]]/
|
||
|
Failed: POSIX collating elements are not supported at offset 1
|
||
|
|
||
|
/[[:rhubarb:]]/
|
||
|
Failed: unknown POSIX class name at offset 3
|
||
|
|
||
|
/[[:upper:]]/i
|
||
|
Capturing subpattern count = 0
|
||
|
Options: caseless
|
||
|
No first char
|
||
|
No need char
|
||
|
A
|
||
|
0: A
|
||
|
a
|
||
|
0: a
|
||
|
|
||
|
/[[:lower:]]/i
|
||
|
Capturing subpattern count = 0
|
||
|
Options: caseless
|
||
|
No first char
|
||
|
No need char
|
||
|
A
|
||
|
0: A
|
||
|
a
|
||
|
0: a
|
||
|
|
||
|
/((?-i)[[:lower:]])[[:lower:]]/i
|
||
|
Capturing subpattern count = 1
|
||
|
Options: caseless
|
||
|
Case state changes
|
||
|
No first char
|
||
|
No need char
|
||
|
ab
|
||
|
0: ab
|
||
|
1: a
|
||
|
aB
|
||
|
0: aB
|
||
|
1: a
|
||
|
*** Failers
|
||
|
0: ai
|
||
|
1: a
|
||
|
Ab
|
||
|
No match
|
||
|
AB
|
||
|
No match
|
||
|
|
||
|
/ End of test input /
|
||
|
Capturing subpattern count = 0
|
||
|
No options
|
||
|
First char = ' '
|
||
|
Need char = ' '
|
||
|
|