18ca5c256SDaniel C. Sobral# regular expression test set 28ca5c256SDaniel C. Sobral# $FreeBSD$ 38ca5c256SDaniel C. Sobral# Lines are at least three fields, separated by one or more tabs. "" stands 48ca5c256SDaniel C. Sobral# for an empty field. First field is an RE. Second field is flags. If 58ca5c256SDaniel C. Sobral# C flag given, regcomp() is expected to fail, and the third field is the 68ca5c256SDaniel C. Sobral# error name (minus the leading REG_). 78ca5c256SDaniel C. Sobral# 88ca5c256SDaniel C. Sobral# Otherwise it is expected to succeed, and the third field is the string to 98ca5c256SDaniel C. Sobral# try matching it against. If there is no fourth field, the match is 108ca5c256SDaniel C. Sobral# expected to fail. If there is a fourth field, it is the substring that 118ca5c256SDaniel C. Sobral# the RE is expected to match. If there is a fifth field, it is a comma- 128ca5c256SDaniel C. Sobral# separated list of what the subexpressions should match, with - indicating 138ca5c256SDaniel C. Sobral# no match for that one. In both the fourth and fifth fields, a (sub)field 148ca5c256SDaniel C. Sobral# starting with @ indicates that the (sub)expression is expected to match 158ca5c256SDaniel C. Sobral# a null string followed by the stuff after the @; this provides a way to 168ca5c256SDaniel C. Sobral# test where null strings match. The character `N' in REs and strings 178ca5c256SDaniel C. Sobral# is newline, `S' is space, `T' is tab, `Z' is NUL. 188ca5c256SDaniel C. Sobral# 198ca5c256SDaniel C. Sobral# The full list of flags: 208ca5c256SDaniel C. Sobral# - placeholder, does nothing 218ca5c256SDaniel C. Sobral# b RE is a BRE, not an ERE 228ca5c256SDaniel C. Sobral# & try it as both an ERE and a BRE 238ca5c256SDaniel C. Sobral# C regcomp() error expected, third field is error name 248ca5c256SDaniel C. Sobral# i REG_ICASE 258ca5c256SDaniel C. Sobral# m ("mundane") REG_NOSPEC 268ca5c256SDaniel C. Sobral# s REG_NOSUB (not really testable) 278ca5c256SDaniel C. Sobral# n REG_NEWLINE 288ca5c256SDaniel C. Sobral# ^ REG_NOTBOL 298ca5c256SDaniel C. Sobral# $ REG_NOTEOL 308ca5c256SDaniel C. Sobral# # REG_STARTEND (see below) 318ca5c256SDaniel C. Sobral# p REG_PEND 328ca5c256SDaniel C. Sobral# 338ca5c256SDaniel C. Sobral# For REG_STARTEND, the start/end offsets are those of the substring 348ca5c256SDaniel C. Sobral# enclosed in (). 358ca5c256SDaniel C. Sobral 368ca5c256SDaniel C. Sobral# basics 378ca5c256SDaniel C. Sobrala & a a 388ca5c256SDaniel C. Sobralabc & abc abc 398ca5c256SDaniel C. Sobralabc|de - abc abc 408ca5c256SDaniel C. Sobrala|b|c - abc a 418ca5c256SDaniel C. Sobral 428ca5c256SDaniel C. Sobral# parentheses and perversions thereof 438ca5c256SDaniel C. Sobrala(b)c - abc abc 448ca5c256SDaniel C. Sobrala\(b\)c b abc abc 458ca5c256SDaniel C. Sobrala( C EPAREN 468ca5c256SDaniel C. Sobrala( b a( a( 478ca5c256SDaniel C. Sobrala\( - a( a( 488ca5c256SDaniel C. Sobrala\( bC EPAREN 498ca5c256SDaniel C. Sobrala\(b bC EPAREN 508ca5c256SDaniel C. Sobrala(b C EPAREN 518ca5c256SDaniel C. Sobrala(b b a(b a(b 528ca5c256SDaniel C. Sobral# gag me with a right parenthesis -- 1003.2 goofed here (my fault, partly) 538ca5c256SDaniel C. Sobrala) - a) a) 548ca5c256SDaniel C. Sobral) - ) ) 558ca5c256SDaniel C. Sobral# end gagging (in a just world, those *should* give EPAREN) 568ca5c256SDaniel C. Sobrala) b a) a) 578ca5c256SDaniel C. Sobrala\) bC EPAREN 588ca5c256SDaniel C. Sobral\) bC EPAREN 598ca5c256SDaniel C. Sobrala()b - ab ab 608ca5c256SDaniel C. Sobrala\(\)b b ab ab 618ca5c256SDaniel C. Sobral 628ca5c256SDaniel C. Sobral# anchoring and REG_NEWLINE 638ca5c256SDaniel C. Sobral^abc$ & abc abc 648ca5c256SDaniel C. Sobrala^b - a^b 658ca5c256SDaniel C. Sobrala^b b a^b a^b 668ca5c256SDaniel C. Sobrala$b - a$b 678ca5c256SDaniel C. Sobrala$b b a$b a$b 688ca5c256SDaniel C. Sobral^ & abc @abc 698ca5c256SDaniel C. Sobral$ & abc @ 708ca5c256SDaniel C. Sobral^$ & "" @ 718ca5c256SDaniel C. Sobral$^ - "" @ 728ca5c256SDaniel C. Sobral\($\)\(^\) b "" @ 738ca5c256SDaniel C. Sobral# stop retching, those are legitimate (although disgusting) 748ca5c256SDaniel C. Sobral^^ - "" @ 758ca5c256SDaniel C. Sobral$$ - "" @ 768ca5c256SDaniel C. Sobralb$ & abNc 778ca5c256SDaniel C. Sobralb$ &n abNc b 788ca5c256SDaniel C. Sobral^b$ & aNbNc 798ca5c256SDaniel C. Sobral^b$ &n aNbNc b 808ca5c256SDaniel C. Sobral^$ &n aNNb @Nb 818ca5c256SDaniel C. Sobral^$ n abc 828ca5c256SDaniel C. Sobral^$ n abcN @ 838ca5c256SDaniel C. Sobral$^ n aNNb @Nb 848ca5c256SDaniel C. Sobral\($\)\(^\) bn aNNb @Nb 858ca5c256SDaniel C. Sobral^^ n^ aNNb @Nb 868ca5c256SDaniel C. Sobral$$ n aNNb @NN 878ca5c256SDaniel C. Sobral^a ^ a 888ca5c256SDaniel C. Sobrala$ $ a 898ca5c256SDaniel C. Sobral^a ^n aNb 908ca5c256SDaniel C. Sobral^b ^n aNb b 918ca5c256SDaniel C. Sobrala$ $n bNa 928ca5c256SDaniel C. Sobralb$ $n bNa b 938ca5c256SDaniel C. Sobrala*(^b$)c* - b b 948ca5c256SDaniel C. Sobrala*\(^b$\)c* b b b 958ca5c256SDaniel C. Sobral 968ca5c256SDaniel C. Sobral# certain syntax errors and non-errors 978ca5c256SDaniel C. Sobral| C EMPTY 988ca5c256SDaniel C. Sobral| b | | 998ca5c256SDaniel C. Sobral* C BADRPT 1008ca5c256SDaniel C. Sobral* b * * 1018ca5c256SDaniel C. Sobral+ C BADRPT 1028ca5c256SDaniel C. Sobral? C BADRPT 1038ca5c256SDaniel C. Sobral"" &C EMPTY 1048ca5c256SDaniel C. Sobral() - abc @abc 1058ca5c256SDaniel C. Sobral\(\) b abc @abc 1068ca5c256SDaniel C. Sobrala||b C EMPTY 1078ca5c256SDaniel C. Sobral|ab C EMPTY 1088ca5c256SDaniel C. Sobralab| C EMPTY 1098ca5c256SDaniel C. Sobral(|a)b C EMPTY 1108ca5c256SDaniel C. Sobral(a|)b C EMPTY 1118ca5c256SDaniel C. Sobral(*a) C BADRPT 1128ca5c256SDaniel C. Sobral(+a) C BADRPT 1138ca5c256SDaniel C. Sobral(?a) C BADRPT 1148ca5c256SDaniel C. Sobral({1}a) C BADRPT 1158ca5c256SDaniel C. Sobral\(\{1\}a\) bC BADRPT 1168ca5c256SDaniel C. Sobral(a|*b) C BADRPT 1178ca5c256SDaniel C. Sobral(a|+b) C BADRPT 1188ca5c256SDaniel C. Sobral(a|?b) C BADRPT 1198ca5c256SDaniel C. Sobral(a|{1}b) C BADRPT 1208ca5c256SDaniel C. Sobral^* C BADRPT 1218ca5c256SDaniel C. Sobral^* b * * 1228ca5c256SDaniel C. Sobral^+ C BADRPT 1238ca5c256SDaniel C. Sobral^? C BADRPT 1248ca5c256SDaniel C. Sobral^{1} C BADRPT 1258ca5c256SDaniel C. Sobral^\{1\} bC BADRPT 1268ca5c256SDaniel C. Sobral 1278ca5c256SDaniel C. Sobral# metacharacters, backslashes 1288ca5c256SDaniel C. Sobrala.c & abc abc 1298ca5c256SDaniel C. Sobrala[bc]d & abd abd 1308ca5c256SDaniel C. Sobrala\*c & a*c a*c 1318ca5c256SDaniel C. Sobrala\\b & a\b a\b 1328ca5c256SDaniel C. Sobrala\\\*b & a\*b a\*b 1338ca5c256SDaniel C. Sobrala\bc & abc abc 1348ca5c256SDaniel C. Sobrala\ &C EESCAPE 1358ca5c256SDaniel C. Sobrala\\bc & a\bc a\bc 1368ca5c256SDaniel C. Sobral\{ bC BADRPT 1378ca5c256SDaniel C. Sobral# trailing $ is a peculiar special case for the BRE code 1388ca5c256SDaniel C. Sobrala$ & a a 1398ca5c256SDaniel C. Sobrala$ & a$ 1408ca5c256SDaniel C. Sobrala\$ & a 1418ca5c256SDaniel C. Sobrala\$ & a$ a$ 1428ca5c256SDaniel C. Sobrala\\$ & a 1438ca5c256SDaniel C. Sobrala\\$ & a$ 1448ca5c256SDaniel C. Sobrala\\$ & a\$ 1458ca5c256SDaniel C. Sobrala\\$ & a\ a\ 1468ca5c256SDaniel C. Sobral 1478ca5c256SDaniel C. Sobral# back references, ugh 1488ca5c256SDaniel C. Sobrala\(b\)\2c bC ESUBREG 1498ca5c256SDaniel C. Sobrala\(b\1\)c bC ESUBREG 1508ca5c256SDaniel C. Sobrala\(b*\)c\1d b abbcbbd abbcbbd bb 1518ca5c256SDaniel C. Sobrala\(b*\)c\1d b abbcbd 1528ca5c256SDaniel C. Sobrala\(b*\)c\1d b abbcbbbd 1538ca5c256SDaniel C. Sobral^\(.\)\1 b abc 1548ca5c256SDaniel C. Sobrala\([bc]\)\1d b abcdabbd abbd b 1558ca5c256SDaniel C. Sobrala\(\([bc]\)\2\)*d b abbccd abbccd 1568ca5c256SDaniel C. Sobrala\(\([bc]\)\2\)*d b abbcbd 1578ca5c256SDaniel C. Sobral# actually, this next one probably ought to fail, but the spec is unclear 1588ca5c256SDaniel C. Sobrala\(\(b\)*\2\)*d b abbbd abbbd 1598ca5c256SDaniel C. Sobral# here is a case that no NFA implementation does right 1608ca5c256SDaniel C. Sobral\(ab*\)[ab]*\1 b ababaaa ababaaa a 1618ca5c256SDaniel C. Sobral# check out normal matching in the presence of back refs 1628ca5c256SDaniel C. Sobral\(a\)\1bcd b aabcd aabcd 1638ca5c256SDaniel C. Sobral\(a\)\1bc*d b aabcd aabcd 1648ca5c256SDaniel C. Sobral\(a\)\1bc*d b aabd aabd 1658ca5c256SDaniel C. Sobral\(a\)\1bc*d b aabcccd aabcccd 1668ca5c256SDaniel C. Sobral\(a\)\1bc*[ce]d b aabcccd aabcccd 1678ca5c256SDaniel C. Sobral^\(a\)\1b\(c\)*cd$ b aabcccd aabcccd 1682f1b6e8bSXin LI\(b*\)\(a*\1\)* b ab a 1692f1b6e8bSXin LI\([^_]*\)\(_*\1\)* b foo_foo_bar_bar_bar_baz foo_foo foo,_foo 1702f1b6e8bSXin LI\([^_]*\)\(_*\1\)* b bar_bar_bar_baz bar_bar_bar bar,_bar 1712f1b6e8bSXin LI\([^_]*\)\(_*\1\)* b foo_bar_baz foo foo 1722f1b6e8bSXin LI\(.*\)\1 b "" "" 1732f1b6e8bSXin LI\(.*\)\1 b a "" 1742f1b6e8bSXin LI\(.*\)\1 b aa aa 1752f1b6e8bSXin LI\(.*\)\1 b aaa aa 1762f1b6e8bSXin LI\(.*\)\1 b aaaa aaaa 1772f1b6e8bSXin LI\([^_]*\)\1 b "" "" 1782f1b6e8bSXin LI\([^_]*\)\1 b a "" 1792f1b6e8bSXin LI\([^_]*\)\1 b aa aa 1802f1b6e8bSXin LI\([^_]*\)\1 b aaa aa 1812f1b6e8bSXin LI\([^_]*\)\1 b aaaa aaaa 1822f1b6e8bSXin LIfoo\(.*\)bar\1 b foolbarl foolbarl l 1832f1b6e8bSXin LIfoo\(.*\)bar\1 b foobar foobar "" 1842f1b6e8bSXin LI\(\(.\)b\)*\1 b aba 1852f1b6e8bSXin LI\(\(.\)b\)*\1 b abba 1862f1b6e8bSXin LI\(\(.\)b\)*\1 b abbba 1872f1b6e8bSXin LI\(\(.\)b\)*\1 b abbbba bbbb bb,b 1882f1b6e8bSXin LI\(\(.\)b\)*\1 b abbbbba abbbbb bb,b 1892f1b6e8bSXin LI\(\(.\)b\)*\1 b abbbbbba abbbbb bb,b 1902f1b6e8bSXin LI\(\(.\)b\)*\1 b abbbbbbbbbbbbbba abbbbbbbbbbbbb bb,b 1912f1b6e8bSXin LI\(\(.\)b\)*\1 b abbbbbbbbbbbbbbba abbbbbbbbbbbbbbb bb,b 1928ca5c256SDaniel C. Sobral 1938ca5c256SDaniel C. Sobral# ordinary repetitions 1948ca5c256SDaniel C. Sobralab*c & abc abc 1958ca5c256SDaniel C. Sobralab+c - abc abc 1968ca5c256SDaniel C. Sobralab?c - abc abc 1978ca5c256SDaniel C. Sobrala\(*\)b b a*b a*b 1988ca5c256SDaniel C. Sobrala\(**\)b b ab ab 1998ca5c256SDaniel C. Sobrala\(***\)b bC BADRPT 2008ca5c256SDaniel C. Sobral*a b *a *a 2018ca5c256SDaniel C. Sobral**a b a a 2028ca5c256SDaniel C. Sobral***a bC BADRPT 2038ca5c256SDaniel C. Sobral 2048ca5c256SDaniel C. Sobral# the dreaded bounded repetitions 2058ca5c256SDaniel C. Sobral{ & { { 2068ca5c256SDaniel C. Sobral{abc & {abc {abc 2078ca5c256SDaniel C. Sobral{1 C BADRPT 2088ca5c256SDaniel C. Sobral{1} C BADRPT 2098ca5c256SDaniel C. Sobrala{b & a{b a{b 2108ca5c256SDaniel C. Sobrala{1}b - ab ab 2118ca5c256SDaniel C. Sobrala\{1\}b b ab ab 2128ca5c256SDaniel C. Sobrala{1,}b - ab ab 2138ca5c256SDaniel C. Sobrala\{1,\}b b ab ab 2148ca5c256SDaniel C. Sobrala{1,2}b - aab aab 2158ca5c256SDaniel C. Sobrala\{1,2\}b b aab aab 2168ca5c256SDaniel C. Sobrala{1 C EBRACE 2178ca5c256SDaniel C. Sobrala\{1 bC EBRACE 2188ca5c256SDaniel C. Sobrala{1a C EBRACE 2198ca5c256SDaniel C. Sobrala\{1a bC EBRACE 2208ca5c256SDaniel C. Sobrala{1a} C BADBR 2218ca5c256SDaniel C. Sobrala\{1a\} bC BADBR 2228ca5c256SDaniel C. Sobrala{,2} - a{,2} a{,2} 2238ca5c256SDaniel C. Sobrala\{,2\} bC BADBR 2248ca5c256SDaniel C. Sobrala{,} - a{,} a{,} 2258ca5c256SDaniel C. Sobrala\{,\} bC BADBR 2268ca5c256SDaniel C. Sobrala{1,x} C BADBR 2278ca5c256SDaniel C. Sobrala\{1,x\} bC BADBR 2288ca5c256SDaniel C. Sobrala{1,x C EBRACE 2298ca5c256SDaniel C. Sobrala\{1,x bC EBRACE 2308ca5c256SDaniel C. Sobrala{300} C BADBR 2318ca5c256SDaniel C. Sobrala\{300\} bC BADBR 2328ca5c256SDaniel C. Sobrala{1,0} C BADBR 2338ca5c256SDaniel C. Sobrala\{1,0\} bC BADBR 2348ca5c256SDaniel C. Sobralab{0,0}c - abcac ac 2358ca5c256SDaniel C. Sobralab\{0,0\}c b abcac ac 2368ca5c256SDaniel C. Sobralab{0,1}c - abcac abc 2378ca5c256SDaniel C. Sobralab\{0,1\}c b abcac abc 2388ca5c256SDaniel C. Sobralab{0,3}c - abbcac abbc 2398ca5c256SDaniel C. Sobralab\{0,3\}c b abbcac abbc 2408ca5c256SDaniel C. Sobralab{1,1}c - acabc abc 2418ca5c256SDaniel C. Sobralab\{1,1\}c b acabc abc 2428ca5c256SDaniel C. Sobralab{1,3}c - acabc abc 2438ca5c256SDaniel C. Sobralab\{1,3\}c b acabc abc 2448ca5c256SDaniel C. Sobralab{2,2}c - abcabbc abbc 2458ca5c256SDaniel C. Sobralab\{2,2\}c b abcabbc abbc 2468ca5c256SDaniel C. Sobralab{2,4}c - abcabbc abbc 2478ca5c256SDaniel C. Sobralab\{2,4\}c b abcabbc abbc 2488ca5c256SDaniel C. Sobral((a{1,10}){1,10}){1,10} - a a a,a 249beea813eSDaniel C. Sobral((a{1,10}){1,10}){1,10}bb - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabb 2508ca5c256SDaniel C. Sobral 2518ca5c256SDaniel C. Sobral# multiple repetitions 2528ca5c256SDaniel C. Sobrala** &C BADRPT 2538ca5c256SDaniel C. Sobrala++ C BADRPT 2548ca5c256SDaniel C. Sobrala?? C BADRPT 2558ca5c256SDaniel C. Sobrala*+ C BADRPT 2568ca5c256SDaniel C. Sobrala*? C BADRPT 2578ca5c256SDaniel C. Sobrala+* C BADRPT 2588ca5c256SDaniel C. Sobrala+? C BADRPT 2598ca5c256SDaniel C. Sobrala?* C BADRPT 2608ca5c256SDaniel C. Sobrala?+ C BADRPT 2618ca5c256SDaniel C. Sobrala{1}{1} C BADRPT 2628ca5c256SDaniel C. Sobrala*{1} C BADRPT 2638ca5c256SDaniel C. Sobrala+{1} C BADRPT 2648ca5c256SDaniel C. Sobrala?{1} C BADRPT 2658ca5c256SDaniel C. Sobrala{1}* C BADRPT 2668ca5c256SDaniel C. Sobrala{1}+ C BADRPT 2678ca5c256SDaniel C. Sobrala{1}? C BADRPT 2688ca5c256SDaniel C. Sobrala*{b} - a{b} a{b} 2698ca5c256SDaniel C. Sobrala\{1\}\{1\} bC BADRPT 2708ca5c256SDaniel C. Sobrala*\{1\} bC BADRPT 2718ca5c256SDaniel C. Sobrala\{1\}* bC BADRPT 2728ca5c256SDaniel C. Sobral 2738ca5c256SDaniel C. Sobral# brackets, and numerous perversions thereof 2748ca5c256SDaniel C. Sobrala[b]c & abc abc 2758ca5c256SDaniel C. Sobrala[ab]c & abc abc 2768ca5c256SDaniel C. Sobrala[^ab]c & adc adc 2778ca5c256SDaniel C. Sobrala[]b]c & a]c a]c 2788ca5c256SDaniel C. Sobrala[[b]c & a[c a[c 2798ca5c256SDaniel C. Sobrala[-b]c & a-c a-c 2808ca5c256SDaniel C. Sobrala[^]b]c & adc adc 2818ca5c256SDaniel C. Sobrala[^-b]c & adc adc 2828ca5c256SDaniel C. Sobrala[b-]c & a-c a-c 2838ca5c256SDaniel C. Sobrala[b &C EBRACK 2848ca5c256SDaniel C. Sobrala[] &C EBRACK 2858ca5c256SDaniel C. Sobrala[1-3]c & a2c a2c 2868ca5c256SDaniel C. Sobrala[3-1]c &C ERANGE 2878ca5c256SDaniel C. Sobrala[1-3-5]c &C ERANGE 2888ca5c256SDaniel C. Sobrala[[.-.]--]c & a-c a-c 2898ca5c256SDaniel C. Sobrala[1- &C ERANGE 2908ca5c256SDaniel C. Sobrala[[. &C EBRACK 2918ca5c256SDaniel C. Sobrala[[.x &C EBRACK 2928ca5c256SDaniel C. Sobrala[[.x. &C EBRACK 2938ca5c256SDaniel C. Sobrala[[.x.] &C EBRACK 2948ca5c256SDaniel C. Sobrala[[.x.]] & ax ax 2958ca5c256SDaniel C. Sobrala[[.x,.]] &C ECOLLATE 2968ca5c256SDaniel C. Sobrala[[.one.]]b & a1b a1b 2978ca5c256SDaniel C. Sobrala[[.notdef.]]b &C ECOLLATE 2988ca5c256SDaniel C. Sobrala[[.].]]b & a]b a]b 2998ca5c256SDaniel C. Sobrala[[:alpha:]]c & abc abc 3008ca5c256SDaniel C. Sobrala[[:notdef:]]c &C ECTYPE 3018ca5c256SDaniel C. Sobrala[[: &C EBRACK 3028ca5c256SDaniel C. Sobrala[[:alpha &C EBRACK 3038ca5c256SDaniel C. Sobrala[[:alpha:] &C EBRACK 3048ca5c256SDaniel C. Sobrala[[:alpha,:] &C ECTYPE 3058ca5c256SDaniel C. Sobrala[[:]:]]b &C ECTYPE 3068ca5c256SDaniel C. Sobrala[[:-:]]b &C ECTYPE 3078ca5c256SDaniel C. Sobrala[[:alph:]] &C ECTYPE 3088ca5c256SDaniel C. Sobrala[[:alphabet:]] &C ECTYPE 3098ca5c256SDaniel C. Sobral[[:alnum:]]+ - -%@a0X- a0X 3108ca5c256SDaniel C. Sobral[[:alpha:]]+ - -%@aX0- aX 3118ca5c256SDaniel C. Sobral[[:blank:]]+ - aSSTb SST 3128ca5c256SDaniel C. Sobral[[:cntrl:]]+ - aNTb NT 3138ca5c256SDaniel C. Sobral[[:digit:]]+ - a019b 019 3148ca5c256SDaniel C. Sobral[[:graph:]]+ - Sa%bS a%b 3158ca5c256SDaniel C. Sobral[[:lower:]]+ - AabC ab 3168ca5c256SDaniel C. Sobral[[:print:]]+ - NaSbN aSb 3178ca5c256SDaniel C. Sobral[[:punct:]]+ - S%-&T %-& 3188ca5c256SDaniel C. Sobral[[:space:]]+ - aSNTb SNT 3198ca5c256SDaniel C. Sobral[[:upper:]]+ - aBCd BC 3208ca5c256SDaniel C. Sobral[[:xdigit:]]+ - p0f3Cq 0f3C 3218ca5c256SDaniel C. Sobrala[[=b=]]c & abc abc 3228ca5c256SDaniel C. Sobrala[[= &C EBRACK 3238ca5c256SDaniel C. Sobrala[[=b &C EBRACK 3248ca5c256SDaniel C. Sobrala[[=b= &C EBRACK 3258ca5c256SDaniel C. Sobrala[[=b=] &C EBRACK 3268ca5c256SDaniel C. Sobrala[[=b,=]] &C ECOLLATE 3278ca5c256SDaniel C. Sobrala[[=one=]]b & a1b a1b 3288ca5c256SDaniel C. Sobral 3298ca5c256SDaniel C. Sobral# complexities 3308ca5c256SDaniel C. Sobrala(((b)))c - abc abc 3318ca5c256SDaniel C. Sobrala(b|(c))d - abd abd 3328ca5c256SDaniel C. Sobrala(b*|c)d - abbd abbd 3338ca5c256SDaniel C. Sobral# just gotta have one DFA-buster, of course 3348ca5c256SDaniel C. Sobrala[ab]{20} - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab 3358ca5c256SDaniel C. Sobral# and an inline expansion in case somebody gets tricky 3368ca5c256SDaniel C. Sobrala[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab 3378ca5c256SDaniel C. Sobral# and in case somebody just slips in an NFA... 3388ca5c256SDaniel C. Sobrala[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night) - aaaaabaaaabaaaabaaaabweeknights aaaaabaaaabaaaabaaaabweeknights 3398ca5c256SDaniel C. Sobral# fish for anomalies as the number of states passes 32 3408ca5c256SDaniel C. Sobral12345678901234567890123456789 - a12345678901234567890123456789b 12345678901234567890123456789 3418ca5c256SDaniel C. Sobral123456789012345678901234567890 - a123456789012345678901234567890b 123456789012345678901234567890 3428ca5c256SDaniel C. Sobral1234567890123456789012345678901 - a1234567890123456789012345678901b 1234567890123456789012345678901 3438ca5c256SDaniel C. Sobral12345678901234567890123456789012 - a12345678901234567890123456789012b 12345678901234567890123456789012 3448ca5c256SDaniel C. Sobral123456789012345678901234567890123 - a123456789012345678901234567890123b 123456789012345678901234567890123 3458ca5c256SDaniel C. Sobral# and one really big one, beyond any plausible word width 3468ca5c256SDaniel C. Sobral1234567890123456789012345678901234567890123456789012345678901234567890 - a1234567890123456789012345678901234567890123456789012345678901234567890b 1234567890123456789012345678901234567890123456789012345678901234567890 3478ca5c256SDaniel C. Sobral# fish for problems as brackets go past 8 3488ca5c256SDaniel C. Sobral[ab][cd][ef][gh][ij][kl][mn] - xacegikmoq acegikm 3498ca5c256SDaniel C. Sobral[ab][cd][ef][gh][ij][kl][mn][op] - xacegikmoq acegikmo 3508ca5c256SDaniel C. Sobral[ab][cd][ef][gh][ij][kl][mn][op][qr] - xacegikmoqy acegikmoq 3518ca5c256SDaniel C. Sobral[ab][cd][ef][gh][ij][kl][mn][op][q] - xacegikmoqy acegikmoq 3528ca5c256SDaniel C. Sobral 3538ca5c256SDaniel C. Sobral# subtleties of matching 3548ca5c256SDaniel C. Sobralabc & xabcy abc 3558ca5c256SDaniel C. Sobrala\(b\)?c\1d b acd 3568ca5c256SDaniel C. SobralaBc i Abc Abc 3578ca5c256SDaniel C. Sobrala[Bc]*d i abBCcd abBCcd 3588ca5c256SDaniel C. Sobral0[[:upper:]]1 &i 0a1 0a1 3598ca5c256SDaniel C. Sobral0[[:lower:]]1 &i 0A1 0A1 3608ca5c256SDaniel C. Sobrala[^b]c &i abc 3618ca5c256SDaniel C. Sobrala[^b]c &i aBc 3628ca5c256SDaniel C. Sobrala[^b]c &i adc adc 3638ca5c256SDaniel C. Sobral[a]b[c] - abc abc 3648ca5c256SDaniel C. Sobral[a]b[a] - aba aba 3658ca5c256SDaniel C. Sobral[abc]b[abc] - abc abc 3668ca5c256SDaniel C. Sobral[abc]b[abd] - abd abd 3678ca5c256SDaniel C. Sobrala(b?c)+d - accd accd 3688ca5c256SDaniel C. Sobral(wee|week)(knights|night) - weeknights weeknights 3698ca5c256SDaniel C. Sobral(we|wee|week|frob)(knights|night|day) - weeknights weeknights 3708ca5c256SDaniel C. Sobrala[bc]d - xyzaaabcaababdacd abd 3718ca5c256SDaniel C. Sobrala[ab]c - aaabc abc 3728ca5c256SDaniel C. Sobralabc s abc abc 3738ca5c256SDaniel C. Sobral 3748ca5c256SDaniel C. Sobral# subexpressions 3758ca5c256SDaniel C. Sobrala(b)(c)d - abcd abcd b,c 3768ca5c256SDaniel C. Sobrala(((b)))c - abc abc b,b,b 3778ca5c256SDaniel C. Sobrala(b|(c))d - abd abd b,- 3788ca5c256SDaniel C. Sobrala(b*|c|e)d - abbd abbd bb 3798ca5c256SDaniel C. Sobrala(b*|c|e)d - acd acd c 3808ca5c256SDaniel C. Sobrala(b*|c|e)d - ad ad @d 3818ca5c256SDaniel C. Sobrala(b?)c - abc abc b 3828ca5c256SDaniel C. Sobrala(b?)c - ac ac @c 3838ca5c256SDaniel C. Sobrala(b+)c - abc abc b 3848ca5c256SDaniel C. Sobrala(b+)c - abbbc abbbc bbb 3858ca5c256SDaniel C. Sobrala(b*)c - ac ac @c 3868ca5c256SDaniel C. Sobral(a|ab)(bc([de]+)f|cde) - abcdef abcdef a,bcdef,de 3878ca5c256SDaniel C. Sobral# the regression tester only asks for 9 subexpressions 3888ca5c256SDaniel C. Sobrala(b)(c)(d)(e)(f)(g)(h)(i)(j)k - abcdefghijk abcdefghijk b,c,d,e,f,g,h,i,j 3898ca5c256SDaniel C. Sobrala(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l - abcdefghijkl abcdefghijkl b,c,d,e,f,g,h,i,j,k 3908ca5c256SDaniel C. Sobrala([bc]?)c - abc abc b 3918ca5c256SDaniel C. Sobrala([bc]?)c - ac ac @c 3928ca5c256SDaniel C. Sobrala([bc]+)c - abc abc b 3938ca5c256SDaniel C. Sobrala([bc]+)c - abcc abcc bc 3948ca5c256SDaniel C. Sobrala([bc]+)bc - abcbc abcbc bc 3958ca5c256SDaniel C. Sobrala(bb+|b)b - abb abb b 3968ca5c256SDaniel C. Sobrala(bbb+|bb+|b)b - abb abb b 3978ca5c256SDaniel C. Sobrala(bbb+|bb+|b)b - abbb abbb bb 3988ca5c256SDaniel C. Sobrala(bbb+|bb+|b)bb - abbb abbb b 3998ca5c256SDaniel C. Sobral(.*).* - abcdef abcdef abcdef 4008ca5c256SDaniel C. Sobral(a*)* - bc @b @b 4018ca5c256SDaniel C. Sobral 4028ca5c256SDaniel C. Sobral# do we get the right subexpression when it is used more than once? 4038ca5c256SDaniel C. Sobrala(b|c)*d - ad ad - 4048ca5c256SDaniel C. Sobrala(b|c)*d - abcd abcd c 4058ca5c256SDaniel C. Sobrala(b|c)+d - abd abd b 4068ca5c256SDaniel C. Sobrala(b|c)+d - abcd abcd c 4078ca5c256SDaniel C. Sobrala(b|c?)+d - ad ad @d 4088ca5c256SDaniel C. Sobrala(b|c?)+d - abcd abcd @d 4098ca5c256SDaniel C. Sobrala(b|c){0,0}d - ad ad - 4108ca5c256SDaniel C. Sobrala(b|c){0,1}d - ad ad - 4118ca5c256SDaniel C. Sobrala(b|c){0,1}d - abd abd b 4128ca5c256SDaniel C. Sobrala(b|c){0,2}d - ad ad - 4138ca5c256SDaniel C. Sobrala(b|c){0,2}d - abcd abcd c 4148ca5c256SDaniel C. Sobrala(b|c){0,}d - ad ad - 4158ca5c256SDaniel C. Sobrala(b|c){0,}d - abcd abcd c 4168ca5c256SDaniel C. Sobrala(b|c){1,1}d - abd abd b 4178ca5c256SDaniel C. Sobrala(b|c){1,1}d - acd acd c 4188ca5c256SDaniel C. Sobrala(b|c){1,2}d - abd abd b 4198ca5c256SDaniel C. Sobrala(b|c){1,2}d - abcd abcd c 4208ca5c256SDaniel C. Sobrala(b|c){1,}d - abd abd b 4218ca5c256SDaniel C. Sobrala(b|c){1,}d - abcd abcd c 4228ca5c256SDaniel C. Sobrala(b|c){2,2}d - acbd acbd b 4238ca5c256SDaniel C. Sobrala(b|c){2,2}d - abcd abcd c 4248ca5c256SDaniel C. Sobrala(b|c){2,4}d - abcd abcd c 4258ca5c256SDaniel C. Sobrala(b|c){2,4}d - abcbd abcbd b 4268ca5c256SDaniel C. Sobrala(b|c){2,4}d - abcbcd abcbcd c 4278ca5c256SDaniel C. Sobrala(b|c){2,}d - abcd abcd c 4288ca5c256SDaniel C. Sobrala(b|c){2,}d - abcbd abcbd b 4298ca5c256SDaniel C. Sobrala(b+|((c)*))+d - abd abd @d,@d,- 4308ca5c256SDaniel C. Sobrala(b+|((c)*))+d - abcd abcd @d,@d,- 4318ca5c256SDaniel C. Sobral 4328ca5c256SDaniel C. Sobral# check out the STARTEND option 4338ca5c256SDaniel C. Sobral[abc] &# a(b)c b 4348ca5c256SDaniel C. Sobral[abc] &# a(d)c 4358ca5c256SDaniel C. Sobral[abc] &# a(bc)d b 4368ca5c256SDaniel C. Sobral[abc] &# a(dc)d c 4378ca5c256SDaniel C. Sobral. &# a()c 4388ca5c256SDaniel C. Sobralb.*c &# b(bc)c bc 4398ca5c256SDaniel C. Sobralb.* &# b(bc)c bc 4408ca5c256SDaniel C. Sobral.*c &# b(bc)c bc 4418ca5c256SDaniel C. Sobral 4428ca5c256SDaniel C. Sobral# plain strings, with the NOSPEC flag 4438ca5c256SDaniel C. Sobralabc m abc abc 4448ca5c256SDaniel C. Sobralabc m xabcy abc 4458ca5c256SDaniel C. Sobralabc m xyz 4468ca5c256SDaniel C. Sobrala*b m aba*b a*b 4478ca5c256SDaniel C. Sobrala*b m ab 4488ca5c256SDaniel C. Sobral"" mC EMPTY 4498ca5c256SDaniel C. Sobral 4508ca5c256SDaniel C. Sobral# cases involving NULs 4518ca5c256SDaniel C. SobralaZb & a a 4528ca5c256SDaniel C. SobralaZb &p a 4538ca5c256SDaniel C. SobralaZb &p# (aZb) aZb 4548ca5c256SDaniel C. SobralaZ*b &p# (ab) ab 4558ca5c256SDaniel C. Sobrala.b &# (aZb) aZb 4568ca5c256SDaniel C. Sobrala.* &# (aZb)c aZb 4578ca5c256SDaniel C. Sobral 4588ca5c256SDaniel C. Sobral# word boundaries (ick) 4598ca5c256SDaniel C. Sobral[[:<:]]a & a a 4608ca5c256SDaniel C. Sobral[[:<:]]a & ba 4618ca5c256SDaniel C. Sobral[[:<:]]a & -a a 4628ca5c256SDaniel C. Sobrala[[:>:]] & a a 4638ca5c256SDaniel C. Sobrala[[:>:]] & ab 4648ca5c256SDaniel C. Sobrala[[:>:]] & a- a 4658ca5c256SDaniel C. Sobral[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc abc 4668ca5c256SDaniel C. Sobral[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc-q abc 4678ca5c256SDaniel C. Sobral[[:<:]]a.c[[:>:]] & axc-dayc-dazce-abc axc 4688ca5c256SDaniel C. Sobral 4698ca5c256SDaniel C. Sobral# past problems 4708ca5c256SDaniel C. Sobral(A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A[7])|(A[8])|(A[9])|(A[A]) - A1 A1 4718ca5c256SDaniel C. Sobralabcdefghijklmnop i abcdefghijklmnop abcdefghijklmnop 4728ca5c256SDaniel C. Sobralabcdefghijklmnopqrstuv i abcdefghijklmnopqrstuv abcdefghijklmnopqrstuv 4738ca5c256SDaniel C. Sobral(ALAK)|(ALT[AB])|(CC[123]1)|(CM[123]1)|(GAMC)|(LC[23][EO ])|(SEM[1234])|(SL[ES][12])|(SLWW)|(SLF )|(SLDT)|(VWH[12])|(WH[34][EW])|(WP1[ESN]) - CC11 CC11 4748ca5c256SDaniel C. SobralCC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a - CC11 CC11 475