1# Future self: the delimiter is an ASCII vertical bar, which is also a
2# REGEX special character, but hadn't already been used.  Nearly every
3# other plain ASCII character had been used by a test.  Characters
4# outside the plain ASCII range have a risk of being mangled by modern
5# editors.  So, avoid using | in a test, or if needed, select a new
6# delimeter.
7# 2.8.2  Regular Expression General Requirement
82|4|bb*|abbbc|
92|2|bb*|ababbbc|
107|9|A#*::|A:A#:qA::qA#::qA##::q|
111|5|A#*::|A##::A#::qA::qA#:q|
12# 2.8.3.1.2  BRE Special Characters
13# GA108
142|2|\.|a.c|
152|2|\[|a[c|
162|2|\\|a\c|
172|2|\*|a*c|
182|2|\^|a^c|
192|2|\$|a$c|
207|11|X\*Y\*8|Y*8X*8X*Y*8|
21# GA109
222|2|[.]|a.c|
232|2|[[]|a[c|
24-1|-1|[[]|ac|
252|2|[\]|a\c|
261|1|[\a]|abc|
272|2|[\.]|a\.c|
282|2|[\.]|a.\c|
292|2|[*]|a*c|
302|2|[$]|a$c|
312|2|[X*Y8]|7*8YX|
32# GA110
332|2|*|a*c|
343|4|*a|*b*a*c|
351|5|**9=|***9=9|
36# GA111
371|1|^*|*bc|
38-1|-1|^*|a*c|
39-1|-1|^*|^*ab|
401|5|^**9=|***9=|
41-1|-1|^*5<*9|5<9*5<*9|
42# GA112
432|3|\(*b\)|a*b|
44-1|-1|\(*b\)|ac|
451|6|A\(**9\)=|A***9=79|
46# GA113(1)
471|3|\(^*ab\)|*ab|
48-1|-1|\(^*ab\)|^*ab|
49-1|-1|\(^*b\)|a*b|
50-1|-1|\(^*b\)|^*b|
51### GA113(2)			GNU regex implements GA113(1)
52##-1|-1|\(^*ab\)|*ab|
53##-1|-1|\(^*ab\)|^*ab|
54##1|1|\(^*b\)|b|
55##1|3|\(^*b\)|^^b|
56# GA114
571|3|a^b|a^b|
581|3|a\^b|a^b|
591|1|^^|^bc|
602|2|\^|a^c|
611|1|[c^b]|^abc|
621|1|[\^ab]|^ab|
632|2|[\^ab]|c\d|
64-1|-1|[^^]|^|
651|3|\(a^b\)|a^b|
661|3|\(a\^b\)|a^b|
672|2|\(\^\)|a^b|
68# GA115
693|3|$$|ab$|
70-1|-1|$$|$ab|
712|3|$c|a$c|
722|2|[$]|a$c|
731|2|\$a|$a|
743|3|\$$|ab$|
752|6|A\([34]$[34]\)B|XA4$3BY|
76# 2.8.3.1.3  Periods in BREs
77# GA116
781|1|.|abc|
79-1|-1|.ab|abc|
801|3|ab.|abc|
811|3|a.b|a,b|
82-1|-1|.......|PqRs6|
831|7|.......|PqRs6T8|
84# 2.8.3.2  RE Bracket Expression
85# GA118
862|2|[abc]|xbyz|
87-1|-1|[abc]|xyz|
882|2|[abc]|xbay|
89# GA119
902|2|[^a]|abc|
914|4|[^]cd]|cd]ef|
922|2|[^abc]|axyz|
93-1|-1|[^abc]|abc|
943|3|[^[.a.]b]|abc|
953|3|[^[=a=]b]|abc|
962|2|[^-ac]|abcde-|
972|2|[^ac-]|abcde-|
983|3|[^a-b]|abcde|
993|3|[^a-bd-e]|dec|
1002|2|[^---]|-ab|
10116|16|[^a-zA-Z0-9]|pqrstVWXYZ23579#|
102# GA120(1)
1033|3|[]a]|cd]ef|
1041|1|[]-a]|a_b|
1053|3|[][.-.]-0]|ab0-]|
1061|1|[]^a-z]|string|
107# GA120(2)
1084|4|[^]cd]|cd]ef|
1090|0|[^]]*|]]]]]]]]X|
1100|0|[^]]*|]]]]]]]]|
1119|9|[^]]\{1,\}|]]]]]]]]X|
112-1|-1|[^]]\{1,\}|]]]]]]]]|
113# GA120(3)
1143|3|[c[.].]d]|ab]cd|
1152|8|[a-z]*[[.].]][A-Z]*|Abcd]DEFg|
116# GA121
1172|2|[[.a.]b]|Abc|
1181|1|[[.a.]b]|aBc|
119-1|-1|[[.a.]b]|ABc|
1203|3|[^[.a.]b]|abc|
1213|3|[][.-.]-0]|ab0-]|
1223|3|[A-[.].]c]|ab]!|
123# GA122
124-2|-2|[[.ch.]]|abc|
125-2|-2|[[.ab.][.CD.][.EF.]]|yZabCDEFQ9|
126# GA125
1272|2|[[=a=]b]|Abc|
1281|1|[[=a=]b]|aBc|
129-1|-1|[[=a=]b]|ABc|
1303|3|[^[=a=]b]|abc|
131# GA126
132#W the expected result for [[:alnum:]]* is 2-7 which is wrong
1330|0|[[:alnum:]]*| aB28gH|
1342|7|[[:alnum:]][[:alnum:]]*| aB28gH|
135#W the expected result for [^[:alnum:]]* is 2-5 which is wrong
1360|0|[^[:alnum:]]*|2 	,a|
1372|5|[^[:alnum:]][^[:alnum:]]*|2 	,a|
138#W the expected result for [[:alpha:]]* is 2-5 which is wrong
1390|0|[[:alpha:]]*| aBgH2|
1402|5|[[:alpha:]][[:alpha:]]*| aBgH2|
1411|6|[^[:alpha:]]*|2 	8,a|
1421|2|[[:blank:]]*|
142|
1431|8|[^[:blank:]]*|aB28gH, |
1441|2|[[:cntrl:]]*|	 |
1451|8|[^[:cntrl:]]*|aB2 8gh,|
146#W the expected result for [[:digit:]]* is 2-3 which is wrong
1470|0|[[:digit:]]*|a28|
1482|3|[[:digit:]][[:digit:]]*|a28|
1491|8|[^[:digit:]]*|aB 	gH,|
1501|7|[[:graph:]]*|aB28gH, |
1511|3|[^[:graph:]]*| 	,|
1521|2|[[:lower:]]*|agB|
1531|8|[^[:lower:]]*|B2 	8H,a|
1541|8|[[:print:]]*|aB2 8gH,	|
1551|2|[^[:print:]]*|	 |
156#W the expected result for [[:punct:]]* is 2-2 which is wrong
1570|0|[[:punct:]]*|a,2|
1582|3|[[:punct:]][[:punct:]]*|a,,2|
1591|9|[^[:punct:]]*|aB2 	8gH|
1601|3|[[:space:]]*|
160|
161#W the expected result for [^[:space:]]* is 2-9 which is wrong
1620|0|[^[:space:]]*| aB28gH,	|
1632|9|[^[:space:]][^[:space:]]*| aB28gH,	|
164#W the expected result for [[:upper:]]* is 2-3 which is wrong
1650|0|[[:upper:]]*|aBH2|
1662|3|[[:upper:]][[:upper:]]*|aBH2|
1671|8|[^[:upper:]]*|a2 	8g,B|
168#W the expected result for [[:xdigit:]]* is 2-5 which is wrong
1690|0|[[:xdigit:]]*|gaB28h|
1702|5|[[:xdigit:]][[:xdigit:]]*|gaB28h|
171#W the expected result for [^[:xdigit:]]* is 2-7 which is wrong
1722|7|[^[:xdigit:]][^[:xdigit:]]*|a 	gH,2|
173# GA127
174-2|-2|[b-a]|abc|
1751|1|[a-c]|bbccde|
1762|2|[a-b]|-bc|
1773|3|[a-z0-9]|AB0|
1783|3|[^a-b]|abcde|
1793|3|[^a-bd-e]|dec|
1801|1|[]-a]|a_b|
1812|2|[+--]|a,b|
1822|2|[--/]|a.b|
1832|2|[^---]|-ab|
1843|3|[][.-.]-0]|ab0-]|
1853|3|[A-[.].]c]|ab]!|
1862|6|bc[d-w]xy|abchxyz|
187# GA129
1881|1|[a-cd-f]|dbccde|
189-1|-1|[a-ce-f]|dBCCdE|
1902|4|b[n-zA-M]Y|absY9Z|
1912|4|b[n-zA-M]Y|abGY9Z|
192# GA130
1933|3|[-xy]|ac-|
1942|4|c[-xy]D|ac-D+|
1952|2|[--/]|a.b|
1962|4|c[--/]D|ac.D+b|
1972|2|[^-ac]|abcde-|
1981|3|a[^-ac]c|abcde-|
1993|3|[xy-]|zc-|
2002|4|c[xy-]7|zc-786|
2012|2|[^ac-]|abcde-|
2022|4|a[^ac-]c|5abcde-|
2032|2|[+--]|a,b|
2042|4|a[+--]B|Xa,By|
2052|2|[^---]|-ab|
2064|6|X[^---]Y|X-YXaYXbY|
207# 2.8.3.3  BREs Matching Multiple Characters
208# GA131
2093|4|cd|abcdeabcde|
2101|2|ag*b|abcde|
211-1|-1|[a-c][e-f]|abcdef|
2123|4|[a-c][e-f]|acbedf|
2134|8|abc*XYZ|890abXYZ#*|
2144|9|abc*XYZ|890abcXYZ#*|
2154|15|abc*XYZ|890abcccccccXYZ#*|
216-1|-1|abc*XYZ|890abc*XYZ#*|
217# GA132
2182|4|\(*bc\)|a*bc|
2191|2|\(ab\)|abcde|
2201|10|\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)|abcdefghijk|
2213|8|43\(2\(6\)*0\)AB|654320ABCD|
2223|9|43\(2\(7\)*0\)AB|6543270ABCD|
2233|12|43\(2\(7\)*0\)AB|6543277770ABCD|
224# GA133
2251|10|\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)|abcdefghijk|
226-1|-1|\(a\(b\(c\(d\(e\(f\(g\)h\(i\(k\)\)\)\)\)\)\)\)|abcdefghijk|
227# GA134
2282|4|\(bb*\)|abbbc|
2292|2|\(bb*\)|ababbbc|
2301|6|a\(.*b\)|ababbbc|
2311|2|a\(b*\)|ababbbc|
2321|20|a\(.*b\)c|axcaxbbbcsxbbbbbbbbc|
233# GA135
2341|7|\(a\(b\(c\(d\(e\)\)\)\)\)\4|abcdededede|
235#W POSIX does not really specify whether a\(b\)*c\1 matches acb.
236#W back references are supposed to expand to the last match, but what
237#W if there never was a match as in this case?
238-1|-1|a\(b\)*c\1|acb|
2391|11|\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)\9|abcdefghijjk|
240# GA136
241#W These two tests have the same problem as the test in GA135.  No match
242#W of a subexpression, why should the back reference be usable?
243#W 1 2 a\(b\)*c\1 acb
244#W 4 7 a\(b\(c\(d\(f\)*\)\)\)\4|xYzabcdePQRST
245-1|-1|a\(b\)*c\1|acb|
246-1|-1|a\(b\(c\(d\(f\)*\)\)\)\4|xYzabcdePQRST|
247# GA137
248-2|-2|\(a\(b\)\)\3|foo|
249-2|-2|\(a\(b\)\)\(a\(b\)\)\5|foo|
250# GA138
2511|2|ag*b|abcde|
2521|10|a.*b|abababvbabc|
2532|5|b*c|abbbcdeabbbbbbcde|
2542|5|bbb*c|abbbcdeabbbbbbcde|
2551|5|a\(b\)*c\1|abbcbbb|
256-1|-1|a\(b\)*c\1|abbdbd|
2570|0|\([a-c]*\)\1|abcacdef|
2581|6|\([a-c]*\)\1|abcabcabcd|
2591|2|a^*b|ab|
2601|5|a^*b|a^^^b|
261# GA139
2621|2|a\{2\}|aaaa|
2631|7|\([a-c]*\)\{0,\}|aabcaab|
2641|2|\(a\)\1\{1,2\}|aabc|
2651|3|\(a\)\1\{1,2\}|aaaabc|
266#W the expression \(\(a\)\1\)\{1,2\} is ill-formed, using \2
2671|4|\(\(a\)\2\)\{1,2\}|aaaabc|
268# GA140
2691|2|a\{2\}|aaaa|
270-1|-1|a\{2\}|abcd|
2710|0|a\{0\}|aaaa|
2721|64|a\{64\}|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
273# GA141
2741|7|\([a-c]*\)\{0,\}|aabcaab|
275#W the expected result for \([a-c]*\)\{2,\} is failure which isn't correct
2761|3|\([a-c]*\)\{2,\}|abcdefg|
2771|3|\([a-c]*\)\{1,\}|abcdefg|
278-1|-1|a\{64,\}|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
279# GA142
2801|3|a\{2,3\}|aaaa|
281-1|-1|a\{2,3\}|abcd|
2820|0|\([a-c]*\)\{0,0\}|foo|
2831|63|a\{1,63\}|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
284# 2.8.3.4  BRE Precedence
285# GA143
286#W There are numerous bugs in the original version.
2872|19|\^\[[[.].]]\\(\\1\\)\*\\{1,2\\}\$|a^[]\(\1\)*\{1,2\}$b|
2881|6|[[=*=]][[=\=]][[=]=]][[===]][[...]][[:punct:]]|*\]=.;|
2891|6|[$\(*\)^]*|$\()*^|
2901|1|[\1]|1|
2911|1|[\{1,2\}]|{|
292#W the expected result for \(*\)*\1* is 2-2 which isn't correct
2930|0|\(*\)*\1*|a*b*11|
2942|3|\(*\)*\1*b|a*b*11|
295#W the expected result for \(a\(b\{1,2\}\)\{1,2\}\) is 1-5 which isn't correct
2961|3|\(a\(b\{1,2\}\)\{1,2\}\)|abbab|
2971|5|\(a\(b\{1,2\}\)\)\{1,2\}|abbab|
2981|1|^\(^\(^a$\)$\)$|a|
2991|2|\(a\)\1$|aa|
3001|3|ab*|abb|
3011|4|ab\{2,4\}|abbbc|
302# 2.8.3.5  BRE Expression Anchoring
303# GA144
3041|1|^a|abc|
305-1|-1|^b|abc|
306-1|-1|^[a-zA-Z]|99Nine|
3071|4|^[a-zA-Z]*|Nine99|
308# GA145(1)
3091|2|\(^a\)\1|aabc|
310-1|-1|\(^a\)\1|^a^abc|
3111|2|\(^^a\)|^a|
3121|1|\(^^\)|^^|
3131|3|\(^abc\)|abcdef|
314-1|-1|\(^def\)|abcdef|
315### GA145(2)			GNU regex implements GA145(1)
316##-1|-1|\(^a\)\1|aabc|
317##1|4|\(^a\)\1|^a^abc|
318##-1|-1|\(^^a\)|^a|
319##1|2|\(^^\)|^^|
320# GA146
3213|3|a$|cba|
322-1|-1|a$|abc|
3235|7|[a-z]*$|99ZZxyz|
324#W the expected result for [a-z]*$ is failure which isn't correct
32510|9|[a-z]*$|99ZZxyz99|
3263|3|$$|ab$|
327-1|-1|$$|$ab|
3283|3|\$$|ab$|
329# GA147(1)
330-1|-1|\(a$\)\1|bcaa|
331-1|-1|\(a$\)\1|ba$|
332-1|-1|\(ab$\)|ab$|
3331|2|\(ab$\)|ab|
3344|6|\(def$\)|abcdef|
335-1|-1|\(abc$\)|abcdef|
336### GA147(2)			GNU regex implements GA147(1)
337##-1|-1|\(a$\)\1|bcaa|
338##2|5|\(a$\)\1|ba$a$|
339##-1|-1|\(ab$\)|ab|
340##1|3|\(ab$\)|ab$|
341# GA148
3420|0|^$||
3431|3|^abc$|abc|
344-1|-1|^xyz$|^xyz^|
345-1|-1|^234$|^234$|
3461|9|^[a-zA-Z0-9]*$|2aA3bB9zZ|
347-1|-1|^[a-z0-9]*$|2aA3b#B9zZ|
348