1131554Stjr# regular expression test set 2131554Stjr# Lines are at least three fields, separated by one or more tabs. "" stands 3131554Stjr# for an empty field. First field is an RE. Second field is flags. If 4131554Stjr# C flag given, regcomp() is expected to fail, and the third field is the 5131554Stjr# error name (minus the leading REG_). 6131554Stjr# 7131554Stjr# Otherwise it is expected to succeed, and the third field is the string to 8131554Stjr# try matching it against. If there is no fourth field, the match is 9131554Stjr# expected to fail. If there is a fourth field, it is the substring that 10131554Stjr# the RE is expected to match. If there is a fifth field, it is a comma- 11131554Stjr# separated list of what the subexpressions should match, with - indicating 12131554Stjr# no match for that one. In both the fourth and fifth fields, a (sub)field 13131554Stjr# starting with @ indicates that the (sub)expression is expected to match 14131554Stjr# a null string followed by the stuff after the @; this provides a way to 15131554Stjr# test where null strings match. The character `N' in REs and strings 16131554Stjr# is newline, `S' is space, `T' is tab, `Z' is NUL. 17131554Stjr# 18131554Stjr# The full list of flags: 19131554Stjr# - placeholder, does nothing 20131554Stjr# b RE is a BRE, not an ERE 21131554Stjr# & try it as both an ERE and a BRE 22131554Stjr# C regcomp() error expected, third field is error name 23131554Stjr# i REG_ICASE 24131554Stjr# m ("mundane") REG_NOSPEC 25131554Stjr# s REG_NOSUB (not really testable) 26131554Stjr# n REG_NEWLINE 27131554Stjr# ^ REG_NOTBOL 28131554Stjr# $ REG_NOTEOL 29131554Stjr# # REG_STARTEND (see below) 30131554Stjr# p REG_PEND 31131554Stjr# 32131554Stjr# For REG_STARTEND, the start/end offsets are those of the substring 33131554Stjr# enclosed in (). 34131554Stjr 35131554Stjr# basics 36131554Stjra & a a 37131554Stjrabc & abc abc 38131554Stjrabc|de - abc abc 39131554Stjra|b|c - abc a 40131554Stjr 41131554Stjr# parentheses and perversions thereof 42131554Stjra(b)c - abc abc 43131554Stjra\(b\)c b abc abc 44131554Stjra( C EPAREN 45131554Stjra( b a( a( 46131554Stjra\( - a( a( 47131554Stjra\( bC EPAREN 48131554Stjra\(b bC EPAREN 49131554Stjra(b C EPAREN 50131554Stjra(b b a(b a(b 51131554Stjr# gag me with a right parenthesis -- 1003.2 goofed here (my fault, partly) 52131554Stjra) - a) a) 53131554Stjr) - ) ) 54131554Stjr# end gagging (in a just world, those *should* give EPAREN) 55131554Stjra) b a) a) 56131554Stjra\) bC EPAREN 57131554Stjr\) bC EPAREN 58131554Stjra()b - ab ab 59131554Stjra\(\)b b ab ab 60131554Stjr 61131554Stjr# anchoring and REG_NEWLINE 62131554Stjr^abc$ & abc abc 63131554Stjra^b - a^b 64131554Stjra^b b a^b a^b 65131554Stjra$b - a$b 66131554Stjra$b b a$b a$b 67131554Stjr^ & abc @abc 68131554Stjr$ & abc @ 69131554Stjr^$ & "" @ 70131554Stjr$^ - "" @ 71131554Stjr\($\)\(^\) b "" @ 72131554Stjr# stop retching, those are legitimate (although disgusting) 73131554Stjr^^ - "" @ 74131554Stjr$$ - "" @ 75131554Stjr##b$ & abNc 76131554Stjr##b$ &n abNc b 77131554Stjr##^b$ & aNbNc 78131554Stjr##^b$ &n aNbNc b 79131554Stjr##^$ &n aNNb @Nb 80131554Stjr^$ n abc 81131554Stjr##^$ n abcN @ 82131554Stjr##$^ n aNNb @Nb 83131554Stjr##\($\)\(^\) bn aNNb @Nb 84131554Stjr##^^ n^ aNNb @Nb 85131554Stjr##$$ n aNNb @NN 86131554Stjr^a ^ a 87131554Stjra$ $ a 88131554Stjr##^a ^n aNb 89131554Stjr##^b ^n aNb b 90131554Stjr##a$ $n bNa 91131554Stjr##b$ $n bNa b 92131554Stjra*(^b$)c* - b b 93131554Stjra*\(^b$\)c* b b b 94131554Stjr 95131554Stjr# certain syntax errors and non-errors 96131554Stjr| C EMPTY 97131554Stjr| b | | 98131554Stjr* C BADRPT 99131554Stjr* b * * 100131554Stjr+ C BADRPT 101131554Stjr? C BADRPT 102131554Stjr"" &C EMPTY 103131554Stjr() - abc @abc 104131554Stjr\(\) b abc @abc 105131554Stjra||b C EMPTY 106131554Stjr|ab C EMPTY 107131554Stjrab| C EMPTY 108131554Stjr(|a)b C EMPTY 109131554Stjr(a|)b C EMPTY 110131554Stjr(*a) C BADRPT 111131554Stjr(+a) C BADRPT 112131554Stjr(?a) C BADRPT 113131554Stjr({1}a) C BADRPT 114131554Stjr\(\{1\}a\) bC BADRPT 115131554Stjr(a|*b) C BADRPT 116131554Stjr(a|+b) C BADRPT 117131554Stjr(a|?b) C BADRPT 118131554Stjr(a|{1}b) C BADRPT 119131554Stjr^* C BADRPT 120131554Stjr^* b * * 121131554Stjr^+ C BADRPT 122131554Stjr^? C BADRPT 123131554Stjr^{1} C BADRPT 124131554Stjr^\{1\} bC BADRPT 125131554Stjr 126131554Stjr# metacharacters, backslashes 127131554Stjra.c & abc abc 128131554Stjra[bc]d & abd abd 129131554Stjra\*c & a*c a*c 130131554Stjra\\b & a\b a\b 131131554Stjra\\\*b & a\*b a\*b 132131554Stjra\bc & abc abc 133131554Stjra\ &C EESCAPE 134131554Stjra\\bc & a\bc a\bc 135131554Stjr\{ bC BADRPT 136131554Stjra\[b & a[b a[b 137131554Stjra[b &C EBRACK 138131554Stjr# trailing $ is a peculiar special case for the BRE code 139131554Stjra$ & a a 140131554Stjra$ & a$ 141131554Stjra\$ & a 142131554Stjra\$ & a$ a$ 143131554Stjra\\$ & a 144131554Stjra\\$ & a$ 145131554Stjra\\$ & a\$ 146131554Stjra\\$ & a\ a\ 147131554Stjr 148131554Stjr# back references, ugh 149131554Stjr##a\(b\)\2c bC ESUBREG 150131554Stjr##a\(b\1\)c bC ESUBREG 151131554Stjra\(b*\)c\1d b abbcbbd abbcbbd bb 152131554Stjra\(b*\)c\1d b abbcbd 153131554Stjra\(b*\)c\1d b abbcbbbd 154131554Stjr^\(.\)\1 b abc 155131554Stjra\([bc]\)\1d b abcdabbd abbd b 156131554Stjra\(\([bc]\)\2\)*d b abbccd abbccd 157131554Stjra\(\([bc]\)\2\)*d b abbcbd 158131554Stjr# actually, this next one probably ought to fail, but the spec is unclear 159131554Stjra\(\(b\)*\2\)*d b abbbd abbbd 160131554Stjr# here is a case that no NFA implementation does right 161131554Stjr\(ab*\)[ab]*\1 b ababaaa ababaaa a 162131554Stjr# check out normal matching in the presence of back refs 163131554Stjr\(a\)\1bcd b aabcd aabcd 164131554Stjr\(a\)\1bc*d b aabcd aabcd 165131554Stjr\(a\)\1bc*d b aabd aabd 166131554Stjr\(a\)\1bc*d b aabcccd aabcccd 167131554Stjr\(a\)\1bc*[ce]d b aabcccd aabcccd 168131554Stjr^\(a\)\1b\(c\)*cd$ b aabcccd aabcccd 169131554Stjr 170131554Stjr# ordinary repetitions 171131554Stjrab*c & abc abc 172131554Stjrab+c - abc abc 173131554Stjrab?c - abc abc 174131554Stjra\(*\)b b a*b a*b 175131554Stjra\(**\)b b ab ab 176131554Stjra\(***\)b bC BADRPT 177131554Stjr*a b *a *a 178131554Stjr**a b a a 179131554Stjr***a bC BADRPT 180131554Stjr 181131554Stjr# the dreaded bounded repetitions 182131554Stjr{ & { { 183131554Stjr{abc & {abc {abc 184131554Stjr{1 C BADRPT 185131554Stjr{1} C BADRPT 186131554Stjra{b & a{b a{b 187131554Stjra{1}b - ab ab 188131554Stjra\{1\}b b ab ab 189131554Stjra{1,}b - ab ab 190131554Stjra\{1,\}b b ab ab 191131554Stjra{1,2}b - aab aab 192131554Stjra\{1,2\}b b aab aab 193131554Stjra{1 C EBRACE 194131554Stjra\{1 bC EBRACE 195131554Stjra{1a C EBRACE 196131554Stjra\{1a bC EBRACE 197131554Stjra{1a} C BADBR 198131554Stjra\{1a\} bC BADBR 199131554Stjra{,2} - a{,2} a{,2} 200131554Stjra\{,2\} bC BADBR 201131554Stjra{,} - a{,} a{,} 202131554Stjra\{,\} bC BADBR 203131554Stjra{1,x} C BADBR 204131554Stjra\{1,x\} bC BADBR 205131554Stjra{1,x C EBRACE 206131554Stjra\{1,x bC EBRACE 207131554Stjra{300} C BADBR 208131554Stjra\{300\} bC BADBR 209131554Stjra{1,0} C BADBR 210131554Stjra\{1,0\} bC BADBR 211131554Stjrab{0,0}c - abcac ac 212131554Stjrab\{0,0\}c b abcac ac 213131554Stjrab{0,1}c - abcac abc 214131554Stjrab\{0,1\}c b abcac abc 215131554Stjrab{0,3}c - abbcac abbc 216131554Stjrab\{0,3\}c b abbcac abbc 217131554Stjrab{1,1}c - acabc abc 218131554Stjrab\{1,1\}c b acabc abc 219131554Stjrab{1,3}c - acabc abc 220131554Stjrab\{1,3\}c b acabc abc 221131554Stjrab{2,2}c - abcabbc abbc 222131554Stjrab\{2,2\}c b abcabbc abbc 223131554Stjrab{2,4}c - abcabbc abbc 224131554Stjrab\{2,4\}c b abcabbc abbc 225131554Stjr((a{1,10}){1,10}){1,10} - a a a,a 226131554Stjr 227131554Stjr# multiple repetitions 228131554Stjra** &C BADRPT 229131554Stjra++ C BADRPT 230131554Stjra?? C BADRPT 231131554Stjra*+ C BADRPT 232131554Stjra*? C BADRPT 233131554Stjra+* C BADRPT 234131554Stjra+? C BADRPT 235131554Stjra?* C BADRPT 236131554Stjra?+ C BADRPT 237131554Stjra{1}{1} C BADRPT 238131554Stjra*{1} C BADRPT 239131554Stjra+{1} C BADRPT 240131554Stjra?{1} C BADRPT 241131554Stjra{1}* C BADRPT 242131554Stjra{1}+ C BADRPT 243131554Stjra{1}? C BADRPT 244131554Stjra*{b} - a{b} a{b} 245131554Stjra\{1\}\{1\} bC BADRPT 246131554Stjra*\{1\} bC BADRPT 247131554Stjra\{1\}* bC BADRPT 248131554Stjr 249131554Stjr# brackets, and numerous perversions thereof 250131554Stjra[b]c & abc abc 251131554Stjra[ab]c & abc abc 252131554Stjra[^ab]c & adc adc 253131554Stjra[]b]c & a]c a]c 254131554Stjra[[b]c & a[c a[c 255131554Stjra[-b]c & a-c a-c 256131554Stjra[^]b]c & adc adc 257131554Stjra[^-b]c & adc adc 258131554Stjra[b-]c & a-c a-c 259131554Stjra[b &C EBRACK 260131554Stjra[] &C EBRACK 261131554Stjra[1-3]c & a2c a2c 262131554Stjra[3-1]c &C ERANGE 263131554Stjra[1-3-5]c &C ERANGE 264131554Stjra[[.-.]--]c & a-c a-c 265131554Stjra[1- &C ERANGE 266131554Stjra[[. &C EBRACK 267131554Stjra[[.x &C EBRACK 268131554Stjra[[.x. &C EBRACK 269131554Stjra[[.x.] &C EBRACK 270131554Stjra[[.x.]] & ax ax 271131554Stjra[[.x,.]] &C ECOLLATE 272131554Stjra[[.one.]]b & a1b a1b 273131554Stjra[[.notdef.]]b &C ECOLLATE 274131554Stjra[[.].]]b & a]b a]b 275131554Stjra[[:alpha:]]c & abc abc 276131554Stjra[[:notdef:]]c &C ECTYPE 277131554Stjra[[: &C EBRACK 278131554Stjra[[:alpha &C EBRACK 279131554Stjra[[:alpha:] &C EBRACK 280131554Stjra[[:alpha,:] &C ECTYPE 281131554Stjra[[:]:]]b &C ECTYPE 282131554Stjra[[:-:]]b &C ECTYPE 283131554Stjra[[:alph:]] &C ECTYPE 284131554Stjra[[:alphabet:]] &C ECTYPE 285131554Stjr##[[:alnum:]]+ - -%@a0X- a0X 286131554Stjr##[[:alpha:]]+ - -%@aX0- aX 287131554Stjr[[:blank:]]+ - aSSTb SST 288131554Stjr##[[:cntrl:]]+ - aNTb NT 289131554Stjr[[:digit:]]+ - a019b 019 290131554Stjr##[[:graph:]]+ - Sa%bS a%b 291131554Stjr[[:lower:]]+ - AabC ab 292131554Stjr##[[:print:]]+ - NaSbN aSb 293131554Stjr##[[:punct:]]+ - S%-&T %-& 294131554Stjr[[:space:]]+ - aSNTb SNT 295131554Stjr[[:upper:]]+ - aBCd BC 296131554Stjr[[:xdigit:]]+ - p0f3Cq 0f3C 297131554Stjra[[=b=]]c & abc abc 298131554Stjra[[= &C EBRACK 299131554Stjra[[=b &C EBRACK 300131554Stjra[[=b= &C EBRACK 301131554Stjra[[=b=] &C EBRACK 302131554Stjra[[=b,=]] &C ECOLLATE 303131554Stjra[[=one=]]b & a1b a1b 304131554Stjr 305131554Stjr# complexities 306131554Stjra(((b)))c - abc abc 307131554Stjra(b|(c))d - abd abd 308131554Stjra(b*|c)d - abbd abbd 309131554Stjr# just gotta have one DFA-buster, of course 310131554Stjra[ab]{20} - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab 311131554Stjr# and an inline expansion in case somebody gets tricky 312131554Stjra[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab 313131554Stjr# and in case somebody just slips in an NFA... 314131554Stjra[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 315131554Stjr# fish for anomalies as the number of states passes 32 316131554Stjr12345678901234567890123456789 - a12345678901234567890123456789b 12345678901234567890123456789 317131554Stjr123456789012345678901234567890 - a123456789012345678901234567890b 123456789012345678901234567890 318131554Stjr1234567890123456789012345678901 - a1234567890123456789012345678901b 1234567890123456789012345678901 319131554Stjr12345678901234567890123456789012 - a12345678901234567890123456789012b 12345678901234567890123456789012 320131554Stjr123456789012345678901234567890123 - a123456789012345678901234567890123b 123456789012345678901234567890123 321131554Stjr# and one really big one, beyond any plausible word width 322131554Stjr1234567890123456789012345678901234567890123456789012345678901234567890 - a1234567890123456789012345678901234567890123456789012345678901234567890b 1234567890123456789012345678901234567890123456789012345678901234567890 323131554Stjr# fish for problems as brackets go past 8 324131554Stjr[ab][cd][ef][gh][ij][kl][mn] - xacegikmoq acegikm 325131554Stjr[ab][cd][ef][gh][ij][kl][mn][op] - xacegikmoq acegikmo 326131554Stjr[ab][cd][ef][gh][ij][kl][mn][op][qr] - xacegikmoqy acegikmoq 327131554Stjr[ab][cd][ef][gh][ij][kl][mn][op][q] - xacegikmoqy acegikmoq 328131554Stjr 329131554Stjr# subtleties of matching 330131554Stjrabc & xabcy abc 331131554Stjra\(b\)?c\1d b acd 332131554StjraBc i Abc Abc 333131554Stjra[Bc]*d i abBCcd abBCcd 334131554Stjr0[[:upper:]]1 &i 0a1 0a1 335131554Stjr0[[:lower:]]1 &i 0A1 0A1 336131554Stjra[^b]c &i abc 337131554Stjra[^b]c &i aBc 338131554Stjra[^b]c &i adc adc 339131554Stjr[a]b[c] - abc abc 340131554Stjr[a]b[a] - aba aba 341131554Stjr[abc]b[abc] - abc abc 342131554Stjr[abc]b[abd] - abd abd 343131554Stjra(b?c)+d - accd accd 344131554Stjr(wee|week)(knights|night) - weeknights weeknights 345131554Stjr(we|wee|week|frob)(knights|night|day) - weeknights weeknights 346131554Stjra[bc]d - xyzaaabcaababdacd abd 347131554Stjra[ab]c - aaabc abc 348131554Stjrabc s abc abc 349131554Stjra* & b @b 350131554Stjr 351131554Stjr# Let's have some fun -- try to match a C comment. 352131554Stjr# first the obvious, which looks okay at first glance... 353131554Stjr/\*.*\*/ - /*x*/ /*x*/ 354131554Stjr# but... 355131554Stjr/\*.*\*/ - /*x*/y/*z*/ /*x*/y/*z*/ 356131554Stjr# okay, we must not match */ inside; try to do that... 357131554Stjr/\*([^*]|\*[^/])*\*/ - /*x*/ /*x*/ 358131554Stjr/\*([^*]|\*[^/])*\*/ - /*x*/y/*z*/ /*x*/ 359131554Stjr# but... 360131554Stjr/\*([^*]|\*[^/])*\*/ - /*x**/y/*z*/ /*x**/y/*z*/ 361131554Stjr# and a still fancier version, which does it right (I think)... 362131554Stjr/\*([^*]|\*+[^*/])*\*+/ - /*x*/ /*x*/ 363131554Stjr/\*([^*]|\*+[^*/])*\*+/ - /*x*/y/*z*/ /*x*/ 364131554Stjr/\*([^*]|\*+[^*/])*\*+/ - /*x**/y/*z*/ /*x**/ 365131554Stjr/\*([^*]|\*+[^*/])*\*+/ - /*x****/y/*z*/ /*x****/ 366131554Stjr/\*([^*]|\*+[^*/])*\*+/ - /*x**x*/y/*z*/ /*x**x*/ 367131554Stjr/\*([^*]|\*+[^*/])*\*+/ - /*x***x/y/*z*/ /*x***x/y/*z*/ 368131554Stjr 369131554Stjr# subexpressions 370131554Stjra(b)(c)d - abcd abcd b,c 371131554Stjra(((b)))c - abc abc b,b,b 372131554Stjra(b|(c))d - abd abd b,- 373131554Stjra(b*|c|e)d - abbd abbd bb 374131554Stjra(b*|c|e)d - acd acd c 375131554Stjra(b*|c|e)d - ad ad @d 376131554Stjra(b?)c - abc abc b 377131554Stjra(b?)c - ac ac @c 378131554Stjra(b+)c - abc abc b 379131554Stjra(b+)c - abbbc abbbc bbb 380131554Stjra(b*)c - ac ac @c 381131554Stjr(a|ab)(bc([de]+)f|cde) - abcdef abcdef a,bcdef,de 382131554Stjr# the regression tester only asks for 9 subexpressions 383131554Stjra(b)(c)(d)(e)(f)(g)(h)(i)(j)k - abcdefghijk abcdefghijk b,c,d,e,f,g,h,i,j 384131554Stjra(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l - abcdefghijkl abcdefghijkl b,c,d,e,f,g,h,i,j,k 385131554Stjra([bc]?)c - abc abc b 386131554Stjra([bc]?)c - ac ac @c 387131554Stjra([bc]+)c - abc abc b 388131554Stjra([bc]+)c - abcc abcc bc 389131554Stjra([bc]+)bc - abcbc abcbc bc 390131554Stjra(bb+|b)b - abb abb b 391131554Stjra(bbb+|bb+|b)b - abb abb b 392131554Stjra(bbb+|bb+|b)b - abbb abbb bb 393131554Stjra(bbb+|bb+|b)bb - abbb abbb b 394131554Stjr(.*).* - abcdef abcdef abcdef 395131554Stjr##(a*)* - bc @b @b 396131554Stjr 397131554Stjr# do we get the right subexpression when it is used more than once? 398131554Stjra(b|c)*d - ad ad - 399131554Stjra(b|c)*d - abcd abcd c 400131554Stjra(b|c)+d - abd abd b 401131554Stjra(b|c)+d - abcd abcd c 402131554Stjra(b|c?)+d - ad ad @d 403131554Stjra(b|c?)+d - abcd abcd @d 404131554Stjra(b|c){0,0}d - ad ad - 405131554Stjra(b|c){0,1}d - ad ad - 406131554Stjra(b|c){0,1}d - abd abd b 407131554Stjra(b|c){0,2}d - ad ad - 408131554Stjra(b|c){0,2}d - abcd abcd c 409131554Stjra(b|c){0,}d - ad ad - 410131554Stjra(b|c){0,}d - abcd abcd c 411131554Stjra(b|c){1,1}d - abd abd b 412131554Stjra(b|c){1,1}d - acd acd c 413131554Stjra(b|c){1,2}d - abd abd b 414131554Stjra(b|c){1,2}d - abcd abcd c 415131554Stjra(b|c){1,}d - abd abd b 416131554Stjra(b|c){1,}d - abcd abcd c 417131554Stjra(b|c){2,2}d - acbd acbd b 418131554Stjra(b|c){2,2}d - abcd abcd c 419131554Stjra(b|c){2,4}d - abcd abcd c 420131554Stjra(b|c){2,4}d - abcbd abcbd b 421131554Stjra(b|c){2,4}d - abcbcd abcbcd c 422131554Stjra(b|c){2,}d - abcd abcd c 423131554Stjra(b|c){2,}d - abcbd abcbd b 424131554Stjr##a(b+|((c)*))+d - abd abd @d,@d,- 425131554Stjr##a(b+|((c)*))+d - abcd abcd @d,@d,- 426131554Stjr 427131554Stjr# check out the STARTEND option 428131554Stjr[abc] &# a(b)c b 429131554Stjr[abc] &# a(d)c 430131554Stjr[abc] &# a(bc)d b 431131554Stjr[abc] &# a(dc)d c 432131554Stjr. &# a()c 433131554Stjrb.*c &# b(bc)c bc 434131554Stjrb.* &# b(bc)c bc 435131554Stjr.*c &# b(bc)c bc 436131554Stjr 437131554Stjr# plain strings, with the NOSPEC flag 438131554Stjrabc m abc abc 439131554Stjrabc m xabcy abc 440131554Stjrabc m xyz 441131554Stjra*b m aba*b a*b 442131554Stjra*b m ab 443131554Stjr"" mC EMPTY 444131554Stjr 445131554Stjr# cases involving NULs 446131554StjraZb & a a 447131554StjraZb &p a 448131554Stjr#aZb &p# (aZb) aZb 449131554StjraZ*b &p# (ab) ab 450131554Stjr#a.b &# (aZb) aZb 451131554Stjr#a.* &# (aZb)c aZb 452131554Stjr 453131554Stjr# word boundaries (ick) 454131554Stjr[[:<:]]a & a a 455131554Stjr[[:<:]]a & ba 456131554Stjr[[:<:]]a & -a a 457131554Stjra[[:>:]] & a a 458131554Stjra[[:>:]] & ab 459131554Stjra[[:>:]] & a- a 460131554Stjr[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc abc 461131554Stjr[[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc-q abc 462131554Stjr[[:<:]]a.c[[:>:]] & axc-dayc-dazce-abc axc 463131554Stjr[[:<:]]b.c[[:>:]] & a_bxc-byc_d-bzc-q bzc 464131554Stjr[[:<:]].x..[[:>:]] & y_xa_-_xb_y-_xc_-axdc _xc_ 465131554Stjr[[:<:]]a_b[[:>:]] & x_a_b 466131554Stjr 467131554Stjr# past problems, and suspected problems 468131554Stjr(A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A[7])|(A[8])|(A[9])|(A[A]) - A1 A1 469131554Stjrabcdefghijklmnop i abcdefghijklmnop abcdefghijklmnop 470131554Stjrabcdefghijklmnopqrstuv i abcdefghijklmnopqrstuv abcdefghijklmnopqrstuv 471131554Stjr(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 472131554StjrCC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a - CC11 CC11 473131554StjrChar \([a-z0-9_]*\)\[.* b Char xyz[k Char xyz[k xyz 474131554Stjra?b - ab ab 475131554Stjr-\{0,1\}[0-9]*$ b -5 -5 476