]> git.saurik.com Git - apple/libc.git/blame - tests/regex/datafiles/tre-tests-enhanced.dat
Libc-1082.50.1.tar.gz
[apple/libc.git] / tests / regex / datafiles / tre-tests-enhanced.dat
CommitLineData
5f125488
A
1# Large number of macros in one regexp (Enhanced BRE)
2B$H [A-Z]\\d\\s\\?\\d[A-Z]\\{2\\}\\|[A-Z]\\d\\{2\\}\\s\\?\\d[A-Z]\\{2\\}\\|[A-Z]\\{2\\}\\d\\s\\?\\d[A-Z]\\{2\\}\\|[A-Z]\\{2\\}\\d\\{2\\}\\s\\?\\d[A-Z]\\{2\\}\\|[A-Z]\\d[A-Z]\\s\\?\\d[A-Z]\\{2\\}\\|[A-Z]\\{2\\}\\d[A-Z]\\s\\?\\d[A-Z]\\{2\\}\\|[A-Z]\\{3\\}\\s\\?\\d[A-Z]\\{2\\} A12BC (0,5)
3BH a\{11\}\(b\{2\}c\)\{2\} aaaaaaaaaaabbcbbc (0,17)(14,17)
4B$H ^!packet [0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\} [0-9]\\+ !packet 127.0.0.1 999 (0,21)
5B$H ^!pfast [0-9]\\{1,15\\} \\([0-9]\\{1,3\\}\\.\\)\\{3\\}[0-9]\\{1,3\\}\\.[0-9]\\{1,5\\}$ !pfast 1234567890 127.0.0.1.1234 (0,32)(24,26)
6# Should these match or not?
7BH \(a\)*-\1b aaa-b NOMATCH
8BH \(\(.*\)\1\)\{1,\} xxxxxx ESUBREG
9# Basic string matching
10BH foobar foobar (0,6)
11BH SAME xxxfoobarzapzot (3,9)
12BH aaaa xxaaaaaaaaaaaaaaaaa (2,6)
13# Test zero length matches
14BH \(a*\) NULL (0,0)(0,0)
15BH \(a*\)* NULL (0,0)(0,0)
16BH \(\(a*\)*\)* NULL (0,0)(0,0)(0,0)
17BH \(a*bcd\)* aaaaaaaaaaaabcxbcxbcxaabcxaabcx (0,0)(?,?)
18BH SAME aaaaaaaaaaaabcxbcxbcxaabcxaabc (0,0)(?,?)
19BH SAME aaaaaaaaaaaabcxbcdbcxaabcxaabc (0,0)(?,?)
20BH SAME aaaaaaaaaaaabcdbcdbcxaabcxaabc (0,18)(15,18)
21BH \(a*\)\+ - (0,0)(0,0)
22#E NULL NULL (0,0)
23#E SAME foo (0,0)
24# Test for submatch addressing which requires arbitrary lookahead
25BH \(a*\)aaaaaa aaaaaaaaaaaaaaax (0,15)(0,9)
26# Test leftmost and longest matching and some tricky submatches
27BH \(a*\)\(a*\) aaaa (0,4)(0,4)(4,4)
28BH \(abcd\|abc\)\(d\?\) abcd (0,4)(0,4)(4,4)
29BH \(abc\|abcd\)\(d\?\) abcd (0,4)(0,4)(4,4)
30BH \(abc\|abcd\)\(d\?\)e abcde (0,5)(0,4)(4,4)
31BH \(abcd\|abc\)\(d\?\)e abcde (0,5)(0,4)(4,4)
32BH a\(bc\|bcd\)\(d\?\) abcd (0,4)(1,4)(4,4)
33BH a\(bcd\|bc\)\(d\?\) abcd (0,4)(1,4)(4,4)
34BH a*\(a\?bc\|bcd\)\(d\?\) aaabcd (0,6)(3,6)(6,6)
35BH a*\(bcd\|a\?bc\)\(d\?\) aaabcd (0,6)(3,6)(6,6)
36BH \(a\|\(a*b*\)\)* NULL (0,0)(0,0)(0,0)
37BH SAME a (0,1)(0,1)(?,?)
38BH SAME aa (0,2)(0,2)(0,2)
39BH SAME aaa (0,3)(0,3)(0,3)
40BH SAME bbb (0,3)(0,3)(0,3)
41BH SAME aaabbb (0,6)(0,6)(0,6)
42BH SAME bbbaaa (0,6)(3,6)(3,6)
43BH \(\(a*b*\)\|a\)* NULL (0,0)(0,0)(0,0)
44BH SAME a (0,1)(0,1)(0,1)
45BH SAME aa (0,2)(0,2)(0,2)
46BH SAME aaa (0,3)(0,3)(0,3)
47BH SAME bbb (0,3)(0,3)(0,3)
48BH SAME aaabbb (0,6)(0,6)(0,6)
49BH SAME bbbaaa (0,6)(3,6)(3,6)
50BH a.*\(.*b.*\(.*c.*\).*d.*\).*e.*\(.*f.*\).*g aabbccddeeffgg (0,14)(3,9)(5,7)(11,13)
51BH \(wee\|week\)\(night\|knights\)s* weeknights (0,10)(0,4)(4,9)
52BH SAME weeknightss (0,11)(0,4)(4,9)
53BH a* aaaaaaaaaa (0,10)
54BH aa* aaaaaaaaaa (0,10)
55BH aaa* aaaaaaaaaa (0,10)
56BH aaaa* aaaaaaaaaa (0,10)
57# Test clearing old submatch data with nesting parentheses and iteration
58BH \(\(a\)\|\(b\)\)*c aaabc (0,5)(3,4)(?,?)(3,4)
59BH SAME aaaac (0,5)(3,4)(3,4)(?,?)
60BH foo\(\(bar\)*\)*zot foozot (0,6)(3,3)(?,?)
61BH SAME foobarzot (0,9)(3,6)(3,6)
62BH SAME foobarbarzot (0,12)(3,9)(6,9)
63BH foo\(\(zup\)*\|\(bar\)*\|\(zap\)*\)*zot foobarzapzot (0,12)(6,9)(?,?)(?,?)(6,9)
64BH SAME foobarbarzapzot (0,15)(9,12)(?,?)(?,?)(9,12)
65BH SAME foozupzot (0,9)(3,6)(3,6)(?,?)(?,?)
66BH SAME foobarzot (0,9)(3,6)(?,?)(3,6)(?,?)
67BH SAME foozapzot (0,9)(3,6)(?,?)(?,?)(3,6)
68BH SAME foozot (0,6)(3,3)(?,?)(?,?)(?,?)
69# Test case where, e.g., Perl and Python regexp functions, and many
70# other backtracking matchers, fail to produce the longest match.
71# It is not exactly a bug since Perl does not claim to find the
72# longest match, but a confusing feature and, in my opinion, a bad
73# design choice because the union operator is traditionally defined
74# to be commutative (with respect to the language denoted by the RE). */
75BH \(a\|ab\)\(blip\)\? ablip (0,5)(0,1)(1,5)
76BH SAME ab (0,2)(0,2)(?,?)
77BH \(ab\|a\)\(blip\)\? ablip (0,5)(0,1)(1,5)
78BH SAME ab (0,2)(0,2)(?,?)
79BH \(\(a\|b\)*\)a\(a\|b\)* aaaaabaaaba (0,11)(0,10)(9,10)(?,?)
80BH SAME aaaaabaaab (0,10)(0,8)(7,8)(9,10)
81BH SAME caa (1,3)(1,2)(1,2)(?,?)
82BH \(\(a\|aba\)*\)\(ababbaba\)\(\(a\|b\)*\) aabaababbabaaababbab (0,20)(0,4)(1,4)(4,12)(12,20)(19,20)
83BH SAME aaaaababbaba (0,12)(0,4)(3,4)(4,12)(12,12)(?,?)
84BH \(\(a\|aba\|abb\|bba\|bab\)*\)\(ababbababbabbbabbbbbbabbaba\)\(\(a\|b\)*\) aabaabbbbabababaababbababbabbbabbbbbbabbabababbababababbabababa (0,63)(0,16)(13,16)(16,43)(43,63)(62,63)
85# Test for empty subexpressions
86#E (a|) a (0,1)(0,1)
87#E SAME b (0,0)(0,0)
88#E SAME NULL (0,0)(0,0)
89#E (|a) a (0,1)(0,1)
90#E SAME b (0,0)(0,0)
91#E SAME NULL (0,0)(0,0)
92#E a| a (0,1)
93#E SAME b (0,0)
94#E SAME NULL (0,0)
95#E |a a (0,1)
96#E SAME b (0,0)
97#E SAME NULL (0,0)
98# Miscellaneous tests
99BH \(a*\)b\(c*\) abc (0,3)(0,1)(2,3)
100BH SAME ***abc*** (3,6)(3,4)(5,6)
101BH \(a\) a (0,1)(0,1)
102BH \(\(a\)\) a (0,1)(0,1)(0,1)
103BH \(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(a\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\) a (0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)
104BH ksntoeaiksntoeaikstneoaiksnteoaiksntoeaiskntoeaiskntoekainstoeiaskntoeakisntoeksaitnokesantiksoentaikosentaiksoentaiksnoeaisknteoaksintoekasitnoeksaitkosetniaksoetnaisknoetakistoeksintokesanitksoentaisknoetaisknoetiaksotneaikstoekasitoeskatioksentaiksoenatiksoetnaiksonateiksoteaeskanotisknetaiskntoeasknitoskenatiskonetaisknoteai x NOMATCH
105BH \(\(aab\)\|\(aac\)\|\(aa*\)\)c aabc (0,4)(0,3)(0,3)(?,?)(?,?)
106BH SAME aacc (0,4)(0,3)(?,?)(0,3)(?,?)
107BH SAME aaac (0,4)(0,3)(?,?)(?,?)(0,3)
108BH ^\(\([^!]\+!\)\?\([^!]\+\)\|.\+!\([^!]\+!\)\([^!]\+\)\)$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11)
109# For BRE, the first $ is not magic
110#E ^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$ foo!bar!bas (0,11)(?,?)(?,?)(4,8)(8,11)
111BH ^\(\([^!]\+!\)\?\([^!]\+\)\|.\+!\([^!]\+!\)\([^!]\+\)\)$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11)
112BH M[ou]'\?am\+[ae]r .*\([AEae]l[- ]\)\?[GKQ]h\?[aeu]\+\([dtz][dhz]\?\)\+af[iy] Muammar Quathafi (0,16)(?,?)(11,13)
113BHi \(Ab\|cD\)* aBcD (0,4)(2,4)
114BH a** NULL BADRPT
115BH a*\+ NULL BADRPT
116BH a\+* NULL BADRPT
117BH a\+\+ NULL BADRPT
118BH a\?\+ NULL BADRPT
119BH a\?* NULL BADRPT
120BH a\{1,2\}* NULL BADRPT
121BH a\{1,2\}\+ a+ (0,2)
122# Many of the following tests were mostly inspired by (or copied from) the
123# libhackerlab posix test suite by Tom Lord
124BH a a (0,1)
125BH \. . (0,1)
126BH \[ [ (0,1)
127BH \\ \ (0,1)
128BH \* * (0,1)
129BH \^ ^ (0,1)
130BH \$ $ (0,1)
131BH \ NULL EESCAPE
132BH x\. x. (0,2)
133BH x\[ x[ (0,2)
134BH x\\ x\ (0,2)
135BH x\* x* (0,2)
136BH x\^ x^ (0,2)
137BH x\$ x$ (0,2)
138BH x\ NULL EESCAPE
139BH . a (0,1)
140BH$ SAME \n (0,1)
141#B (+|?) (+|?) (0,5)
142#B SAME +|? NOMATCH
143#B SAME (+) NOMATCH
144#B SAME + NOMATCH
145# Test bracket expressions
146BH [ NULL EBRACK
147BH [] NULL EBRACK
148BH [^] NULL EBRACK
149BH []x] ] (0,1)
150BH []x] x (0,1)
151BH [.] . (0,1)
152BH SAME a NOMATCH
153BH [*] * (0,1)
154BH [[] [ (0,1)
155BH [\] \ (0,1)
156BH [-x] - (0,1)
157BH SAME x (0,1)
158BH [x-] - (0,1)
159BH SAME x (0,1)
160BH [-] - (0,1)
161BH [abc] a (0,1)
162BH SAME b (0,1)
163BH SAME c (0,1)
164BH SAME d NOMATCH
165BH SAME xa (1,2)
166BH SAME xb (1,2)
167BH SAME xc (1,2)
168BH SAME xd NOMATCH
169BH x[abc] xa (0,2)
170BH SAME xb (0,2)
171BH SAME xc (0,2)
172BH SAME xd NOMATCH
173BH [^abc] a NOMATCH
174BH SAME b NOMATCH
175BH SAME c NOMATCH
176BH SAME d (0,1)
177BH SAME xa (0,1)
178BH SAME xb (0,1)
179BH SAME xc (0,1)
180BH SAME xd (0,1)
181BH x[^abc] xa NOMATCH
182BH x[^abc] xb NOMATCH
183BH x[^abc] xc NOMATCH
184BH x[^abc] xd (0,2)
185BH [()+?*\]\+ x\*?+()x (1,7)
186# Standard character classes
187BH [[:alnum:]]\+ %abc123890XYZ= (1,13)
188BH$ [[:cntrl:]]\\+ %\n\t\015\f (1,5)
189BH [[:lower:]]\+ AbcdE (1,4)
190BHi [[:lower:]]\+ AbcdE (0,5)
191BH$ [[:space:]]\\+ x \t\f\nx (1,5)
192BH [[:alpha:]]\+ %abC123890xyz= (1,4)
193BH [[:digit:]]\+ %abC123890xyz= (4,10)
194BH [^[:digit:]]\+ %abC123890xyz= (0,4)
195BH$ [[:print:]]\\+ \n %abC12\f (1,8)
196BH$ [[:upper:]]\\+ \n aBCDEFGHIJKLMNOPQRSTUVWXYz (3,27)
197BHi$ [[:upper:]]\\+ \n aBCDEFGHIJKLMNOPQRSTUVWXYz (2,28)
198BH$ [[:blank:]]\\+ \na \t b (2,5)
199BH$ [[:graph:]]\\+ \n %abC12\f (2,8)
200BH [[:punct:]]\+ a~!@#$%^&*()_+=-`[]{};':"|\,./?>< (1,33)
201BH [[:xdigit:]]\+ -0123456789ABCDEFabcdef (1,23)
202BH [[:bogus-character-class-name:] NULL ECTYPE
203# Range expressions (assuming that the C locale is being used)
204BH [a-z]\+ ABCabcxyzABC (3,9)
205BH [z-a]\+ NULL ERANGE
206BH [a-b-c] NULL ERANGE
207BH [a-a]\+ zaaaaab (1,6)
208BH [--Z]\+ !ABC-./XYZ~ (1,10)
209BH [*--] - (0,1)
210BH SAME * (0,1)
211BH [*--Z]\+ !+*,---ABC (1,7)
212BH [a-]\+ xa-a--a-ay (1,9)
213# REG_ICASE and character sets
214BHi [a-c]* cABbage (0,5)
215BHi [^a-c]* tObAcCo (0,2)
216BHi [A-C]* cABbage (0,5)
217BHi [^A-C]* tObAcCo (0,2)
218# Complex character sets
219BH [[:digit:]a-z#$%]\+ __abc#lmn012$x%yz789* (2,20)
220BHi [[:digit:]a-z#$%]\+ __abcLMN012x%#$yz789* (2,20)
221BH [^[:digit:]a-z#$%]\+ abc#lmn012$x%yz789--@*,abc (18,23)
222BHi [^[:digit:]a-z#$%]\+ abc#lmn012$x%yz789--@*,abc (18,23)
223BHi [^[:digit:]#$%[:xdigit:]]\+ abc#lmn012$x%yz789--@*,abc (4,7)
224BH [^-]\+ ---afd*(&,ml--- (3,12)
225BH [^--Z]\+ ---AFD*(&,ml--- (6,12)
226BHi [^--Z]\+ ---AFD*(&,ml--- (6,10)
227# Miscellaneous tests
228BH abc\(\(de\)\(fg\)\)hi xabcdefghiy (1,10)(4,8)(4,6)(6,8)
229BH abc*def xabdefy (1,6)
230BH SAME xabcdefy (1,7)
231BH SAME xabcccccccdefy (1,13)
232BH abc\(def\)*ghi xabcghiy (1,7)(?,?)
233BH SAME xabcdefghi (1,10)(4,7)
234BH SAME xabcdefdefdefghi (1,16)(10,13)
235BH a\? aaaaa (0,1)
236BH SAME xaaaaa (0,0)
237BH a\+ aaaaa (0,5)
238BH SAME xaaaaa (1,6)
239# Test anchors and their behaviour with the REG_NEWLINE compilation
240# flag and the REG_NOTBOL, REG_NOTEOL execution flags.
241#
242# Normally, `^' matches the empty string at beginning of input.
243# If REG_NOTBOL is used, `^' won't match the zero length string.
244BH ^abc abcdef (0,3)
245BHb SAME abcdef NOMATCH
246BH SAME xyzabcdef NOMATCH
247BHb SAME xyzabcdef NOMATCH
248BH$ SAME \nabcdef NOMATCH
249BHb$ SAME \nabcdef NOMATCH
250# Normally, `$' matches the empty string at end of input.
251# If REG_NOTEOL is used, `$' won't match the zero length string.
252BH abc$ defabc (3,6)
253BHe SAME defabc NOMATCH
254BH SAME defabcxyz NOMATCH
255BHe SAME defabcxyz NOMATCH
256BH$ SAME defabc\n NOMATCH
257BHe$ SAME defabc\n NOMATCH
258BH ^abc$ abc (0,3)
259BHb SAME abc NOMATCH
260BHe SAME abc NOMATCH
261BHbe SAME abc NOMATCH
262BH$ SAME \nabc\n NOMATCH
263BH$ SAME defabc\n NOMATCH
264BH$ SAME \nabcdef NOMATCH
265BH SAME abcdef NOMATCH
266BH SAME defabc NOMATCH
267BH$ SAME abc\ndef NOMATCH
268BH$ SAME def\nabc NOMATCH
269# If REG_NEWLINE is used, `^' matches the empty string immediately after
270# a newline, regardless of whether execution flags contain REG_NOTBOL.
271# Similarly, if REG_NEWLINE is used, `$' matches the empty string
272# immediately before a newline, regardless of execution flags.
273BHn ^abc abcdef (0,3)
274BHbn SAME abcdef NOMATCH
275BHn SAME xyzabcdef NOMATCH
276BHbn SAME xyzabcdef NOMATCH
277BHn$ SAME \nabcdef (1,4)
278BHbn$ SAME \nabcdef (1,4)
279BHn abc$ defabc (3,6)
280BHen SAME defabc NOMATCH
281BHn SAME defabcxyz NOMATCH
282BHen SAME defabcxyz NOMATCH
283BHn$ SAME defabc\n (3,6)
284BHen$ SAME defabc\n (3,6)
285BHn ^abc$ abc (0,3)
286BHbn SAME abc NOMATCH
287BHen SAME abc NOMATCH
288BHben SAME abc NOMATCH
289BHn$ SAME \nabc\n (1,4)
290BHn$ SAME defabc\n NOMATCH
291BHn$ SAME \nabcdef NOMATCH
292BHn SAME abcdef NOMATCH
293BHbn SAME abcdef NOMATCH
294BHn SAME defabc NOMATCH
295BHen SAME defabc NOMATCH
296BHn$ SAME abc\ndef (0,3)
297BHbn$ SAME abc\ndef NOMATCH
298BHen$ SAME abc\ndef (0,3)
299BHbn$ SAME abc\ndef NOMATCH
300BHn$ SAME def\nabc (4,7)
301BHbn$ SAME def\nabc (4,7)
302BHen$ SAME def\nabc NOMATCH
303BHben$ SAME def\nabc NOMATCH
304# With BRE syntax, `^' has a special meaning only at the beginning of the
305# RE or the beginning of a parenthesized subexpression.
306BH a\{0,1\}^bc bc NOMATCH
307BH SAME ^bc (0,3)
308BH SAME abc NOMATCH
309BH SAME a^bc (0,4)
310BH a\{0,1\}\(^bc\) bc (0,2)(0,2)
311BH SAME ^bc NOMATCH
312BH SAME abc NOMATCH
313BH SAME a^bc NOMATCH
314BH (^a (^a (0,3)
315# With BRE syntax, `$' has a special meaning only at the end of the
316# RE or the end of a parenthesized subexpression.
317BH ab$c\{0,1\} ab NOMATCH
318BH SAME ab$ (0,3)
319BH SAME abc NOMATCH
320BH SAME ab$c (0,4)
321BH \(ab$\)c\{0,1\} ab (0,2)(0,2)
322BH SAME ab$ NOMATCH
323BH SAME abc NOMATCH
324BH SAME ab$c NOMATCH
325BH a$) a$) (0,3)
326# Miscellaneous tests for `^' and `$'
327BH foo^$ foo NOMATCH
328# For BRE, $ and ^ not magic
329#En$ x$\n^y foo\nybarx\nyes\n (8,11)
330BH ^$ x NOMATCH
331BH SAME NULL (0,0)
332BH$ SAME \n NOMATCH
333BHn ^$ x NOMATCH
334BHn SAME NULL (0,0)
335BHn$ SAME \n (0,0)
336# REG_NEWLINE causes `.' not to match newlines
337BH$ .* ab\ncd (0,5)
338BHn$ .* ab\ncd (0,2)
339# Tests for nonstandard syntax extensions (Enhanced mode off)
340#
341# Zero width assertions
342BH \<x aax xaa (4,5)
343BH SAME xaa (0,1)
344BH x\> axx xaa (2,3)
345BH SAME aax (2,3)
346BH \bx axx xaa (4,5)
347BH SAME aax NOMATCH
348BH SAME xax (0,1)
349BH x\b axx xaa (2,3)
350BH SAME aax (2,3)
351BH SAME xaa NOMATCH
352BH \Bx aax xxa (2,3)
353BH \Bx\b aax xxx (2,3)
354BH \<. ;xaa (1,2)
355# Shorthands for character classes
356BH \w\{1,\} ,.(a23_Nt-öo) (3,9)
357BH \d\{1,\} uR120_4=v4 (2,5)
358BH \D\{1,\} 120d_=vA4s (3,8)
359BH \w\+ ,.(a23_Nt-öo) (3,9)
360BH \d\+ uR120_4=v4 (2,5)
361BH \D\+ 120d_=vA4s (3,8)
362# Quoted special characters
363B$H \\t \t (0,1)
364B$H \\e \033 (0,1)
365# Test the \x1B and \x{263a} extensions for specifying 8 bit and wide
366# characters in hexadecimal.
367BH \x41 ABC (0,1)
368B$H \\x5 \005 (0,1)
369B$H \\x5r \005r (0,2)
370# test_comp("\\x",REG_EXTENDED,0)
371# test_nexec("\000",1,0,REG_OK,0,1)
372# test_comp("\\xr",REG_EXTENDED,0)
373# test_nexec("\000r",2,0,REG_OK,0,2)
374BH \x{41} ABC (0,1)
375B$H \\x{5} \005 (0,1)
376B$H \\x{5}r \005r (0,2)
377# test_comp("\\x{}",REG_EXTENDED,0)
378# test_nexec("\000",1,0,REG_OK,0,1)
379# test_comp("\\x{}r",REG_EXTENDED,0)
380# test_nexec("\000r",2,0,REG_OK,0,2)
381# Tests for (?inrU-inrU) and (?inrU-inrU:) (Enhanced mode off)
382#E foo(?i)bar fooBaR BADRPT
383#E foo(?i)bar|zap fooBaR BADRPT
384#E SAME foozap BADRPT
385#E SAME foozAp BADRPT
386#E SAME bar BADRPT
387#E SAME zap BADRPT
388#Ei foo(?-i:zap)zot FoOzapZOt BADRPT
389#Ei SAME FoOzApZOt BADRPT
390#E foo(?i:bar|zap) foozap BADRPT
391#E SAME foobar BADRPT
392#E SAME foobAr BADRPT
393#E SAME fooZaP BADRPT
394#E foo(?U:o*)(o*) foooo BADRPT
395# Test comment syntax (Enhanced mode off)
396#E foo(?# This here is a comment. )bar foobar BADRPT
397# Tests for \Q and \E (Enhanced mode off)
398#E \((\Q)?:\<[^$\E) ()?:\<[^$ EBRACK
399#E \Qabc\E.* abcdef NOMATCH
400#E SAME QabcEdef (0,8)
401#E \Qabc\E.*|foo parabc123wxyz NOMATCH
402#E SAME fooabc123wxyz (0,3)
403#E SAME QabcEdef (0,8)
404# Test bounded repetitions
405BH a\{0,0\} aaa (0,0)
406BH a\{0,1\} aaa (0,1)
407BH a\{1,1\} aaa (0,1)
408BH a\{1,3\} xaaaaa (1,4)
409BH a\{0,3\} aaaaa (0,3)
410BH a\{0,\} NULL (0,0)
411BH SAME a (0,1)
412BH SAME aa (0,2)
413BH SAME aaa (0,3)
414BH a\{1,\} NULL NOMATCH
415BH SAME a (0,1)
416BH SAME aa (0,2)
417BH SAME aaa (0,3)
418BH a\{2,\} NULL NOMATCH
419BH SAME a NOMATCH
420BH SAME aa (0,2)
421BH SAME aaa (0,3)
422BH a\{3,\} NULL NOMATCH
423BH SAME a NOMATCH
424BH SAME aa NOMATCH
425BH SAME aaa (0,3)
426BH SAME aaaa (0,4)
427BH SAME aaaaa (0,5)
428BH SAME aaaaaa (0,6)
429BH SAME aaaaaaa (0,7)
430BH a\{5,10\} aaaaaaa (0,7)
431BH a\{6,6\} aaaaaaaaaaaa (0,6)
432BH SAME xxaaaaaaaaaaaa (2,8)
433BH SAME xxaaaaa NOMATCH
434BH a\{5,6\} aaaaaaaaaaaa (0,6)
435BH SAME xxaaaaaaaaaaaa (2,8)
436BH SAME xxaaaaa (2,7)
437BH SAME xxaaaa NOMATCH
438# Trickier ones...
439BH \([ab]\{5,10\}\)*b bbbbbabaaaaab (0,13)(7,12)
440BH SAME bbbbbbaaaaab (0,12)(6,11)
441BH SAME bbbbbbaaaab (0,11)(0,10)
442BH SAME bbbbbbaaab (0,10)(0,9)
443BH SAME bbbbbbaab (0,9)(0,8)
444BH SAME bbbbbbab (0,8)(0,7)
445BH \([ab]*\)\(ab[ab]\{5,10\}\)ba abbabbbabaabbbbbbbbbbbbbabaaaabab (0,10)(0,0)(0,8)
446BH SAME abbabbbabaabbbbbbbbbbbbabaaaaabab (0,32)(0,23)(23,30)
447BH SAME abbabbbabaabbbbbbbbbbbbabaaaabab (0,24)(0,10)(10,22)
448BH SAME abbabbbabaabbbbbbbbbbbba (0,24)(0,10)(10,22)
449# Test repeating something that has submatches inside
450BH \(a\)\{0,5\} NULL (0,0)(?,?)
451BH SAME a (0,1)(0,1)
452BH SAME aa (0,2)(1,2)
453BH SAME aaa (0,3)(2,3)
454BH SAME aaaa (0,4)(3,4)
455BH SAME aaaaa (0,5)(4,5)
456BH SAME aaaaaa (0,5)(4,5)
457BH \(a\)\{2,3\} NULL NOMATCH
458BH SAME a NOMATCH
459BH SAME aa (0,2)(1,2)
460BH SAME aaa (0,3)(2,3)
461BH SAME aaaa (0,3)(2,3)
462BH \(a\)\{4\} aaaa (0,4)(3,4)
463BH \(a*\)\{2\} a (0,1)(1,1)
464BH \(\(..\)\|\(.\)\)\{2\} aa (0,2)(1,2)(?,?)(1,2)
465# Nested repeats
466#E (.){2}{3} xxxxx NOMATCH
467#E SAME xxxxxx (0,6)(5,6)
468#E (..){2}{3} xxxxxxxxxxx NOMATCH
469#E SAME xxxxxxxxxxxx (0,12)(10,12)
470BH \(\(..\)\{2\}.\)\{3\} xxxxxxxxxxxxxx NOMATCH
471BH SAME xxxxxxxxxxxxxxx (0,15)(10,15)(12,14)
472BH \(\(..\)\{1,2\}.\)\{3\} xxxxxxxx NOMATCH
473BH SAME xxxxxxxxx (0,9)(6,9)(6,8)
474BH SAME xxxxxxxxxx (0,9)(6,9)(6,8)
475BH SAME xxxxxxxxxxx (0,11)(8,11)(8,10)
476#E a{2}{2}x NULL NOMATCH
477#E SAME x NOMATCH
478#E SAME ax NOMATCH
479#E SAME aax NOMATCH
480#E SAME aaax NOMATCH
481#E SAME aaaax (0,5)
482#E SAME aaaaax (1,6)
483#E SAME aaaaaax (2,7)
484#E SAME aaaaaaax (3,8)
485#E SAME aaaaaaaax (4,9)
486# Repeats with iterations inside
487BH$ \\([a-z]\\+\\)\\{2,5\\} a\n NOMATCH
488BH$ SAME aa\n (0,2)(1,2)
489# Multiple repeats in one regexp
490BH a\{3\}b\{3\} aaabbb (0,6)
491BH SAME aaabbbb (0,6)
492BH SAME aaaabbb (1,7)
493BH SAME aabbb NOMATCH
494BH SAME aaabb NOMATCH
495# Test that different types of repetitions work correctly when used
496# in the same regexp.
497#E a{2}{2}xb+xc*xd?x aaaaxbxcxdx (0,11)
498#E SAME aaaxbxcxdx NOMATCH
499#E SAME aabxcxdx NOMATCH
500#E SAME aaaacxdx NOMATCH
501#E SAME aaaaxbdx NOMATCH
502BH ^!packet [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} [0-9]\+ !packet 10.0.2.4 12765 ei voittoa (0,22)
503# Back referencing tests
504BH \([a-z]*\) \1 foobar foobar (0,13)(0,6)
505# Searching for a leftmost longest square (repeated string)
506BH \(.*\)\1 foobarfoobar (0,12)(0,6)
507BH a\(b\)*c\1 acb NOMATCH
508BH SAME abbcbbb (0,5)(2,3)
509BH SAME abbdbd NOMATCH
510BH \([a-c]*\)\1 abcacdef (0,0)(0,0)
511BH SAME abcabcabcd (0,6)(0,3)
512BH \(a*\)*\(x\)\(\1\) x (0,1)(0,0)(0,1)(1,1)
513BH SAME ax (0,2)(1,1)(1,2)(2,2)
514BH \(a\)\1\{1,2\} aabc (0,2)(0,1)
515BH \(\)\(\1\1\)* NULL (0,0)(0,0)(0,0)
516# Check that back references work with REG_NOSUB
517BHw \(o\)\1 foobar NULL
518BH \(o\)\1 foobar (1,3)(1,2)
519BH SAME fobar NOMATCH
520BH \1foo NULL ESUBREG
521BH \1foo\(bar\) x ESUBREG
522# Back reference with zero-width assertion
523BH \(.\)\1$ foox NOMATCH
524BH SAME foo (1,3)(1,2)
525# Back references together with {}
526BH \([0-9]\{5\}\)\1 12345 NOMATCH
527BH SAME 1234512345 (0,10)(0,5)
528BH \([0-9]\{4\}\)\1 1234 NOMATCH
529BH SAME 12341234 (0,8)(0,4)
530# Test lack of minimal repetitions (non-greedy repetitions)
531#
532# Basic
533BH .*\? ab?d (0,3)
534BH .\+\? ab?d (0,3)
535BH .\?\? a?cd (0,2)
536BH .\{2,5\}\? ab?d (0,3)
537# More complicated
538#E <b>(.*?)</b> <b>text1</b><b>text2</b> BADRPT
539#E a(.*?)(foo|bar|zap) hubba wooga-booga zabar gafoo wazap BADRPT
540##### Extras
541# ^ magic after \|
542BH \(a\|^b\) bas (0,1)(0,1)
543# Lack of minimal repetition
544BH a*? a? (0,2)