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