1 | ;
|
---|
2 | ;
|
---|
3 | ; this file contains a script of tests to run through regress.exe
|
---|
4 | ;
|
---|
5 | ; comments start with a semicolon and proceed to the end of the line
|
---|
6 | ;
|
---|
7 | ; changes to regular expression compile flags start with a "-" as the first
|
---|
8 | ; non-whitespace character and consist of a list of the printable names
|
---|
9 | ; of the flags, for example "match_default"
|
---|
10 | ;
|
---|
11 | ; Other lines contain a test to perform using the current flag status
|
---|
12 | ; the first token contains the expression to compile, the second the string
|
---|
13 | ; to match it against. If the second string is "!" then the expression should
|
---|
14 | ; not compile, that is the first string is an invalid regular expression.
|
---|
15 | ; This is then followed by a list of integers that specify what should match,
|
---|
16 | ; each pair represents the starting and ending positions of a subexpression
|
---|
17 | ; starting with the zeroth subexpression (the whole match).
|
---|
18 | ; A value of -1 indicates that the subexpression should not take part in the
|
---|
19 | ; match at all, if the first value is -1 then no part of the expression should
|
---|
20 | ; match the string.
|
---|
21 | ;
|
---|
22 | ; Tests taken from BOOST testsuite and adapted to glibc regex.
|
---|
23 | ;
|
---|
24 | ; Boost Software License - Version 1.0 - August 17th, 2003
|
---|
25 | ;
|
---|
26 | ; Permission is hereby granted, free of charge, to any person or organization
|
---|
27 | ; obtaining a copy of the software and accompanying documentation covered by
|
---|
28 | ; this license (the "Software") to use, reproduce, display, distribute,
|
---|
29 | ; execute, and transmit the Software, and to prepare derivative works of the
|
---|
30 | ; Software, and to permit third-parties to whom the Software is furnished to
|
---|
31 | ; do so, all subject to the following:
|
---|
32 | ;
|
---|
33 | ; The copyright notices in the Software and this entire statement, including
|
---|
34 | ; the above license grant, this restriction and the following disclaimer,
|
---|
35 | ; must be included in all copies of the Software, in whole or in part, and
|
---|
36 | ; all derivative works of the Software, unless such copies or derivative
|
---|
37 | ; works are solely in the form of machine-executable object code generated by
|
---|
38 | ; a source language processor.
|
---|
39 | ;
|
---|
40 | ; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
---|
41 | ; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
---|
42 | ; FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
---|
43 | ; SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
---|
44 | ; FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
---|
45 | ; ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
---|
46 | ; DEALINGS IN THE SOFTWARE.
|
---|
47 | ;
|
---|
48 |
|
---|
49 | - match_default normal REG_EXTENDED
|
---|
50 |
|
---|
51 | ;
|
---|
52 | ; try some really simple literals:
|
---|
53 | a a 0 1
|
---|
54 | Z Z 0 1
|
---|
55 | Z aaa -1 -1
|
---|
56 | Z xxxxZZxxx 4 5
|
---|
57 |
|
---|
58 | ; and some simple brackets:
|
---|
59 | (a) zzzaazz 3 4 3 4
|
---|
60 | () zzz 0 0 0 0
|
---|
61 | () "" 0 0 0 0
|
---|
62 | ( !
|
---|
63 | ) ) 0 1
|
---|
64 | (aa !
|
---|
65 | aa) baa)b 1 4
|
---|
66 | a b -1 -1
|
---|
67 | \(\) () 0 2
|
---|
68 | \(a\) (a) 0 3
|
---|
69 | \() () 0 2
|
---|
70 | (\) !
|
---|
71 | p(a)rameter ABCparameterXYZ 3 12 4 5
|
---|
72 | [pq](a)rameter ABCparameterXYZ 3 12 4 5
|
---|
73 |
|
---|
74 | ; now try escaped brackets:
|
---|
75 | - match_default bk_parens REG_BASIC
|
---|
76 | \(a\) zzzaazz 3 4 3 4
|
---|
77 | \(\) zzz 0 0 0 0
|
---|
78 | \(\) "" 0 0 0 0
|
---|
79 | \( !
|
---|
80 | \) !
|
---|
81 | \(aa !
|
---|
82 | aa\) !
|
---|
83 | () () 0 2
|
---|
84 | (a) (a) 0 3
|
---|
85 | (\) !
|
---|
86 | \() !
|
---|
87 |
|
---|
88 | ; now move on to "." wildcards
|
---|
89 | - match_default normal REG_EXTENDED REG_STARTEND
|
---|
90 | . a 0 1
|
---|
91 | . \n 0 1
|
---|
92 | . \r 0 1
|
---|
93 | . \0 0 1
|
---|
94 |
|
---|
95 | ;
|
---|
96 | ; now move on to the repetion ops,
|
---|
97 | ; starting with operator *
|
---|
98 | - match_default normal REG_EXTENDED
|
---|
99 | a* b 0 0
|
---|
100 | ab* a 0 1
|
---|
101 | ab* ab 0 2
|
---|
102 | ab* sssabbbbbbsss 3 10
|
---|
103 | ab*c* a 0 1
|
---|
104 | ab*c* abbb 0 4
|
---|
105 | ab*c* accc 0 4
|
---|
106 | ab*c* abbcc 0 5
|
---|
107 | *a !
|
---|
108 | \<* !
|
---|
109 | \>* !
|
---|
110 | \n* \n\n 0 2
|
---|
111 | \** ** 0 2
|
---|
112 | \* * 0 1
|
---|
113 |
|
---|
114 | ; now try operator +
|
---|
115 | ab+ a -1 -1
|
---|
116 | ab+ ab 0 2
|
---|
117 | ab+ sssabbbbbbsss 3 10
|
---|
118 | ab+c+ a -1 -1
|
---|
119 | ab+c+ abbb -1 -1
|
---|
120 | ab+c+ accc -1 -1
|
---|
121 | ab+c+ abbcc 0 5
|
---|
122 | +a !
|
---|
123 | \<+ !
|
---|
124 | \>+ !
|
---|
125 | \n+ \n\n 0 2
|
---|
126 | \+ + 0 1
|
---|
127 | \+ ++ 0 1
|
---|
128 | \++ ++ 0 2
|
---|
129 |
|
---|
130 | ; now try operator ?
|
---|
131 | - match_default normal REG_EXTENDED
|
---|
132 | a? b 0 0
|
---|
133 | ab? a 0 1
|
---|
134 | ab? ab 0 2
|
---|
135 | ab? sssabbbbbbsss 3 5
|
---|
136 | ab?c? a 0 1
|
---|
137 | ab?c? abbb 0 2
|
---|
138 | ab?c? accc 0 2
|
---|
139 | ab?c? abcc 0 3
|
---|
140 | ?a !
|
---|
141 | \<? !
|
---|
142 | \>? !
|
---|
143 | \n? \n\n 0 1
|
---|
144 | \? ? 0 1
|
---|
145 | \? ?? 0 1
|
---|
146 | \?? ?? 0 1
|
---|
147 |
|
---|
148 | ; now try operator {}
|
---|
149 | - match_default normal REG_EXTENDED
|
---|
150 | a{2} a -1 -1
|
---|
151 | a{2} aa 0 2
|
---|
152 | a{2} aaa 0 2
|
---|
153 | a{2,} a -1 -1
|
---|
154 | a{2,} aa 0 2
|
---|
155 | a{2,} aaaaa 0 5
|
---|
156 | a{2,4} a -1 -1
|
---|
157 | a{2,4} aa 0 2
|
---|
158 | a{2,4} aaa 0 3
|
---|
159 | a{2,4} aaaa 0 4
|
---|
160 | a{2,4} aaaaa 0 4
|
---|
161 | a{} !
|
---|
162 | a{2 !
|
---|
163 | a} a} 0 2
|
---|
164 | \{\} {} 0 2
|
---|
165 |
|
---|
166 | - match_default normal REG_BASIC
|
---|
167 | a\{2\} a -1 -1
|
---|
168 | a\{2\} aa 0 2
|
---|
169 | a\{2\} aaa 0 2
|
---|
170 | a\{2,\} a -1 -1
|
---|
171 | a\{2,\} aa 0 2
|
---|
172 | a\{2,\} aaaaa 0 5
|
---|
173 | a\{2,4\} a -1 -1
|
---|
174 | a\{2,4\} aa 0 2
|
---|
175 | a\{2,4\} aaa 0 3
|
---|
176 | a\{2,4\} aaaa 0 4
|
---|
177 | a\{2,4\} aaaaa 0 4
|
---|
178 | {} {} 0 2
|
---|
179 |
|
---|
180 | ; now test the alternation operator |
|
---|
181 | - match_default normal REG_EXTENDED
|
---|
182 | a|b a 0 1
|
---|
183 | a|b b 0 1
|
---|
184 | a(b|c) ab 0 2 1 2
|
---|
185 | a(b|c) ac 0 2 1 2
|
---|
186 | a(b|c) ad -1 -1 -1 -1
|
---|
187 | a\| a| 0 2
|
---|
188 |
|
---|
189 | ; now test the set operator []
|
---|
190 | - match_default normal REG_EXTENDED
|
---|
191 | ; try some literals first
|
---|
192 | [abc] a 0 1
|
---|
193 | [abc] b 0 1
|
---|
194 | [abc] c 0 1
|
---|
195 | [abc] d -1 -1
|
---|
196 | [^bcd] a 0 1
|
---|
197 | [^bcd] b -1 -1
|
---|
198 | [^bcd] d -1 -1
|
---|
199 | [^bcd] e 0 1
|
---|
200 | a[b]c abc 0 3
|
---|
201 | a[ab]c abc 0 3
|
---|
202 | a[^ab]c adc 0 3
|
---|
203 | a[]b]c a]c 0 3
|
---|
204 | a[[b]c a[c 0 3
|
---|
205 | a[-b]c a-c 0 3
|
---|
206 | a[^]b]c adc 0 3
|
---|
207 | a[^-b]c adc 0 3
|
---|
208 | a[b-]c a-c 0 3
|
---|
209 | a[b !
|
---|
210 | a[] !
|
---|
211 |
|
---|
212 | ; then some ranges
|
---|
213 | [b-e] a -1 -1
|
---|
214 | [b-e] b 0 1
|
---|
215 | [b-e] e 0 1
|
---|
216 | [b-e] f -1 -1
|
---|
217 | [^b-e] a 0 1
|
---|
218 | [^b-e] b -1 -1
|
---|
219 | [^b-e] e -1 -1
|
---|
220 | [^b-e] f 0 1
|
---|
221 | a[1-3]c a2c 0 3
|
---|
222 | a[3-1]c !
|
---|
223 | a[1-3-5]c !
|
---|
224 | a[1- !
|
---|
225 |
|
---|
226 | ; and some classes
|
---|
227 | a[[:alpha:]]c abc 0 3
|
---|
228 | a[[:unknown:]]c !
|
---|
229 | a[[: !
|
---|
230 | a[[:alpha !
|
---|
231 | a[[:alpha:] !
|
---|
232 | a[[:alpha,:] !
|
---|
233 | a[[:]:]]b !
|
---|
234 | a[[:-:]]b !
|
---|
235 | a[[:alph:]] !
|
---|
236 | a[[:alphabet:]] !
|
---|
237 | [[:alnum:]]+ -%@a0X_- 3 6
|
---|
238 | [[:alpha:]]+ -%@aX_0- 3 5
|
---|
239 | [[:blank:]]+ "a \tb" 1 4
|
---|
240 | [[:cntrl:]]+ a\n\tb 1 3
|
---|
241 | [[:digit:]]+ a019b 1 4
|
---|
242 | [[:graph:]]+ " a%b " 1 4
|
---|
243 | [[:lower:]]+ AabC 1 3
|
---|
244 | ; This test fails with STLPort, disable for now as this is a corner case anyway...
|
---|
245 | ;[[:print:]]+ "\na b\n" 1 4
|
---|
246 | [[:punct:]]+ " %-&\t" 1 4
|
---|
247 | [[:space:]]+ "a \n\t\rb" 1 5
|
---|
248 | [[:upper:]]+ aBCd 1 3
|
---|
249 | [[:xdigit:]]+ p0f3Cx 1 5
|
---|
250 |
|
---|
251 | ; now test flag settings:
|
---|
252 | - escape_in_lists REG_NO_POSIX_TEST
|
---|
253 | [\n] \n 0 1
|
---|
254 | - REG_NO_POSIX_TEST
|
---|
255 |
|
---|
256 | ; line anchors
|
---|
257 | - match_default normal REG_EXTENDED
|
---|
258 | ^ab ab 0 2
|
---|
259 | ^ab xxabxx -1 -1
|
---|
260 | ab$ ab 0 2
|
---|
261 | ab$ abxx -1 -1
|
---|
262 | - match_default match_not_bol match_not_eol normal REG_EXTENDED REG_NOTBOL REG_NOTEOL
|
---|
263 | ^ab ab -1 -1
|
---|
264 | ^ab xxabxx -1 -1
|
---|
265 | ab$ ab -1 -1
|
---|
266 | ab$ abxx -1 -1
|
---|
267 |
|
---|
268 | ; back references
|
---|
269 | - match_default normal REG_PERL
|
---|
270 | a(b)\2c !
|
---|
271 | a(b\1)c !
|
---|
272 | a(b*)c\1d abbcbbd 0 7 1 3
|
---|
273 | a(b*)c\1d abbcbd -1 -1
|
---|
274 | a(b*)c\1d abbcbbbd -1 -1
|
---|
275 | ^(.)\1 abc -1 -1
|
---|
276 | a([bc])\1d abcdabbd 4 8 5 6
|
---|
277 | ; strictly speaking this is at best ambiguous, at worst wrong, this is what most
|
---|
278 | ; re implimentations will match though.
|
---|
279 | a(([bc])\2)*d abbccd 0 6 3 5 3 4
|
---|
280 |
|
---|
281 | a(([bc])\2)*d abbcbd -1 -1
|
---|
282 | a((b)*\2)*d abbbd 0 5 1 4 2 3
|
---|
283 | ; perl only:
|
---|
284 | (ab*)[ab]*\1 ababaaa 0 7 0 1
|
---|
285 | (a)\1bcd aabcd 0 5 0 1
|
---|
286 | (a)\1bc*d aabcd 0 5 0 1
|
---|
287 | (a)\1bc*d aabd 0 4 0 1
|
---|
288 | (a)\1bc*d aabcccd 0 7 0 1
|
---|
289 | (a)\1bc*[ce]d aabcccd 0 7 0 1
|
---|
290 | ^(a)\1b(c)*cd$ aabcccd 0 7 0 1 4 5
|
---|
291 |
|
---|
292 | ; posix only:
|
---|
293 | - match_default extended REG_EXTENDED
|
---|
294 | (ab*)[ab]*\1 ababaaa 0 7 0 1
|
---|
295 |
|
---|
296 | ;
|
---|
297 | ; word operators:
|
---|
298 | \w a 0 1
|
---|
299 | \w z 0 1
|
---|
300 | \w A 0 1
|
---|
301 | \w Z 0 1
|
---|
302 | \w _ 0 1
|
---|
303 | \w } -1 -1
|
---|
304 | \w ` -1 -1
|
---|
305 | \w [ -1 -1
|
---|
306 | \w @ -1 -1
|
---|
307 | ; non-word:
|
---|
308 | \W a -1 -1
|
---|
309 | \W z -1 -1
|
---|
310 | \W A -1 -1
|
---|
311 | \W Z -1 -1
|
---|
312 | \W _ -1 -1
|
---|
313 | \W } 0 1
|
---|
314 | \W ` 0 1
|
---|
315 | \W [ 0 1
|
---|
316 | \W @ 0 1
|
---|
317 | ; word start:
|
---|
318 | \<abcd " abcd" 2 6
|
---|
319 | \<ab cab -1 -1
|
---|
320 | \<ab "\nab" 1 3
|
---|
321 | \<tag ::tag 2 5
|
---|
322 | ;word end:
|
---|
323 | abc\> abc 0 3
|
---|
324 | abc\> abcd -1 -1
|
---|
325 | abc\> abc\n 0 3
|
---|
326 | abc\> abc:: 0 3
|
---|
327 | ; word boundary:
|
---|
328 | \babcd " abcd" 2 6
|
---|
329 | \bab cab -1 -1
|
---|
330 | \bab "\nab" 1 3
|
---|
331 | \btag ::tag 2 5
|
---|
332 | abc\b abc 0 3
|
---|
333 | abc\b abcd -1 -1
|
---|
334 | abc\b abc\n 0 3
|
---|
335 | abc\b abc:: 0 3
|
---|
336 | ; within word:
|
---|
337 | \B ab 1 1
|
---|
338 | a\Bb ab 0 2
|
---|
339 | a\B ab 0 1
|
---|
340 | a\B a -1 -1
|
---|
341 | a\B "a " -1 -1
|
---|
342 |
|
---|
343 | ;
|
---|
344 | ; buffer operators:
|
---|
345 | \`abc abc 0 3
|
---|
346 | \`abc \nabc -1 -1
|
---|
347 | \`abc " abc" -1 -1
|
---|
348 | abc\' abc 0 3
|
---|
349 | abc\' abc\n -1 -1
|
---|
350 | abc\' "abc " -1 -1
|
---|
351 |
|
---|
352 | ;
|
---|
353 | ; now follows various complex expressions designed to try and bust the matcher:
|
---|
354 | a(((b)))c abc 0 3 1 2 1 2 1 2
|
---|
355 | a(b|(c))d abd 0 3 1 2 -1 -1
|
---|
356 | a(b|(c))d acd 0 3 1 2 1 2
|
---|
357 | a(b*|c)d abbd 0 4 1 3
|
---|
358 | ; just gotta have one DFA-buster, of course
|
---|
359 | a[ab]{20} aaaaabaaaabaaaabaaaab 0 21
|
---|
360 | ; and an inline expansion in case somebody gets tricky
|
---|
361 | a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] aaaaabaaaabaaaabaaaab 0 21
|
---|
362 | ; and in case somebody just slips in an NFA...
|
---|
363 | a[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 0 31 21 24 24 31
|
---|
364 | ; one really big one
|
---|
365 | 1234567890123456789012345678901234567890123456789012345678901234567890 a1234567890123456789012345678901234567890123456789012345678901234567890b 1 71
|
---|
366 | ; fish for problems as brackets go past 8
|
---|
367 | [ab][cd][ef][gh][ij][kl][mn] xacegikmoq 1 8
|
---|
368 | [ab][cd][ef][gh][ij][kl][mn][op] xacegikmoq 1 9
|
---|
369 | [ab][cd][ef][gh][ij][kl][mn][op][qr] xacegikmoqy 1 10
|
---|
370 | [ab][cd][ef][gh][ij][kl][mn][op][q] xacegikmoqy 1 10
|
---|
371 | ; and as parenthesis go past 9:
|
---|
372 | (a)(b)(c)(d)(e)(f)(g)(h) zabcdefghi 1 9 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9
|
---|
373 | (a)(b)(c)(d)(e)(f)(g)(h)(i) zabcdefghij 1 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
|
---|
374 | (a)(b)(c)(d)(e)(f)(g)(h)(i)(j) zabcdefghijk 1 11 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11
|
---|
375 | (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k) zabcdefghijkl 1 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12
|
---|
376 | (a)d|(b)c abc 1 3 -1 -1 1 2
|
---|
377 | _+((www)|(ftp)|(mailto)):_* "_wwwnocolon _mailto:" 12 20 13 19 -1 -1 -1 -1 13 19
|
---|
378 |
|
---|
379 | ; subtleties of matching
|
---|
380 | ;a(b)?c\1d acd 0 3 -1 -1
|
---|
381 | ; POSIX is about the following test:
|
---|
382 | a(b)?c\1d acd -1 -1 -1 -1
|
---|
383 | a(b?c)+d accd 0 4 2 3
|
---|
384 | (wee|week)(knights|night) weeknights 0 10 0 3 3 10
|
---|
385 | .* abc 0 3
|
---|
386 | a(b|(c))d abd 0 3 1 2 -1 -1
|
---|
387 | a(b|(c))d acd 0 3 1 2 1 2
|
---|
388 | a(b*|c|e)d abbd 0 4 1 3
|
---|
389 | a(b*|c|e)d acd 0 3 1 2
|
---|
390 | a(b*|c|e)d ad 0 2 1 1
|
---|
391 | a(b?)c abc 0 3 1 2
|
---|
392 | a(b?)c ac 0 2 1 1
|
---|
393 | a(b+)c abc 0 3 1 2
|
---|
394 | a(b+)c abbbc 0 5 1 4
|
---|
395 | a(b*)c ac 0 2 1 1
|
---|
396 | (a|ab)(bc([de]+)f|cde) abcdef 0 6 0 1 1 6 3 5
|
---|
397 | a([bc]?)c abc 0 3 1 2
|
---|
398 | a([bc]?)c ac 0 2 1 1
|
---|
399 | a([bc]+)c abc 0 3 1 2
|
---|
400 | a([bc]+)c abcc 0 4 1 3
|
---|
401 | a([bc]+)bc abcbc 0 5 1 3
|
---|
402 | a(bb+|b)b abb 0 3 1 2
|
---|
403 | a(bbb+|bb+|b)b abb 0 3 1 2
|
---|
404 | a(bbb+|bb+|b)b abbb 0 4 1 3
|
---|
405 | a(bbb+|bb+|b)bb abbb 0 4 1 2
|
---|
406 | (.*).* abcdef 0 6 0 6
|
---|
407 | (a*)* bc 0 0 0 0
|
---|
408 | xyx*xz xyxxxxyxxxz 5 11
|
---|
409 |
|
---|
410 | ; do we get the right subexpression when it is used more than once?
|
---|
411 | a(b|c)*d ad 0 2 -1 -1
|
---|
412 | a(b|c)*d abcd 0 4 2 3
|
---|
413 | a(b|c)+d abd 0 3 1 2
|
---|
414 | a(b|c)+d abcd 0 4 2 3
|
---|
415 | a(b|c?)+d ad 0 2 1 1
|
---|
416 | a(b|c){0,0}d ad 0 2 -1 -1
|
---|
417 | a(b|c){0,1}d ad 0 2 -1 -1
|
---|
418 | a(b|c){0,1}d abd 0 3 1 2
|
---|
419 | a(b|c){0,2}d ad 0 2 -1 -1
|
---|
420 | a(b|c){0,2}d abcd 0 4 2 3
|
---|
421 | a(b|c){0,}d ad 0 2 -1 -1
|
---|
422 | a(b|c){0,}d abcd 0 4 2 3
|
---|
423 | a(b|c){1,1}d abd 0 3 1 2
|
---|
424 | a(b|c){1,2}d abd 0 3 1 2
|
---|
425 | a(b|c){1,2}d abcd 0 4 2 3
|
---|
426 | a(b|c){1,}d abd 0 3 1 2
|
---|
427 | a(b|c){1,}d abcd 0 4 2 3
|
---|
428 | a(b|c){2,2}d acbd 0 4 2 3
|
---|
429 | a(b|c){2,2}d abcd 0 4 2 3
|
---|
430 | a(b|c){2,4}d abcd 0 4 2 3
|
---|
431 | a(b|c){2,4}d abcbd 0 5 3 4
|
---|
432 | a(b|c){2,4}d abcbcd 0 6 4 5
|
---|
433 | a(b|c){2,}d abcd 0 4 2 3
|
---|
434 | a(b|c){2,}d abcbd 0 5 3 4
|
---|
435 | ; perl only: these conflict with the POSIX test below
|
---|
436 | ;a(b|c?)+d abcd 0 4 3 3
|
---|
437 | ;a(b+|((c)*))+d abd 0 3 2 2 2 2 -1 -1
|
---|
438 | ;a(b+|((c)*))+d abcd 0 4 3 3 3 3 2 3
|
---|
439 |
|
---|
440 | ; posix only:
|
---|
441 | - match_default extended REG_EXTENDED REG_STARTEND
|
---|
442 |
|
---|
443 | a(b|c?)+d abcd 0 4 2 3
|
---|
444 | a(b|((c)*))+d abcd 0 4 2 3 2 3 2 3
|
---|
445 | a(b+|((c)*))+d abd 0 3 1 2 -1 -1 -1 -1
|
---|
446 | a(b+|((c)*))+d abcd 0 4 2 3 2 3 2 3
|
---|
447 | a(b|((c)*))+d ad 0 2 1 1 1 1 -1 -1
|
---|
448 | a(b|((c)*))*d abcd 0 4 2 3 2 3 2 3
|
---|
449 | a(b+|((c)*))*d abd 0 3 1 2 -1 -1 -1 -1
|
---|
450 | a(b+|((c)*))*d abcd 0 4 2 3 2 3 2 3
|
---|
451 | a(b|((c)*))*d ad 0 2 1 1 1 1 -1 -1
|
---|
452 |
|
---|
453 | - match_default normal REG_PERL
|
---|
454 | ; try to match C++ syntax elements:
|
---|
455 | ; line comment:
|
---|
456 | //[^\n]* "++i //here is a line comment\n" 4 28
|
---|
457 | ; block comment:
|
---|
458 | /\*([^*]|\*+[^*/])*\*+/ "/* here is a block comment */" 0 29 26 27
|
---|
459 | /\*([^*]|\*+[^*/])*\*+/ "/**/" 0 4 -1 -1
|
---|
460 | /\*([^*]|\*+[^*/])*\*+/ "/***/" 0 5 -1 -1
|
---|
461 | /\*([^*]|\*+[^*/])*\*+/ "/****/" 0 6 -1 -1
|
---|
462 | /\*([^*]|\*+[^*/])*\*+/ "/*****/" 0 7 -1 -1
|
---|
463 | /\*([^*]|\*+[^*/])*\*+/ "/*****/*/" 0 7 -1 -1
|
---|
464 | ; preprossor directives:
|
---|
465 | ^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol" 0 19 -1 -1
|
---|
466 | ^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) #x" 0 25 -1 -1
|
---|
467 | ; perl only:
|
---|
468 | ^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) \\ \r\n foo();\\\r\n printf(#x);" 0 53 30 42
|
---|
469 | ; literals:
|
---|
470 | ((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFF 0 4 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1
|
---|
471 | ((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 35 0 2 0 2 -1 -1 0 2 -1 -1 -1 -1 -1 -1
|
---|
472 | ((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFu 0 5 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1
|
---|
473 | ((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFL 0 5 0 4 0 4 -1 -1 4 5 -1 -1 -1 -1
|
---|
474 | ((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFFFFFFFFFFFFFFFuint64 0 24 0 18 0 18 -1 -1 19 24 19 24 22 24
|
---|
475 | ; strings:
|
---|
476 | '([^\\']|\\.)*' '\\x3A' 0 6 4 5
|
---|
477 | '([^\\']|\\.)*' '\\'' 0 4 1 3
|
---|
478 | '([^\\']|\\.)*' '\\n' 0 4 1 3
|
---|
479 |
|
---|
480 | ; finally try some case insensitive matches:
|
---|
481 | - match_default normal REG_EXTENDED REG_ICASE
|
---|
482 | ; upper and lower have no meaning here so they fail, however these
|
---|
483 | ; may compile with other libraries...
|
---|
484 | ;[[:lower:]] !
|
---|
485 | ;[[:upper:]] !
|
---|
486 | 0123456789@abcdefghijklmnopqrstuvwxyz\[\\\]\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ\{\|\} 0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]\^_`abcdefghijklmnopqrstuvwxyz\{\|\} 0 72
|
---|
487 |
|
---|
488 | ; known and suspected bugs:
|
---|
489 | - match_default normal REG_EXTENDED
|
---|
490 | \( ( 0 1
|
---|
491 | \) ) 0 1
|
---|
492 | \$ $ 0 1
|
---|
493 | \^ ^ 0 1
|
---|
494 | \. . 0 1
|
---|
495 | \* * 0 1
|
---|
496 | \+ + 0 1
|
---|
497 | \? ? 0 1
|
---|
498 | \[ [ 0 1
|
---|
499 | \] ] 0 1
|
---|
500 | \| | 0 1
|
---|
501 | \\ \\ 0 1
|
---|
502 | # # 0 1
|
---|
503 | \# # 0 1
|
---|
504 | a- a- 0 2
|
---|
505 | \- - 0 1
|
---|
506 | \{ { 0 1
|
---|
507 | \} } 0 1
|
---|
508 | 0 0 0 1
|
---|
509 | 1 1 0 1
|
---|
510 | 9 9 0 1
|
---|
511 | b b 0 1
|
---|
512 | B B 0 1
|
---|
513 | < < 0 1
|
---|
514 | > > 0 1
|
---|
515 | w w 0 1
|
---|
516 | W W 0 1
|
---|
517 | ` ` 0 1
|
---|
518 | ' ' 0 1
|
---|
519 | \n \n 0 1
|
---|
520 | , , 0 1
|
---|
521 | a a 0 1
|
---|
522 | f f 0 1
|
---|
523 | n n 0 1
|
---|
524 | r r 0 1
|
---|
525 | t t 0 1
|
---|
526 | v v 0 1
|
---|
527 | c c 0 1
|
---|
528 | x x 0 1
|
---|
529 | : : 0 1
|
---|
530 | (\.[[:alnum:]]+){2} "w.a.b " 1 5 3 5
|
---|
531 |
|
---|
532 | - match_default normal REG_EXTENDED REG_ICASE
|
---|
533 | a A 0 1
|
---|
534 | A a 0 1
|
---|
535 | [abc]+ abcABC 0 6
|
---|
536 | [ABC]+ abcABC 0 6
|
---|
537 | [a-z]+ abcABC 0 6
|
---|
538 | [A-Z]+ abzANZ 0 6
|
---|
539 | [a-Z]+ abzABZ 0 6
|
---|
540 | [A-z]+ abzABZ 0 6
|
---|
541 | [[:lower:]]+ abyzABYZ 0 8
|
---|
542 | [[:upper:]]+ abzABZ 0 6
|
---|
543 | [[:alpha:]]+ abyzABYZ 0 8
|
---|
544 | [[:alnum:]]+ 09abyzABYZ 0 10
|
---|
545 |
|
---|
546 | ; word start:
|
---|
547 | \<abcd " abcd" 2 6
|
---|
548 | \<ab cab -1 -1
|
---|
549 | \<ab "\nab" 1 3
|
---|
550 | \<tag ::tag 2 5
|
---|
551 | ;word end:
|
---|
552 | abc\> abc 0 3
|
---|
553 | abc\> abcd -1 -1
|
---|
554 | abc\> abc\n 0 3
|
---|
555 | abc\> abc:: 0 3
|
---|
556 |
|
---|
557 | ; collating elements and rewritten set code:
|
---|
558 | - match_default normal REG_EXTENDED REG_STARTEND
|
---|
559 | ;[[.zero.]] 0 0 1
|
---|
560 | ;[[.one.]] 1 0 1
|
---|
561 | ;[[.two.]] 2 0 1
|
---|
562 | ;[[.three.]] 3 0 1
|
---|
563 | [[.a.]] baa 1 2
|
---|
564 | ;[[.right-curly-bracket.]] } 0 1
|
---|
565 | ;[[.NUL.]] \0 0 1
|
---|
566 | [[:<:]z] !
|
---|
567 | [a[:>:]] !
|
---|
568 | [[=a=]] a 0 1
|
---|
569 | ;[[=right-curly-bracket=]] } 0 1
|
---|
570 | - match_default normal REG_EXTENDED REG_STARTEND REG_ICASE
|
---|
571 | [[.A.]] A 0 1
|
---|
572 | [[.A.]] a 0 1
|
---|
573 | [[.A.]-b]+ AaBb 0 4
|
---|
574 | [A-[.b.]]+ AaBb 0 4
|
---|
575 | [[.a.]-B]+ AaBb 0 4
|
---|
576 | [a-[.B.]]+ AaBb 0 4
|
---|
577 | - match_default normal REG_EXTENDED REG_STARTEND
|
---|
578 | [[.a.]-c]+ abcd 0 3
|
---|
579 | [a-[.c.]]+ abcd 0 3
|
---|
580 | [[:alpha:]-a] !
|
---|
581 | [a-[:alpha:]] !
|
---|
582 |
|
---|
583 | ; try mutli-character ligatures:
|
---|
584 | ;[[.ae.]] ae 0 2
|
---|
585 | ;[[.ae.]] aE -1 -1
|
---|
586 | ;[[.AE.]] AE 0 2
|
---|
587 | ;[[.Ae.]] Ae 0 2
|
---|
588 | ;[[.ae.]-b] a -1 -1
|
---|
589 | ;[[.ae.]-b] b 0 1
|
---|
590 | ;[[.ae.]-b] ae 0 2
|
---|
591 | ;[a-[.ae.]] a 0 1
|
---|
592 | ;[a-[.ae.]] b -1 -1
|
---|
593 | ;[a-[.ae.]] ae 0 2
|
---|
594 | - match_default normal REG_EXTENDED REG_STARTEND REG_ICASE
|
---|
595 | ;[[.ae.]] AE 0 2
|
---|
596 | ;[[.ae.]] Ae 0 2
|
---|
597 | ;[[.AE.]] Ae 0 2
|
---|
598 | ;[[.Ae.]] aE 0 2
|
---|
599 | ;[[.AE.]-B] a -1 -1
|
---|
600 | ;[[.Ae.]-b] b 0 1
|
---|
601 | ;[[.Ae.]-b] B 0 1
|
---|
602 | ;[[.ae.]-b] AE 0 2
|
---|
603 |
|
---|
604 | - match_default normal REG_EXTENDED REG_STARTEND REG_NO_POSIX_TEST
|
---|
605 | \s+ "ab ab" 2 5
|
---|
606 | \S+ " abc " 2 5
|
---|
607 |
|
---|
608 | - match_default normal REG_EXTENDED REG_STARTEND
|
---|
609 | \`abc abc 0 3
|
---|
610 | \`abc aabc -1 -1
|
---|
611 | abc\' abc 0 3
|
---|
612 | abc\' abcd -1 -1
|
---|
613 | abc\' abc\n\n -1 -1
|
---|
614 | abc\' abc 0 3
|
---|
615 |
|
---|
616 | ; extended repeat checking to exercise new algorithms:
|
---|
617 | ab.*xy abxy_ 0 4
|
---|
618 | ab.*xy ab_xy_ 0 5
|
---|
619 | ab.*xy abxy 0 4
|
---|
620 | ab.*xy ab_xy 0 5
|
---|
621 | ab.* ab 0 2
|
---|
622 | ab.* ab__ 0 4
|
---|
623 |
|
---|
624 | ab.{2,5}xy ab__xy_ 0 6
|
---|
625 | ab.{2,5}xy ab____xy_ 0 8
|
---|
626 | ab.{2,5}xy ab_____xy_ 0 9
|
---|
627 | ab.{2,5}xy ab__xy 0 6
|
---|
628 | ab.{2,5}xy ab_____xy 0 9
|
---|
629 | ab.{2,5} ab__ 0 4
|
---|
630 | ab.{2,5} ab_______ 0 7
|
---|
631 | ab.{2,5}xy ab______xy -1 -1
|
---|
632 | ab.{2,5}xy ab_xy -1 -1
|
---|
633 |
|
---|
634 | ab.*?xy abxy_ 0 4
|
---|
635 | ab.*?xy ab_xy_ 0 5
|
---|
636 | ab.*?xy abxy 0 4
|
---|
637 | ab.*?xy ab_xy 0 5
|
---|
638 | ab.*? ab 0 2
|
---|
639 | ab.*? ab__ 0 4
|
---|
640 |
|
---|
641 | ab.{2,5}?xy ab__xy_ 0 6
|
---|
642 | ab.{2,5}?xy ab____xy_ 0 8
|
---|
643 | ab.{2,5}?xy ab_____xy_ 0 9
|
---|
644 | ab.{2,5}?xy ab__xy 0 6
|
---|
645 | ab.{2,5}?xy ab_____xy 0 9
|
---|
646 | ab.{2,5}? ab__ 0 4
|
---|
647 | ab.{2,5}? ab_______ 0 7
|
---|
648 | ab.{2,5}?xy ab______xy -1 -1
|
---|
649 | ab.{2,5}xy ab_xy -1 -1
|
---|
650 |
|
---|
651 | ; again but with slower algorithm variant:
|
---|
652 | - match_default REG_EXTENDED
|
---|
653 | ; now again for single character repeats:
|
---|
654 |
|
---|
655 | ab_*xy abxy_ 0 4
|
---|
656 | ab_*xy ab_xy_ 0 5
|
---|
657 | ab_*xy abxy 0 4
|
---|
658 | ab_*xy ab_xy 0 5
|
---|
659 | ab_* ab 0 2
|
---|
660 | ab_* ab__ 0 4
|
---|
661 |
|
---|
662 | ab_{2,5}xy ab__xy_ 0 6
|
---|
663 | ab_{2,5}xy ab____xy_ 0 8
|
---|
664 | ab_{2,5}xy ab_____xy_ 0 9
|
---|
665 | ab_{2,5}xy ab__xy 0 6
|
---|
666 | ab_{2,5}xy ab_____xy 0 9
|
---|
667 | ab_{2,5} ab__ 0 4
|
---|
668 | ab_{2,5} ab_______ 0 7
|
---|
669 | ab_{2,5}xy ab______xy -1 -1
|
---|
670 | ab_{2,5}xy ab_xy -1 -1
|
---|
671 |
|
---|
672 | ab_*?xy abxy_ 0 4
|
---|
673 | ab_*?xy ab_xy_ 0 5
|
---|
674 | ab_*?xy abxy 0 4
|
---|
675 | ab_*?xy ab_xy 0 5
|
---|
676 | ab_*? ab 0 2
|
---|
677 | ab_*? ab__ 0 4
|
---|
678 |
|
---|
679 | ab_{2,5}?xy ab__xy_ 0 6
|
---|
680 | ab_{2,5}?xy ab____xy_ 0 8
|
---|
681 | ab_{2,5}?xy ab_____xy_ 0 9
|
---|
682 | ab_{2,5}?xy ab__xy 0 6
|
---|
683 | ab_{2,5}?xy ab_____xy 0 9
|
---|
684 | ab_{2,5}? ab__ 0 4
|
---|
685 | ab_{2,5}? ab_______ 0 7
|
---|
686 | ab_{2,5}?xy ab______xy -1 -1
|
---|
687 | ab_{2,5}xy ab_xy -1 -1
|
---|
688 |
|
---|
689 | ; and again for sets:
|
---|
690 | ab[_,;]*xy abxy_ 0 4
|
---|
691 | ab[_,;]*xy ab_xy_ 0 5
|
---|
692 | ab[_,;]*xy abxy 0 4
|
---|
693 | ab[_,;]*xy ab_xy 0 5
|
---|
694 | ab[_,;]* ab 0 2
|
---|
695 | ab[_,;]* ab__ 0 4
|
---|
696 |
|
---|
697 | ab[_,;]{2,5}xy ab__xy_ 0 6
|
---|
698 | ab[_,;]{2,5}xy ab____xy_ 0 8
|
---|
699 | ab[_,;]{2,5}xy ab_____xy_ 0 9
|
---|
700 | ab[_,;]{2,5}xy ab__xy 0 6
|
---|
701 | ab[_,;]{2,5}xy ab_____xy 0 9
|
---|
702 | ab[_,;]{2,5} ab__ 0 4
|
---|
703 | ab[_,;]{2,5} ab_______ 0 7
|
---|
704 | ab[_,;]{2,5}xy ab______xy -1 -1
|
---|
705 | ab[_,;]{2,5}xy ab_xy -1 -1
|
---|
706 |
|
---|
707 | ab[_,;]*?xy abxy_ 0 4
|
---|
708 | ab[_,;]*?xy ab_xy_ 0 5
|
---|
709 | ab[_,;]*?xy abxy 0 4
|
---|
710 | ab[_,;]*?xy ab_xy 0 5
|
---|
711 | ab[_,;]*? ab 0 2
|
---|
712 | ab[_,;]*? ab__ 0 4
|
---|
713 |
|
---|
714 | ab[_,;]{2,5}?xy ab__xy_ 0 6
|
---|
715 | ab[_,;]{2,5}?xy ab____xy_ 0 8
|
---|
716 | ab[_,;]{2,5}?xy ab_____xy_ 0 9
|
---|
717 | ab[_,;]{2,5}?xy ab__xy 0 6
|
---|
718 | ab[_,;]{2,5}?xy ab_____xy 0 9
|
---|
719 | ab[_,;]{2,5}? ab__ 0 4
|
---|
720 | ab[_,;]{2,5}? ab_______ 0 7
|
---|
721 | ab[_,;]{2,5}?xy ab______xy -1 -1
|
---|
722 | ab[_,;]{2,5}xy ab_xy -1 -1
|
---|
723 |
|
---|
724 | ; and again for tricky sets with digraphs:
|
---|
725 | ;ab[_[.ae.]]*xy abxy_ 0 4
|
---|
726 | ;ab[_[.ae.]]*xy ab_xy_ 0 5
|
---|
727 | ;ab[_[.ae.]]*xy abxy 0 4
|
---|
728 | ;ab[_[.ae.]]*xy ab_xy 0 5
|
---|
729 | ;ab[_[.ae.]]* ab 0 2
|
---|
730 | ;ab[_[.ae.]]* ab__ 0 4
|
---|
731 |
|
---|
732 | ;ab[_[.ae.]]{2,5}xy ab__xy_ 0 6
|
---|
733 | ;ab[_[.ae.]]{2,5}xy ab____xy_ 0 8
|
---|
734 | ;ab[_[.ae.]]{2,5}xy ab_____xy_ 0 9
|
---|
735 | ;ab[_[.ae.]]{2,5}xy ab__xy 0 6
|
---|
736 | ;ab[_[.ae.]]{2,5}xy ab_____xy 0 9
|
---|
737 | ;ab[_[.ae.]]{2,5} ab__ 0 4
|
---|
738 | ;ab[_[.ae.]]{2,5} ab_______ 0 7
|
---|
739 | ;ab[_[.ae.]]{2,5}xy ab______xy -1 -1
|
---|
740 | ;ab[_[.ae.]]{2,5}xy ab_xy -1 -1
|
---|
741 |
|
---|
742 | ;ab[_[.ae.]]*?xy abxy_ 0 4
|
---|
743 | ;ab[_[.ae.]]*?xy ab_xy_ 0 5
|
---|
744 | ;ab[_[.ae.]]*?xy abxy 0 4
|
---|
745 | ;ab[_[.ae.]]*?xy ab_xy 0 5
|
---|
746 | ;ab[_[.ae.]]*? ab 0 2
|
---|
747 | ;ab[_[.ae.]]*? ab__ 0 2
|
---|
748 |
|
---|
749 | ;ab[_[.ae.]]{2,5}?xy ab__xy_ 0 6
|
---|
750 | ;ab[_[.ae.]]{2,5}?xy ab____xy_ 0 8
|
---|
751 | ;ab[_[.ae.]]{2,5}?xy ab_____xy_ 0 9
|
---|
752 | ;ab[_[.ae.]]{2,5}?xy ab__xy 0 6
|
---|
753 | ;ab[_[.ae.]]{2,5}?xy ab_____xy 0 9
|
---|
754 | ;ab[_[.ae.]]{2,5}? ab__ 0 4
|
---|
755 | ;ab[_[.ae.]]{2,5}? ab_______ 0 4
|
---|
756 | ;ab[_[.ae.]]{2,5}?xy ab______xy -1 -1
|
---|
757 | ;ab[_[.ae.]]{2,5}xy ab_xy -1 -1
|
---|
758 |
|
---|
759 | ; new bugs detected in spring 2003:
|
---|
760 | - normal match_continuous REG_NO_POSIX_TEST
|
---|
761 | b abc 1 2
|
---|
762 |
|
---|
763 | () abc 0 0 0 0
|
---|
764 | ^() abc 0 0 0 0
|
---|
765 | ^()+ abc 0 0 0 0
|
---|
766 | ^(){1} abc 0 0 0 0
|
---|
767 | ^(){2} abc 0 0 0 0
|
---|
768 | ^((){2}) abc 0 0 0 0 0 0
|
---|
769 | () "" 0 0 0 0
|
---|
770 | ()\1 "" 0 0 0 0
|
---|
771 | ()\1 a 0 0 0 0
|
---|
772 | a()\1b ab 0 2 1 1
|
---|
773 | a()b\1 ab 0 2 1 1
|
---|
774 |
|
---|
775 | ; subtleties of matching with no sub-expressions marked
|
---|
776 | - normal match_nosubs REG_NO_POSIX_TEST
|
---|
777 | a(b?c)+d accd 0 4
|
---|
778 | (wee|week)(knights|night) weeknights 0 10
|
---|
779 | .* abc 0 3
|
---|
780 | a(b|(c))d abd 0 3
|
---|
781 | a(b|(c))d acd 0 3
|
---|
782 | a(b*|c|e)d abbd 0 4
|
---|
783 | a(b*|c|e)d acd 0 3
|
---|
784 | a(b*|c|e)d ad 0 2
|
---|
785 | a(b?)c abc 0 3
|
---|
786 | a(b?)c ac 0 2
|
---|
787 | a(b+)c abc 0 3
|
---|
788 | a(b+)c abbbc 0 5
|
---|
789 | a(b*)c ac 0 2
|
---|
790 | (a|ab)(bc([de]+)f|cde) abcdef 0 6
|
---|
791 | a([bc]?)c abc 0 3
|
---|
792 | a([bc]?)c ac 0 2
|
---|
793 | a([bc]+)c abc 0 3
|
---|
794 | a([bc]+)c abcc 0 4
|
---|
795 | a([bc]+)bc abcbc 0 5
|
---|
796 | a(bb+|b)b abb 0 3
|
---|
797 | a(bbb+|bb+|b)b abb 0 3
|
---|
798 | a(bbb+|bb+|b)b abbb 0 4
|
---|
799 | a(bbb+|bb+|b)bb abbb 0 4
|
---|
800 | (.*).* abcdef 0 6
|
---|
801 | (a*)* bc 0 0
|
---|
802 |
|
---|
803 | - normal nosubs REG_NO_POSIX_TEST
|
---|
804 | a(b?c)+d accd 0 4
|
---|
805 | (wee|week)(knights|night) weeknights 0 10
|
---|
806 | .* abc 0 3
|
---|
807 | a(b|(c))d abd 0 3
|
---|
808 | a(b|(c))d acd 0 3
|
---|
809 | a(b*|c|e)d abbd 0 4
|
---|
810 | a(b*|c|e)d acd 0 3
|
---|
811 | a(b*|c|e)d ad 0 2
|
---|
812 | a(b?)c abc 0 3
|
---|
813 | a(b?)c ac 0 2
|
---|
814 | a(b+)c abc 0 3
|
---|
815 | a(b+)c abbbc 0 5
|
---|
816 | a(b*)c ac 0 2
|
---|
817 | (a|ab)(bc([de]+)f|cde) abcdef 0 6
|
---|
818 | a([bc]?)c abc 0 3
|
---|
819 | a([bc]?)c ac 0 2
|
---|
820 | a([bc]+)c abc 0 3
|
---|
821 | a([bc]+)c abcc 0 4
|
---|
822 | a([bc]+)bc abcbc 0 5
|
---|
823 | a(bb+|b)b abb 0 3
|
---|
824 | a(bbb+|bb+|b)b abb 0 3
|
---|
825 | a(bbb+|bb+|b)b abbb 0 4
|
---|
826 | a(bbb+|bb+|b)bb abbb 0 4
|
---|
827 | (.*).* abcdef 0 6
|
---|
828 | (a*)* bc 0 0
|
---|
829 |
|
---|