PCRE version 2.08 31-Aug-1999 /(a)b|/ Identifying subpattern count = 1 No options No first char No req char /abc/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'c' abc 0: abc defabc 0: abc \Aabc 0: abc *** Failers No match \Adefabc No match ABC No match /^abc/ Identifying subpattern count = 0 Options: anchored No first char Req char = 'c' abc 0: abc \Aabc 0: abc *** Failers No match defabc No match \Adefabc No match /a+bc/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'c' /a*bc/ Identifying subpattern count = 0 No options No first char Req char = 'c' /a{3}bc/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'c' /(abc|a+z)/ Identifying subpattern count = 1 No options First char = 'a' No req char /^abc$/ Identifying subpattern count = 0 Options: anchored No first char Req 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/ Identifying subpattern count = 0 No options First char at start or follows \n Req char = 'b' /.*?b/ Identifying subpattern count = 0 No options First char at start or follows \n Req char = 'b' /cat|dog|elephant/ Identifying subpattern count = 0 No options No first char No req 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 Identifying subpattern count = 0 No options No first char No req 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 Identifying subpattern count = 0 Options: caseless No first char No req 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 Identifying subpattern count = 0 No options No first char No req char Starting character set: a b c d /(a|[^\dZ])/S Identifying subpattern count = 1 No options No first char No req 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 Identifying subpattern count = 1 No options No first char No req 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/ Identifying subpattern count = 3 No options First char = 'a' Req 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/ Identifying subpattern count = 3 No options First char = 'a' No req 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: 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: \O9aba Matched, but too many substrings 0: aba 1: 2: a \O12aba 0: aba 1: 2: a 3: b /abc$/E Identifying subpattern count = 0 Options: dollar_endonly First char = 'a' Req 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/ Identifying subpattern count = 0 No options First char = 't' Req 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 Identifying subpattern count = 0 Options: anchored No first char Req 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/ Identifying subpattern count = 0 No options No first char No req char abcdef 0: abc abcdef\B 0: def /.*((abc)$|(def))/ Identifying subpattern count = 3 No options First char at start or follows \n No req char defabc 0: defabc 1: abc 2: abc \Zdefabc 0: def 1: def 2: 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,}/ Identifying subpattern count = 0 No options No first char No req char co-processors, and for 0: -pr /<.*>/ Identifying subpattern count = 0 No options First char = '<' Req char = '>' abcghinop 0: ghi /<.*?>/ Identifying subpattern count = 0 No options First char = '<' Req char = '>' abcghinop 0: /<.*>/U Identifying subpattern count = 0 Options: ungreedy First char = '<' Req char = '>' abcghinop 0: /<.*>(?U)/ Identifying subpattern count = 0 Options: ungreedy First char = '<' Req char = '>' abcghinop 0: /<.*?>/U Identifying subpattern count = 0 Options: ungreedy First char = '<' Req char = '>' abcghinop 0: ghi /={3,}/U Identifying subpattern count = 0 Options: ungreedy First char = '=' Req char = '=' abc========def 0: === /(?U)={3,}?/ Identifying subpattern count = 0 Options: ungreedy First char = '=' Req char = '=' abc========def 0: ======== /(?^abc)/m Identifying subpattern count = 0 Options: multiline First char at start or follows \n Req 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/ Identifying subpattern count = 0 No options First char = 'T' Req char = 's' /(?<=bullock|donkey)-cart/ Identifying subpattern count = 0 No options First char = '-' Req 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)/ Identifying subpattern count = 0 No options Case state changes No first char No req char /(?>.*)(?<=(abcd)|(xyz))/ Identifying subpattern count = 2 No options First char at start or follows \n No req char alphabetabcd 0: alphabetabcd 1: abcd endingxyz 0: endingxyz 1: 2: xyz /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/ Identifying subpattern count = 0 No options Case state changes First char = 'Z' Req 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 /(? 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: 3: f 0C adef (4) /^abc\00def/ Identifying subpattern count = 0 Options: anchored No first char Req 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 Identifying subpattern count = 8 No options First char = 'w' Req char = 'd' /.*X/D ------------------------------------------------------------------ 0 8 Bra 0 3 Any* 5 1 X 8 8 Ket 11 End ------------------------------------------------------------------ Identifying subpattern count = 0 No options First char at start or follows \n Req char = 'X' /.*X/Ds ------------------------------------------------------------------ 0 8 Bra 0 3 Any* 5 1 X 8 8 Ket 11 End ------------------------------------------------------------------ Identifying subpattern count = 0 Options: anchored dotall No first char Req 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 ------------------------------------------------------------------ Identifying subpattern count = 1 No options First char at start or follows \n No req 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 ------------------------------------------------------------------ Identifying subpattern count = 1 Options: anchored dotall No first char No req 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 ------------------------------------------------------------------ Identifying subpattern count = 1 Options: anchored dotall No first char No req 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 ------------------------------------------------------------------ Identifying subpattern count = 0 No options First char at start or follows \n No req char /\Biss\B/+ Identifying subpattern count = 0 No options First char = 'i' Req char = 's' Mississippi 0: iss 0+ issippi /\Biss\B/+P Mississippi 0: iss 0+ issippi /iss/G+ Identifying subpattern count = 0 No options First char = 'i' Req char = 's' Mississippi 0: iss 0+ issippi 0: iss 0+ ippi /\Biss\B/G+ Identifying subpattern count = 0 No options First char = 'i' Req char = 's' Mississippi 0: iss 0+ issippi /\Biss\B/g+ Identifying subpattern count = 0 No options First char = 'i' Req char = 's' Mississippi 0: iss 0+ issippi 0: iss 0+ ippi *** Failers No match Mississippi\A No match /(?<=[Ms])iss/g+ Identifying subpattern count = 0 No options First char = 'i' Req char = 's' Mississippi 0: iss 0+ issippi 0: iss 0+ ippi /(?<=[Ms])iss/G+ Identifying subpattern count = 0 No options First char = 'i' Req char = 's' Mississippi 0: iss 0+ issippi /^iss/g+ Identifying subpattern count = 0 Options: anchored No first char Req char = 's' ississippi 0: iss 0+ issippi /.*iss/g+ Identifying subpattern count = 0 No options First char at start or follows \n Req char = 's' abciss\nxyzisspqr 0: abciss 0+ \x0axyzisspqr 0: xyziss 0+ pqr /.i./+g Identifying subpattern count = 0 No options No first char Req 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 Identifying subpattern count = 0 Options: anchored No first char Req char = 's' Mississippi 0: Mis 0+ sissippi /^ab\n/g+ Identifying subpattern count = 0 Options: anchored No first char Req char = 10 ab\nab\ncd 0: ab\x0a 0+ ab\x0acd /^ab\n/mg+ Identifying subpattern count = 0 Options: multiline First char at start or follows \n Req char = 10 ab\nab\ncd 0: ab\x0a 0+ ab\x0acd 0: ab\x0a 0+ cd /abc/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'c' /abc|bac/ Identifying subpattern count = 0 No options No first char Req char = 'c' /(abc|bac)/ Identifying subpattern count = 1 No options No first char Req char = 'c' /(abc|(c|dc))/ Identifying subpattern count = 2 No options No first char Req char = 'c' /(abc|(d|de)c)/ Identifying subpattern count = 2 No options No first char Req char = 'c' /a*/ Identifying subpattern count = 0 No options No first char No req char /a+/ Identifying subpattern count = 0 No options First char = 'a' No req char /(baa|a+)/ Identifying subpattern count = 1 No options No first char Req char = 'a' /a{0,3}/ Identifying subpattern count = 0 No options No first char No req char /baa{3,}/ Identifying subpattern count = 0 No options First char = 'b' Req char = 'a' /"([^\\"]+|\\.)*"/ Identifying subpattern count = 1 No options First char = '"' Req char = '"' /(abc|ab[cd])/ Identifying subpattern count = 1 No options First char = 'a' No req char /(a|.)/ Identifying subpattern count = 1 No options No first char No req char /a|ba|\w/ Identifying subpattern count = 0 No options No first char No req char /abc(?=pqr)/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'r' /...(?<=abc)/ Identifying subpattern count = 0 No options No first char No req char /abc(?!pqr)/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'c' /ab./ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /ab[xyz]/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /abc*/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /ab.c*/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /a.c*/ Identifying subpattern count = 0 No options First char = 'a' No req char /.c*/ Identifying subpattern count = 0 No options No first char No req char /ac*/ Identifying subpattern count = 0 No options First char = 'a' No req char /(a.c*|b.c*)/ Identifying subpattern count = 1 No options No first char No req char /a.c*|aba/ Identifying subpattern count = 0 No options First char = 'a' No req char /.+a/ Identifying subpattern count = 0 No options No first char Req char = 'a' /(?=abcda)a.*/ Identifying subpattern count = 0 No options First char = 'a' No req char /(?=a)a.*/ Identifying subpattern count = 0 No options First char = 'a' No req char /a(b)*/ Identifying subpattern count = 1 No options First char = 'a' No req char /a\d*/ Identifying subpattern count = 0 No options First char = 'a' No req char /ab\d*/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /a(\d)*/ Identifying subpattern count = 1 No options First char = 'a' No req char /abcde{0,0}/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'd' /ab\d+/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /a(?(1)b)/ Identifying subpattern count = 0 No options First char = 'a' No req char /a(?(1)bag|big)/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'g' /a(?(1)bag|big)*/ Identifying subpattern count = 0 No options First char = 'a' No req char /a(?(1)bag|big)+/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'g' /a(?(1)b..|b..)/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'b' /ab\d{0}e/ Identifying subpattern count = 0 No options First char = 'a' Req char = 'e' /a?b?/ Identifying subpattern count = 0 No options No first char No req char a 0: a b 0: b ab 0: ab \ 0: *** Failers 0: \N No match /|-/ Identifying subpattern count = 0 No options No first char No req char abcd 0: -abc 0: \Nab-c 0: - *** Failers 0: \Nabc No match /.*?/g+ Identifying subpattern count = 0 No options First char at start or follows \n No req char abc 0: 0+ abc 0: a 0+ bc 0: 0+ bc 0: b 0+ c 0: 0+ c 0: c 0+ 0: 0+ / End of test input / Identifying subpattern count = 0 No options First char = ' ' Req char = ' '