PCRE version 2.02 14-Jan-1999 /(a)b|/ Identifying subpattern count = 1 No options No first char /abc/ Identifying subpattern count = 0 No options First char = 'a' 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 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' /a*bc/ Identifying subpattern count = 0 No options No first char /a{3}bc/ Identifying subpattern count = 0 No options First char = 'a' /(abc|a+z)/ Identifying subpattern count = 1 No options First char = 'a' /^abc$/ Identifying subpattern count = 0 Options: anchored No first char abc 0: abc *** Failers No match def\nabc No match /abc\/ Failed: \ at end of pattern at offset 4 /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 Options: anchored No first char /.*?b/ Identifying subpattern count = 0 Options: anchored No first char /cat|dog|elephant/ Identifying subpattern count = 0 No options No first 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 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 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 Starting character set: a b c d /(a|[^\dZ])/S Identifying subpattern count = 1 No options No first 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 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' 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' 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' 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' 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 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 abcdef 0: abc abcdef\B 0: def /.*((abc)$|(def))/ Identifying subpattern count = 3 Options: anchored No first 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\/P Failed: POSIX code 9: bad escape sequence at offset 4 /(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 co-processors, and for 0: -pr /<.*>/ Identifying subpattern count = 0 No options First char = '<' abcghinop 0: ghi /<.*?>/ Identifying subpattern count = 0 No options First char = '<' abcghinop 0: /<.*>/U Identifying subpattern count = 0 Options: ungreedy First char = '<' abcghinop 0: /<.*>(?U)/ Identifying subpattern count = 0 Options: ungreedy First char = '<' abcghinop 0: /<.*?>/U Identifying subpattern count = 0 Options: ungreedy First char = '<' abcghinop 0: ghi /={3,}/U Identifying subpattern count = 0 Options: ungreedy First char = '=' abc========def 0: === /(?U)={3,}?/ Identifying subpattern count = 0 Options: ungreedy First char = '=' abc========def 0: ======== /(?^abc)/m Identifying subpattern count = 0 Options: multiline First char at start or follows \n 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 two are in testinput2 because they have variable length branches/ Identifying subpattern count = 0 No options First char = 'T' /(?<=bullock|donkey)-cart/ Identifying subpattern count = 0 No options First char = '-' 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 No first char /(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/ Identifying subpattern count = 0 No options First 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 /(?