]>
Commit | Line | Data |
---|---|---|
5f125488 A |
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) |