]> git.saurik.com Git - apple/libc.git/blob - tests/regex/datafiles/tre-tests-enhanced.dat
Libc-1082.50.1.tar.gz
[apple/libc.git] / tests / regex / datafiles / tre-tests-enhanced.dat
1 # Large number of macros in one regexp (Enhanced BRE)
2 B$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)
3 BH a\{11\}\(b\{2\}c\)\{2\} aaaaaaaaaaabbcbbc (0,17)(14,17)
4 B$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)
5 B$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?
7 BH \(a\)*-\1b aaa-b NOMATCH
8 BH \(\(.*\)\1\)\{1,\} xxxxxx ESUBREG
9 # Basic string matching
10 BH foobar foobar (0,6)
11 BH SAME xxxfoobarzapzot (3,9)
12 BH aaaa xxaaaaaaaaaaaaaaaaa (2,6)
13 # Test zero length matches
14 BH \(a*\) NULL (0,0)(0,0)
15 BH \(a*\)* NULL (0,0)(0,0)
16 BH \(\(a*\)*\)* NULL (0,0)(0,0)(0,0)
17 BH \(a*bcd\)* aaaaaaaaaaaabcxbcxbcxaabcxaabcx (0,0)(?,?)
18 BH SAME aaaaaaaaaaaabcxbcxbcxaabcxaabc (0,0)(?,?)
19 BH SAME aaaaaaaaaaaabcxbcdbcxaabcxaabc (0,0)(?,?)
20 BH SAME aaaaaaaaaaaabcdbcdbcxaabcxaabc (0,18)(15,18)
21 BH \(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 BH \(a*\)aaaaaa aaaaaaaaaaaaaaax (0,15)(0,9)
26 # Test leftmost and longest matching and some tricky submatches
27 BH \(a*\)\(a*\) aaaa (0,4)(0,4)(4,4)
28 BH \(abcd\|abc\)\(d\?\) abcd (0,4)(0,4)(4,4)
29 BH \(abc\|abcd\)\(d\?\) abcd (0,4)(0,4)(4,4)
30 BH \(abc\|abcd\)\(d\?\)e abcde (0,5)(0,4)(4,4)
31 BH \(abcd\|abc\)\(d\?\)e abcde (0,5)(0,4)(4,4)
32 BH a\(bc\|bcd\)\(d\?\) abcd (0,4)(1,4)(4,4)
33 BH a\(bcd\|bc\)\(d\?\) abcd (0,4)(1,4)(4,4)
34 BH a*\(a\?bc\|bcd\)\(d\?\) aaabcd (0,6)(3,6)(6,6)
35 BH a*\(bcd\|a\?bc\)\(d\?\) aaabcd (0,6)(3,6)(6,6)
36 BH \(a\|\(a*b*\)\)* NULL (0,0)(0,0)(0,0)
37 BH SAME a (0,1)(0,1)(?,?)
38 BH SAME aa (0,2)(0,2)(0,2)
39 BH SAME aaa (0,3)(0,3)(0,3)
40 BH SAME bbb (0,3)(0,3)(0,3)
41 BH SAME aaabbb (0,6)(0,6)(0,6)
42 BH SAME bbbaaa (0,6)(3,6)(3,6)
43 BH \(\(a*b*\)\|a\)* NULL (0,0)(0,0)(0,0)
44 BH SAME a (0,1)(0,1)(0,1)
45 BH SAME aa (0,2)(0,2)(0,2)
46 BH SAME aaa (0,3)(0,3)(0,3)
47 BH SAME bbb (0,3)(0,3)(0,3)
48 BH SAME aaabbb (0,6)(0,6)(0,6)
49 BH SAME bbbaaa (0,6)(3,6)(3,6)
50 BH a.*\(.*b.*\(.*c.*\).*d.*\).*e.*\(.*f.*\).*g aabbccddeeffgg (0,14)(3,9)(5,7)(11,13)
51 BH \(wee\|week\)\(night\|knights\)s* weeknights (0,10)(0,4)(4,9)
52 BH SAME weeknightss (0,11)(0,4)(4,9)
53 BH a* aaaaaaaaaa (0,10)
54 BH aa* aaaaaaaaaa (0,10)
55 BH aaa* aaaaaaaaaa (0,10)
56 BH aaaa* aaaaaaaaaa (0,10)
57 # Test clearing old submatch data with nesting parentheses and iteration
58 BH \(\(a\)\|\(b\)\)*c aaabc (0,5)(3,4)(?,?)(3,4)
59 BH SAME aaaac (0,5)(3,4)(3,4)(?,?)
60 BH foo\(\(bar\)*\)*zot foozot (0,6)(3,3)(?,?)
61 BH SAME foobarzot (0,9)(3,6)(3,6)
62 BH SAME foobarbarzot (0,12)(3,9)(6,9)
63 BH foo\(\(zup\)*\|\(bar\)*\|\(zap\)*\)*zot foobarzapzot (0,12)(6,9)(?,?)(?,?)(6,9)
64 BH SAME foobarbarzapzot (0,15)(9,12)(?,?)(?,?)(9,12)
65 BH SAME foozupzot (0,9)(3,6)(3,6)(?,?)(?,?)
66 BH SAME foobarzot (0,9)(3,6)(?,?)(3,6)(?,?)
67 BH SAME foozapzot (0,9)(3,6)(?,?)(?,?)(3,6)
68 BH 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 BH \(a\|ab\)\(blip\)\? ablip (0,5)(0,1)(1,5)
76 BH SAME ab (0,2)(0,2)(?,?)
77 BH \(ab\|a\)\(blip\)\? ablip (0,5)(0,1)(1,5)
78 BH SAME ab (0,2)(0,2)(?,?)
79 BH \(\(a\|b\)*\)a\(a\|b\)* aaaaabaaaba (0,11)(0,10)(9,10)(?,?)
80 BH SAME aaaaabaaab (0,10)(0,8)(7,8)(9,10)
81 BH SAME caa (1,3)(1,2)(1,2)(?,?)
82 BH \(\(a\|aba\)*\)\(ababbaba\)\(\(a\|b\)*\) aabaababbabaaababbab (0,20)(0,4)(1,4)(4,12)(12,20)(19,20)
83 BH SAME aaaaababbaba (0,12)(0,4)(3,4)(4,12)(12,12)(?,?)
84 BH \(\(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 BH \(a*\)b\(c*\) abc (0,3)(0,1)(2,3)
100 BH SAME ***abc*** (3,6)(3,4)(5,6)
101 BH \(a\) a (0,1)(0,1)
102 BH \(\(a\)\) a (0,1)(0,1)(0,1)
103 BH \(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(\(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 BH ksntoeaiksntoeaikstneoaiksnteoaiksntoeaiskntoeaiskntoekainstoeiaskntoeakisntoeksaitnokesantiksoentaikosentaiksoentaiksnoeaisknteoaksintoekasitnoeksaitkosetniaksoetnaisknoetakistoeksintokesanitksoentaisknoetaisknoetiaksotneaikstoekasitoeskatioksentaiksoenatiksoetnaiksonateiksoteaeskanotisknetaiskntoeasknitoskenatiskonetaisknoteai x NOMATCH
105 BH \(\(aab\)\|\(aac\)\|\(aa*\)\)c aabc (0,4)(0,3)(0,3)(?,?)(?,?)
106 BH SAME aacc (0,4)(0,3)(?,?)(0,3)(?,?)
107 BH SAME aaac (0,4)(0,3)(?,?)(?,?)(0,3)
108 BH ^\(\([^!]\+!\)\?\([^!]\+\)\|.\+!\([^!]\+!\)\([^!]\+\)\)$ 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)
111 BH ^\(\([^!]\+!\)\?\([^!]\+\)\|.\+!\([^!]\+!\)\([^!]\+\)\)$ foo!bar!bas (0,11)(0,11)(?,?)(?,?)(4,8)(8,11)
112 BH M[ou]'\?am\+[ae]r .*\([AEae]l[- ]\)\?[GKQ]h\?[aeu]\+\([dtz][dhz]\?\)\+af[iy] Muammar Quathafi (0,16)(?,?)(11,13)
113 BHi \(Ab\|cD\)* aBcD (0,4)(2,4)
114 BH a** NULL BADRPT
115 BH a*\+ NULL BADRPT
116 BH a\+* NULL BADRPT
117 BH a\+\+ NULL BADRPT
118 BH a\?\+ NULL BADRPT
119 BH a\?* NULL BADRPT
120 BH a\{1,2\}* NULL BADRPT
121 BH 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
124 BH a a (0,1)
125 BH \. . (0,1)
126 BH \[ [ (0,1)
127 BH \\ \ (0,1)
128 BH \* * (0,1)
129 BH \^ ^ (0,1)
130 BH \$ $ (0,1)
131 BH \ NULL EESCAPE
132 BH x\. x. (0,2)
133 BH x\[ x[ (0,2)
134 BH x\\ x\ (0,2)
135 BH x\* x* (0,2)
136 BH x\^ x^ (0,2)
137 BH x\$ x$ (0,2)
138 BH x\ NULL EESCAPE
139 BH . a (0,1)
140 BH$ SAME \n (0,1)
141 #B (+|?) (+|?) (0,5)
142 #B SAME +|? NOMATCH
143 #B SAME (+) NOMATCH
144 #B SAME + NOMATCH
145 # Test bracket expressions
146 BH [ NULL EBRACK
147 BH [] NULL EBRACK
148 BH [^] NULL EBRACK
149 BH []x] ] (0,1)
150 BH []x] x (0,1)
151 BH [.] . (0,1)
152 BH SAME a NOMATCH
153 BH [*] * (0,1)
154 BH [[] [ (0,1)
155 BH [\] \ (0,1)
156 BH [-x] - (0,1)
157 BH SAME x (0,1)
158 BH [x-] - (0,1)
159 BH SAME x (0,1)
160 BH [-] - (0,1)
161 BH [abc] a (0,1)
162 BH SAME b (0,1)
163 BH SAME c (0,1)
164 BH SAME d NOMATCH
165 BH SAME xa (1,2)
166 BH SAME xb (1,2)
167 BH SAME xc (1,2)
168 BH SAME xd NOMATCH
169 BH x[abc] xa (0,2)
170 BH SAME xb (0,2)
171 BH SAME xc (0,2)
172 BH SAME xd NOMATCH
173 BH [^abc] a NOMATCH
174 BH SAME b NOMATCH
175 BH SAME c NOMATCH
176 BH SAME d (0,1)
177 BH SAME xa (0,1)
178 BH SAME xb (0,1)
179 BH SAME xc (0,1)
180 BH SAME xd (0,1)
181 BH x[^abc] xa NOMATCH
182 BH x[^abc] xb NOMATCH
183 BH x[^abc] xc NOMATCH
184 BH x[^abc] xd (0,2)
185 BH [()+?*\]\+ x\*?+()x (1,7)
186 # Standard character classes
187 BH [[:alnum:]]\+ %abc123890XYZ= (1,13)
188 BH$ [[:cntrl:]]\\+ %\n\t\015\f (1,5)
189 BH [[:lower:]]\+ AbcdE (1,4)
190 BHi [[:lower:]]\+ AbcdE (0,5)
191 BH$ [[:space:]]\\+ x \t\f\nx (1,5)
192 BH [[:alpha:]]\+ %abC123890xyz= (1,4)
193 BH [[:digit:]]\+ %abC123890xyz= (4,10)
194 BH [^[:digit:]]\+ %abC123890xyz= (0,4)
195 BH$ [[:print:]]\\+ \n %abC12\f (1,8)
196 BH$ [[:upper:]]\\+ \n aBCDEFGHIJKLMNOPQRSTUVWXYz (3,27)
197 BHi$ [[:upper:]]\\+ \n aBCDEFGHIJKLMNOPQRSTUVWXYz (2,28)
198 BH$ [[:blank:]]\\+ \na \t b (2,5)
199 BH$ [[:graph:]]\\+ \n %abC12\f (2,8)
200 BH [[:punct:]]\+ a~!@#$%^&*()_+=-`[]{};':"|\,./?>< (1,33)
201 BH [[:xdigit:]]\+ -0123456789ABCDEFabcdef (1,23)
202 BH [[:bogus-character-class-name:] NULL ECTYPE
203 # Range expressions (assuming that the C locale is being used)
204 BH [a-z]\+ ABCabcxyzABC (3,9)
205 BH [z-a]\+ NULL ERANGE
206 BH [a-b-c] NULL ERANGE
207 BH [a-a]\+ zaaaaab (1,6)
208 BH [--Z]\+ !ABC-./XYZ~ (1,10)
209 BH [*--] - (0,1)
210 BH SAME * (0,1)
211 BH [*--Z]\+ !+*,---ABC (1,7)
212 BH [a-]\+ xa-a--a-ay (1,9)
213 # REG_ICASE and character sets
214 BHi [a-c]* cABbage (0,5)
215 BHi [^a-c]* tObAcCo (0,2)
216 BHi [A-C]* cABbage (0,5)
217 BHi [^A-C]* tObAcCo (0,2)
218 # Complex character sets
219 BH [[:digit:]a-z#$%]\+ __abc#lmn012$x%yz789* (2,20)
220 BHi [[:digit:]a-z#$%]\+ __abcLMN012x%#$yz789* (2,20)
221 BH [^[:digit:]a-z#$%]\+ abc#lmn012$x%yz789--@*,abc (18,23)
222 BHi [^[:digit:]a-z#$%]\+ abc#lmn012$x%yz789--@*,abc (18,23)
223 BHi [^[:digit:]#$%[:xdigit:]]\+ abc#lmn012$x%yz789--@*,abc (4,7)
224 BH [^-]\+ ---afd*(&,ml--- (3,12)
225 BH [^--Z]\+ ---AFD*(&,ml--- (6,12)
226 BHi [^--Z]\+ ---AFD*(&,ml--- (6,10)
227 # Miscellaneous tests
228 BH abc\(\(de\)\(fg\)\)hi xabcdefghiy (1,10)(4,8)(4,6)(6,8)
229 BH abc*def xabdefy (1,6)
230 BH SAME xabcdefy (1,7)
231 BH SAME xabcccccccdefy (1,13)
232 BH abc\(def\)*ghi xabcghiy (1,7)(?,?)
233 BH SAME xabcdefghi (1,10)(4,7)
234 BH SAME xabcdefdefdefghi (1,16)(10,13)
235 BH a\? aaaaa (0,1)
236 BH SAME xaaaaa (0,0)
237 BH a\+ aaaaa (0,5)
238 BH 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.
244 BH ^abc abcdef (0,3)
245 BHb SAME abcdef NOMATCH
246 BH SAME xyzabcdef NOMATCH
247 BHb SAME xyzabcdef NOMATCH
248 BH$ SAME \nabcdef NOMATCH
249 BHb$ 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.
252 BH abc$ defabc (3,6)
253 BHe SAME defabc NOMATCH
254 BH SAME defabcxyz NOMATCH
255 BHe SAME defabcxyz NOMATCH
256 BH$ SAME defabc\n NOMATCH
257 BHe$ SAME defabc\n NOMATCH
258 BH ^abc$ abc (0,3)
259 BHb SAME abc NOMATCH
260 BHe SAME abc NOMATCH
261 BHbe SAME abc NOMATCH
262 BH$ SAME \nabc\n NOMATCH
263 BH$ SAME defabc\n NOMATCH
264 BH$ SAME \nabcdef NOMATCH
265 BH SAME abcdef NOMATCH
266 BH SAME defabc NOMATCH
267 BH$ SAME abc\ndef NOMATCH
268 BH$ 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.
273 BHn ^abc abcdef (0,3)
274 BHbn SAME abcdef NOMATCH
275 BHn SAME xyzabcdef NOMATCH
276 BHbn SAME xyzabcdef NOMATCH
277 BHn$ SAME \nabcdef (1,4)
278 BHbn$ SAME \nabcdef (1,4)
279 BHn abc$ defabc (3,6)
280 BHen SAME defabc NOMATCH
281 BHn SAME defabcxyz NOMATCH
282 BHen SAME defabcxyz NOMATCH
283 BHn$ SAME defabc\n (3,6)
284 BHen$ SAME defabc\n (3,6)
285 BHn ^abc$ abc (0,3)
286 BHbn SAME abc NOMATCH
287 BHen SAME abc NOMATCH
288 BHben SAME abc NOMATCH
289 BHn$ SAME \nabc\n (1,4)
290 BHn$ SAME defabc\n NOMATCH
291 BHn$ SAME \nabcdef NOMATCH
292 BHn SAME abcdef NOMATCH
293 BHbn SAME abcdef NOMATCH
294 BHn SAME defabc NOMATCH
295 BHen SAME defabc NOMATCH
296 BHn$ SAME abc\ndef (0,3)
297 BHbn$ SAME abc\ndef NOMATCH
298 BHen$ SAME abc\ndef (0,3)
299 BHbn$ SAME abc\ndef NOMATCH
300 BHn$ SAME def\nabc (4,7)
301 BHbn$ SAME def\nabc (4,7)
302 BHen$ SAME def\nabc NOMATCH
303 BHben$ 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.
306 BH a\{0,1\}^bc bc NOMATCH
307 BH SAME ^bc (0,3)
308 BH SAME abc NOMATCH
309 BH SAME a^bc (0,4)
310 BH a\{0,1\}\(^bc\) bc (0,2)(0,2)
311 BH SAME ^bc NOMATCH
312 BH SAME abc NOMATCH
313 BH SAME a^bc NOMATCH
314 BH (^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.
317 BH ab$c\{0,1\} ab NOMATCH
318 BH SAME ab$ (0,3)
319 BH SAME abc NOMATCH
320 BH SAME ab$c (0,4)
321 BH \(ab$\)c\{0,1\} ab (0,2)(0,2)
322 BH SAME ab$ NOMATCH
323 BH SAME abc NOMATCH
324 BH SAME ab$c NOMATCH
325 BH a$) a$) (0,3)
326 # Miscellaneous tests for `^' and `$'
327 BH foo^$ foo NOMATCH
328 # For BRE, $ and ^ not magic
329 #En$ x$\n^y foo\nybarx\nyes\n (8,11)
330 BH ^$ x NOMATCH
331 BH SAME NULL (0,0)
332 BH$ SAME \n NOMATCH
333 BHn ^$ x NOMATCH
334 BHn SAME NULL (0,0)
335 BHn$ SAME \n (0,0)
336 # REG_NEWLINE causes `.' not to match newlines
337 BH$ .* ab\ncd (0,5)
338 BHn$ .* ab\ncd (0,2)
339 # Tests for nonstandard syntax extensions (Enhanced mode off)
340 #
341 # Zero width assertions
342 BH \<x aax xaa (4,5)
343 BH SAME xaa (0,1)
344 BH x\> axx xaa (2,3)
345 BH SAME aax (2,3)
346 BH \bx axx xaa (4,5)
347 BH SAME aax NOMATCH
348 BH SAME xax (0,1)
349 BH x\b axx xaa (2,3)
350 BH SAME aax (2,3)
351 BH SAME xaa NOMATCH
352 BH \Bx aax xxa (2,3)
353 BH \Bx\b aax xxx (2,3)
354 BH \<. ;xaa (1,2)
355 # Shorthands for character classes
356 BH \w\{1,\} ,.(a23_Nt-öo) (3,9)
357 BH \d\{1,\} uR120_4=v4 (2,5)
358 BH \D\{1,\} 120d_=vA4s (3,8)
359 BH \w\+ ,.(a23_Nt-öo) (3,9)
360 BH \d\+ uR120_4=v4 (2,5)
361 BH \D\+ 120d_=vA4s (3,8)
362 # Quoted special characters
363 B$H \\t \t (0,1)
364 B$H \\e \033 (0,1)
365 # Test the \x1B and \x{263a} extensions for specifying 8 bit and wide
366 # characters in hexadecimal.
367 BH \x41 ABC (0,1)
368 B$H \\x5 \005 (0,1)
369 B$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)
374 BH \x{41} ABC (0,1)
375 B$H \\x{5} \005 (0,1)
376 B$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
405 BH a\{0,0\} aaa (0,0)
406 BH a\{0,1\} aaa (0,1)
407 BH a\{1,1\} aaa (0,1)
408 BH a\{1,3\} xaaaaa (1,4)
409 BH a\{0,3\} aaaaa (0,3)
410 BH a\{0,\} NULL (0,0)
411 BH SAME a (0,1)
412 BH SAME aa (0,2)
413 BH SAME aaa (0,3)
414 BH a\{1,\} NULL NOMATCH
415 BH SAME a (0,1)
416 BH SAME aa (0,2)
417 BH SAME aaa (0,3)
418 BH a\{2,\} NULL NOMATCH
419 BH SAME a NOMATCH
420 BH SAME aa (0,2)
421 BH SAME aaa (0,3)
422 BH a\{3,\} NULL NOMATCH
423 BH SAME a NOMATCH
424 BH SAME aa NOMATCH
425 BH SAME aaa (0,3)
426 BH SAME aaaa (0,4)
427 BH SAME aaaaa (0,5)
428 BH SAME aaaaaa (0,6)
429 BH SAME aaaaaaa (0,7)
430 BH a\{5,10\} aaaaaaa (0,7)
431 BH a\{6,6\} aaaaaaaaaaaa (0,6)
432 BH SAME xxaaaaaaaaaaaa (2,8)
433 BH SAME xxaaaaa NOMATCH
434 BH a\{5,6\} aaaaaaaaaaaa (0,6)
435 BH SAME xxaaaaaaaaaaaa (2,8)
436 BH SAME xxaaaaa (2,7)
437 BH SAME xxaaaa NOMATCH
438 # Trickier ones...
439 BH \([ab]\{5,10\}\)*b bbbbbabaaaaab (0,13)(7,12)
440 BH SAME bbbbbbaaaaab (0,12)(6,11)
441 BH SAME bbbbbbaaaab (0,11)(0,10)
442 BH SAME bbbbbbaaab (0,10)(0,9)
443 BH SAME bbbbbbaab (0,9)(0,8)
444 BH SAME bbbbbbab (0,8)(0,7)
445 BH \([ab]*\)\(ab[ab]\{5,10\}\)ba abbabbbabaabbbbbbbbbbbbbabaaaabab (0,10)(0,0)(0,8)
446 BH SAME abbabbbabaabbbbbbbbbbbbabaaaaabab (0,32)(0,23)(23,30)
447 BH SAME abbabbbabaabbbbbbbbbbbbabaaaabab (0,24)(0,10)(10,22)
448 BH SAME abbabbbabaabbbbbbbbbbbba (0,24)(0,10)(10,22)
449 # Test repeating something that has submatches inside
450 BH \(a\)\{0,5\} NULL (0,0)(?,?)
451 BH SAME a (0,1)(0,1)
452 BH SAME aa (0,2)(1,2)
453 BH SAME aaa (0,3)(2,3)
454 BH SAME aaaa (0,4)(3,4)
455 BH SAME aaaaa (0,5)(4,5)
456 BH SAME aaaaaa (0,5)(4,5)
457 BH \(a\)\{2,3\} NULL NOMATCH
458 BH SAME a NOMATCH
459 BH SAME aa (0,2)(1,2)
460 BH SAME aaa (0,3)(2,3)
461 BH SAME aaaa (0,3)(2,3)
462 BH \(a\)\{4\} aaaa (0,4)(3,4)
463 BH \(a*\)\{2\} a (0,1)(1,1)
464 BH \(\(..\)\|\(.\)\)\{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)
470 BH \(\(..\)\{2\}.\)\{3\} xxxxxxxxxxxxxx NOMATCH
471 BH SAME xxxxxxxxxxxxxxx (0,15)(10,15)(12,14)
472 BH \(\(..\)\{1,2\}.\)\{3\} xxxxxxxx NOMATCH
473 BH SAME xxxxxxxxx (0,9)(6,9)(6,8)
474 BH SAME xxxxxxxxxx (0,9)(6,9)(6,8)
475 BH 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
487 BH$ \\([a-z]\\+\\)\\{2,5\\} a\n NOMATCH
488 BH$ SAME aa\n (0,2)(1,2)
489 # Multiple repeats in one regexp
490 BH a\{3\}b\{3\} aaabbb (0,6)
491 BH SAME aaabbbb (0,6)
492 BH SAME aaaabbb (1,7)
493 BH SAME aabbb NOMATCH
494 BH 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
502 BH ^!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
504 BH \([a-z]*\) \1 foobar foobar (0,13)(0,6)
505 # Searching for a leftmost longest square (repeated string)
506 BH \(.*\)\1 foobarfoobar (0,12)(0,6)
507 BH a\(b\)*c\1 acb NOMATCH
508 BH SAME abbcbbb (0,5)(2,3)
509 BH SAME abbdbd NOMATCH
510 BH \([a-c]*\)\1 abcacdef (0,0)(0,0)
511 BH SAME abcabcabcd (0,6)(0,3)
512 BH \(a*\)*\(x\)\(\1\) x (0,1)(0,0)(0,1)(1,1)
513 BH SAME ax (0,2)(1,1)(1,2)(2,2)
514 BH \(a\)\1\{1,2\} aabc (0,2)(0,1)
515 BH \(\)\(\1\1\)* NULL (0,0)(0,0)(0,0)
516 # Check that back references work with REG_NOSUB
517 BHw \(o\)\1 foobar NULL
518 BH \(o\)\1 foobar (1,3)(1,2)
519 BH SAME fobar NOMATCH
520 BH \1foo NULL ESUBREG
521 BH \1foo\(bar\) x ESUBREG
522 # Back reference with zero-width assertion
523 BH \(.\)\1$ foox NOMATCH
524 BH SAME foo (1,3)(1,2)
525 # Back references together with {}
526 BH \([0-9]\{5\}\)\1 12345 NOMATCH
527 BH SAME 1234512345 (0,10)(0,5)
528 BH \([0-9]\{4\}\)\1 1234 NOMATCH
529 BH SAME 12341234 (0,8)(0,4)
530 # Test lack of minimal repetitions (non-greedy repetitions)
531 #
532 # Basic
533 BH .*\? ab?d (0,3)
534 BH .\+\? ab?d (0,3)
535 BH .\?\? a?cd (0,2)
536 BH .\{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 \|
542 BH \(a\|^b\) bas (0,1)(0,1)
543 # Lack of minimal repetition
544 BH a*? a? (0,2)