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