xref: /freebsd/lib/libc/regex/grot/tests (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
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