Commit | Line | Data |
---|---|---|
07dcc217 VZ |
1 | # regular expression test set |
2 | # Lines are at least three fields, separated by one or more tabs. "" stands | |
3 | # for an empty field. First field is an RE. Second field is flags. If | |
4 | # C flag given, regcomp() is expected to fail, and the third field is the | |
5 | # error name (minus the leading REG_). | |
6 | # | |
7 | # Otherwise it is expected to succeed, and the third field is the string to | |
8 | # try matching it against. If there is no fourth field, the match is | |
9 | # expected to fail. If there is a fourth field, it is the substring that | |
10 | # the RE is expected to match. If there is a fifth field, it is a comma- | |
11 | # separated list of what the subexpressions should match, with - indicating | |
12 | # no match for that one. In both the fourth and fifth fields, a (sub)field | |
13 | # starting with @ indicates that the (sub)expression is expected to match | |
14 | # a null string followed by the stuff after the @; this provides a way to | |
15 | # test where null strings match. The character `N' in REs and strings | |
16 | # is newline, `S' is space, `T' is tab, `Z' is NUL. | |
17 | # | |
18 | # The full list of flags: | |
19 | # - placeholder, does nothing | |
20 | # b RE is a BRE, not an ERE | |
21 | # & try it as both an ERE and a BRE | |
22 | # C regcomp() error expected, third field is error name | |
23 | # i REG_ICASE | |
24 | # m ("mundane") REG_NOSPEC | |
25 | # s REG_NOSUB (not really testable) | |
26 | # n REG_NEWLINE | |
27 | # ^ REG_NOTBOL | |
28 | # $ REG_NOTEOL | |
29 | # # REG_STARTEND (see below) | |
30 | # p REG_PEND | |
31 | # | |
32 | # For REG_STARTEND, the start/end offsets are those of the substring | |
33 | # enclosed in (). | |
34 | ||
35 | # basics | |
36 | a & a a | |
37 | abc & abc abc | |
38 | abc|de - abc abc | |
39 | a|b|c - abc a | |
40 | ||
41 | # parentheses and perversions thereof | |
42 | a(b)c - abc abc | |
43 | a\(b\)c b abc abc | |
44 | a( C EPAREN | |
45 | a( b a( a( | |
46 | a\( - a( a( | |
47 | a\( bC EPAREN | |
48 | a\(b bC EPAREN | |
49 | a(b C EPAREN | |
50 | a(b b a(b a(b | |
51 | # gag me with a right parenthesis -- 1003.2 goofed here (my fault, partly) | |
52 | a) - a) a) | |
53 | ) - ) ) | |
54 | # end gagging (in a just world, those *should* give EPAREN) | |
55 | a) b a) a) | |
56 | a\) bC EPAREN | |
57 | \) bC EPAREN | |
58 | a()b - ab ab | |
59 | a\(\)b b ab ab | |
60 | ||
61 | # anchoring and REG_NEWLINE | |
62 | ^abc$ & abc abc | |
63 | a^b - a^b | |
64 | a^b b a^b a^b | |
65 | a$b - a$b | |
66 | a$b b a$b a$b | |
67 | ^ & abc @abc | |
68 | $ & abc @ | |
69 | ^$ & "" @ | |
70 | $^ - "" @ | |
71 | \($\)\(^\) b "" @ | |
72 | # stop retching, those are legitimate (although disgusting) | |
73 | ^^ - "" @ | |
74 | $$ - "" @ | |
75 | b$ & abNc | |
76 | b$ &n abNc b | |
77 | ^b$ & aNbNc | |
78 | ^b$ &n aNbNc b | |
79 | ^$ &n aNNb @Nb | |
80 | ^$ n abc | |
81 | ^$ n abcN @ | |
82 | $^ n aNNb @Nb | |
83 | \($\)\(^\) bn aNNb @Nb | |
84 | ^^ n^ aNNb @Nb | |
85 | $$ n aNNb @NN | |
86 | ^a ^ a | |
87 | a$ $ a | |
88 | ^a ^n aNb | |
89 | ^b ^n aNb b | |
90 | a$ $n bNa | |
91 | b$ $n bNa b | |
92 | a*(^b$)c* - b b | |
93 | a*\(^b$\)c* b b b | |
94 | ||
95 | # certain syntax errors and non-errors | |
96 | | C EMPTY | |
97 | | b | | | |
98 | * C BADRPT | |
99 | * b * * | |
100 | + C BADRPT | |
101 | ? C BADRPT | |
102 | "" &C EMPTY | |
103 | () - abc @abc | |
104 | \(\) b abc @abc | |
105 | a||b C EMPTY | |
106 | |ab C EMPTY | |
107 | ab| C EMPTY | |
108 | (|a)b C EMPTY | |
109 | (a|)b C EMPTY | |
110 | (*a) C BADRPT | |
111 | (+a) C BADRPT | |
112 | (?a) C BADRPT | |
113 | ({1}a) C BADRPT | |
114 | \(\{1\}a\) bC BADRPT | |
115 | (a|*b) C BADRPT | |
116 | (a|+b) C BADRPT | |
117 | (a|?b) C BADRPT | |
118 | (a|{1}b) C BADRPT | |
119 | ^* C BADRPT | |
120 | ^* b * * | |
121 | ^+ C BADRPT | |
122 | ^? C BADRPT | |
123 | ^{1} C BADRPT | |
124 | ^\{1\} bC BADRPT | |
125 | ||
126 | # metacharacters, backslashes | |
127 | a.c & abc abc | |
128 | a[bc]d & abd abd | |
129 | a\*c & a*c a*c | |
130 | a\\b & a\b a\b | |
131 | a\\\*b & a\*b a\*b | |
132 | a\bc & abc abc | |
133 | a\ &C EESCAPE | |
134 | a\\bc & a\bc a\bc | |
135 | \{ bC BADRPT | |
136 | a\[b & a[b a[b | |
137 | a[b &C EBRACK | |
138 | # trailing $ is a peculiar special case for the BRE code | |
139 | a$ & a a | |
140 | a$ & a$ | |
141 | a\$ & a | |
142 | a\$ & a$ a$ | |
143 | a\\$ & a | |
144 | a\\$ & a$ | |
145 | a\\$ & a\$ | |
146 | a\\$ & a\ a\ | |
147 | ||
148 | # back references, ugh | |
149 | a\(b\)\2c bC ESUBREG | |
150 | a\(b\1\)c bC ESUBREG | |
151 | a\(b*\)c\1d b abbcbbd abbcbbd bb | |
152 | a\(b*\)c\1d b abbcbd | |
153 | a\(b*\)c\1d b abbcbbbd | |
154 | ^\(.\)\1 b abc | |
155 | a\([bc]\)\1d b abcdabbd abbd b | |
156 | a\(\([bc]\)\2\)*d b abbccd abbccd | |
157 | a\(\([bc]\)\2\)*d b abbcbd | |
158 | # actually, this next one probably ought to fail, but the spec is unclear | |
159 | a\(\(b\)*\2\)*d b abbbd abbbd | |
160 | # here is a case that no NFA implementation does right | |
161 | \(ab*\)[ab]*\1 b ababaaa ababaaa a | |
162 | # check out normal matching in the presence of back refs | |
163 | \(a\)\1bcd b aabcd aabcd | |
164 | \(a\)\1bc*d b aabcd aabcd | |
165 | \(a\)\1bc*d b aabd aabd | |
166 | \(a\)\1bc*d b aabcccd aabcccd | |
167 | \(a\)\1bc*[ce]d b aabcccd aabcccd | |
168 | ^\(a\)\1b\(c\)*cd$ b aabcccd aabcccd | |
169 | ||
170 | # ordinary repetitions | |
171 | ab*c & abc abc | |
172 | ab+c - abc abc | |
173 | ab?c - abc abc | |
174 | a\(*\)b b a*b a*b | |
175 | a\(**\)b b ab ab | |
176 | a\(***\)b bC BADRPT | |
177 | *a b *a *a | |
178 | **a b a a | |
179 | ***a bC BADRPT | |
180 | ||
181 | # the dreaded bounded repetitions | |
182 | { & { { | |
183 | {abc & {abc {abc | |
184 | {1 C BADRPT | |
185 | {1} C BADRPT | |
186 | a{b & a{b a{b | |
187 | a{1}b - ab ab | |
188 | a\{1\}b b ab ab | |
189 | a{1,}b - ab ab | |
190 | a\{1,\}b b ab ab | |
191 | a{1,2}b - aab aab | |
192 | a\{1,2\}b b aab aab | |
193 | a{1 C EBRACE | |
194 | a\{1 bC EBRACE | |
195 | a{1a C EBRACE | |
196 | a\{1a bC EBRACE | |
197 | a{1a} C BADBR | |
198 | a\{1a\} bC BADBR | |
199 | a{,2} - a{,2} a{,2} | |
200 | a\{,2\} bC BADBR | |
201 | a{,} - a{,} a{,} | |
202 | a\{,\} bC BADBR | |
203 | a{1,x} C BADBR | |
204 | a\{1,x\} bC BADBR | |
205 | a{1,x C EBRACE | |
206 | a\{1,x bC EBRACE | |
207 | a{300} C BADBR | |
208 | a\{300\} bC BADBR | |
209 | a{1,0} C BADBR | |
210 | a\{1,0\} bC BADBR | |
211 | ab{0,0}c - abcac ac | |
212 | ab\{0,0\}c b abcac ac | |
213 | ab{0,1}c - abcac abc | |
214 | ab\{0,1\}c b abcac abc | |
215 | ab{0,3}c - abbcac abbc | |
216 | ab\{0,3\}c b abbcac abbc | |
217 | ab{1,1}c - acabc abc | |
218 | ab\{1,1\}c b acabc abc | |
219 | ab{1,3}c - acabc abc | |
220 | ab\{1,3\}c b acabc abc | |
221 | ab{2,2}c - abcabbc abbc | |
222 | ab\{2,2\}c b abcabbc abbc | |
223 | ab{2,4}c - abcabbc abbc | |
224 | ab\{2,4\}c b abcabbc abbc | |
225 | ((a{1,10}){1,10}){1,10} - a a a,a | |
226 | ||
227 | # multiple repetitions | |
228 | a** &C BADRPT | |
229 | a++ C BADRPT | |
230 | a?? C BADRPT | |
231 | a*+ C BADRPT | |
232 | a*? C BADRPT | |
233 | a+* C BADRPT | |
234 | a+? C BADRPT | |
235 | a?* C BADRPT | |
236 | a?+ C BADRPT | |
237 | a{1}{1} C BADRPT | |
238 | a*{1} C BADRPT | |
239 | a+{1} C BADRPT | |
240 | a?{1} C BADRPT | |
241 | a{1}* C BADRPT | |
242 | a{1}+ C BADRPT | |
243 | a{1}? C BADRPT | |
244 | a*{b} - a{b} a{b} | |
245 | a\{1\}\{1\} bC BADRPT | |
246 | a*\{1\} bC BADRPT | |
247 | a\{1\}* bC BADRPT | |
248 | ||
249 | # brackets, and numerous perversions thereof | |
250 | a[b]c & abc abc | |
251 | a[ab]c & abc abc | |
252 | a[^ab]c & adc adc | |
253 | a[]b]c & a]c a]c | |
254 | a[[b]c & a[c a[c | |
255 | a[-b]c & a-c a-c | |
256 | a[^]b]c & adc adc | |
257 | a[^-b]c & adc adc | |
258 | a[b-]c & a-c a-c | |
259 | a[b &C EBRACK | |
260 | a[] &C EBRACK | |
261 | a[1-3]c & a2c a2c | |
262 | a[3-1]c &C ERANGE | |
263 | a[1-3-5]c &C ERANGE | |
264 | a[[.-.]--]c & a-c a-c | |
265 | a[1- &C ERANGE | |
266 | a[[. &C EBRACK | |
267 | a[[.x &C EBRACK | |
268 | a[[.x. &C EBRACK | |
269 | a[[.x.] &C EBRACK | |
270 | a[[.x.]] & ax ax | |
271 | a[[.x,.]] &C ECOLLATE | |
272 | a[[.one.]]b & a1b a1b | |
273 | a[[.notdef.]]b &C ECOLLATE | |
274 | a[[.].]]b & a]b a]b | |
275 | a[[:alpha:]]c & abc abc | |
276 | a[[:notdef:]]c &C ECTYPE | |
277 | a[[: &C EBRACK | |
278 | a[[:alpha &C EBRACK | |
279 | a[[:alpha:] &C EBRACK | |
280 | a[[:alpha,:] &C ECTYPE | |
281 | a[[:]:]]b &C ECTYPE | |
282 | a[[:-:]]b &C ECTYPE | |
283 | a[[:alph:]] &C ECTYPE | |
284 | a[[:alphabet:]] &C ECTYPE | |
285 | [[:alnum:]]+ - -%@a0X- a0X | |
286 | [[:alpha:]]+ - -%@aX0- aX | |
287 | [[:blank:]]+ - aSSTb SST | |
288 | [[:cntrl:]]+ - aNTb NT | |
289 | [[:digit:]]+ - a019b 019 | |
290 | [[:graph:]]+ - Sa%bS a%b | |
291 | [[:lower:]]+ - AabC ab | |
292 | [[:print:]]+ - NaSbN aSb | |
293 | [[:punct:]]+ - S%-&T %-& | |
294 | [[:space:]]+ - aSNTb SNT | |
295 | [[:upper:]]+ - aBCd BC | |
296 | [[:xdigit:]]+ - p0f3Cq 0f3C | |
297 | a[[=b=]]c & abc abc | |
298 | a[[= &C EBRACK | |
299 | a[[=b &C EBRACK | |
300 | a[[=b= &C EBRACK | |
301 | a[[=b=] &C EBRACK | |
302 | a[[=b,=]] &C ECOLLATE | |
303 | a[[=one=]]b & a1b a1b | |
304 | ||
305 | # complexities | |
306 | a(((b)))c - abc abc | |
307 | a(b|(c))d - abd abd | |
308 | a(b*|c)d - abbd abbd | |
309 | # just gotta have one DFA-buster, of course | |
310 | a[ab]{20} - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab | |
311 | # and an inline expansion in case somebody gets tricky | |
312 | a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] - aaaaabaaaabaaaabaaaab aaaaabaaaabaaaabaaaab | |
313 | # and in case somebody just slips in an NFA... | |
314 | 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 aaaaabaaaabaaaabaaaabweeknights | |
315 | # fish for anomalies as the number of states passes 32 | |
316 | 12345678901234567890123456789 - a12345678901234567890123456789b 12345678901234567890123456789 | |
317 | 123456789012345678901234567890 - a123456789012345678901234567890b 123456789012345678901234567890 | |
318 | 1234567890123456789012345678901 - a1234567890123456789012345678901b 1234567890123456789012345678901 | |
319 | 12345678901234567890123456789012 - a12345678901234567890123456789012b 12345678901234567890123456789012 | |
320 | 123456789012345678901234567890123 - a123456789012345678901234567890123b 123456789012345678901234567890123 | |
321 | # and one really big one, beyond any plausible word width | |
322 | 1234567890123456789012345678901234567890123456789012345678901234567890 - a1234567890123456789012345678901234567890123456789012345678901234567890b 1234567890123456789012345678901234567890123456789012345678901234567890 | |
323 | # fish for problems as brackets go past 8 | |
324 | [ab][cd][ef][gh][ij][kl][mn] - xacegikmoq acegikm | |
325 | [ab][cd][ef][gh][ij][kl][mn][op] - xacegikmoq acegikmo | |
326 | [ab][cd][ef][gh][ij][kl][mn][op][qr] - xacegikmoqy acegikmoq | |
327 | [ab][cd][ef][gh][ij][kl][mn][op][q] - xacegikmoqy acegikmoq | |
328 | ||
329 | # subtleties of matching | |
330 | abc & xabcy abc | |
331 | a\(b\)?c\1d b acd | |
332 | aBc i Abc Abc | |
333 | a[Bc]*d i abBCcd abBCcd | |
334 | 0[[:upper:]]1 &i 0a1 0a1 | |
335 | 0[[:lower:]]1 &i 0A1 0A1 | |
336 | a[^b]c &i abc | |
337 | a[^b]c &i aBc | |
338 | a[^b]c &i adc adc | |
339 | [a]b[c] - abc abc | |
340 | [a]b[a] - aba aba | |
341 | [abc]b[abc] - abc abc | |
342 | [abc]b[abd] - abd abd | |
343 | a(b?c)+d - accd accd | |
344 | (wee|week)(knights|night) - weeknights weeknights | |
345 | (we|wee|week|frob)(knights|night|day) - weeknights weeknights | |
346 | a[bc]d - xyzaaabcaababdacd abd | |
347 | a[ab]c - aaabc abc | |
348 | abc s abc abc | |
349 | a* & b @b | |
350 | ||
351 | # Let's have some fun -- try to match a C comment. | |
352 | # first the obvious, which looks okay at first glance... | |
353 | /\*.*\*/ - /*x*/ /*x*/ | |
354 | # but... | |
355 | /\*.*\*/ - /*x*/y/*z*/ /*x*/y/*z*/ | |
356 | # okay, we must not match */ inside; try to do that... | |
357 | /\*([^*]|\*[^/])*\*/ - /*x*/ /*x*/ | |
358 | /\*([^*]|\*[^/])*\*/ - /*x*/y/*z*/ /*x*/ | |
359 | # but... | |
360 | /\*([^*]|\*[^/])*\*/ - /*x**/y/*z*/ /*x**/y/*z*/ | |
361 | # and a still fancier version, which does it right (I think)... | |
362 | /\*([^*]|\*+[^*/])*\*+/ - /*x*/ /*x*/ | |
363 | /\*([^*]|\*+[^*/])*\*+/ - /*x*/y/*z*/ /*x*/ | |
364 | /\*([^*]|\*+[^*/])*\*+/ - /*x**/y/*z*/ /*x**/ | |
365 | /\*([^*]|\*+[^*/])*\*+/ - /*x****/y/*z*/ /*x****/ | |
366 | /\*([^*]|\*+[^*/])*\*+/ - /*x**x*/y/*z*/ /*x**x*/ | |
367 | /\*([^*]|\*+[^*/])*\*+/ - /*x***x/y/*z*/ /*x***x/y/*z*/ | |
368 | ||
369 | # subexpressions | |
370 | .* - abc abc - | |
371 | a(b)(c)d - abcd abcd b,c | |
372 | a(((b)))c - abc abc b,b,b | |
373 | a(b|(c))d - abd abd b,- | |
374 | a(b*|c|e)d - abbd abbd bb | |
375 | a(b*|c|e)d - acd acd c | |
376 | a(b*|c|e)d - ad ad @d | |
377 | a(b?)c - abc abc b | |
378 | a(b?)c - ac ac @c | |
379 | a(b+)c - abc abc b | |
380 | a(b+)c - abbbc abbbc bbb | |
381 | a(b*)c - ac ac @c | |
382 | (a|ab)(bc([de]+)f|cde) - abcdef abcdef a,bcdef,de | |
383 | # the regression tester only asks for 9 subexpressions | |
384 | a(b)(c)(d)(e)(f)(g)(h)(i)(j)k - abcdefghijk abcdefghijk b,c,d,e,f,g,h,i,j | |
385 | a(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l - abcdefghijkl abcdefghijkl b,c,d,e,f,g,h,i,j,k | |
386 | a([bc]?)c - abc abc b | |
387 | a([bc]?)c - ac ac @c | |
388 | a([bc]+)c - abc abc b | |
389 | a([bc]+)c - abcc abcc bc | |
390 | a([bc]+)bc - abcbc abcbc bc | |
391 | a(bb+|b)b - abb abb b | |
392 | a(bbb+|bb+|b)b - abb abb b | |
393 | a(bbb+|bb+|b)b - abbb abbb bb | |
394 | a(bbb+|bb+|b)bb - abbb abbb b | |
395 | (.*).* - abcdef abcdef abcdef | |
396 | (a*)* - bc @b @b | |
397 | ||
398 | # do we get the right subexpression when it is used more than once? | |
399 | a(b|c)*d - ad ad - | |
400 | a(b|c)*d - abcd abcd c | |
401 | a(b|c)+d - abd abd b | |
402 | a(b|c)+d - abcd abcd c | |
403 | a(b|c?)+d - ad ad @d | |
404 | a(b|c?)+d - abcd abcd @d | |
405 | a(b|c){0,0}d - ad ad - | |
406 | a(b|c){0,1}d - ad ad - | |
407 | a(b|c){0,1}d - abd abd b | |
408 | a(b|c){0,2}d - ad ad - | |
409 | a(b|c){0,2}d - abcd abcd c | |
410 | a(b|c){0,}d - ad ad - | |
411 | a(b|c){0,}d - abcd abcd c | |
412 | a(b|c){1,1}d - abd abd b | |
413 | a(b|c){1,1}d - acd acd c | |
414 | a(b|c){1,2}d - abd abd b | |
415 | a(b|c){1,2}d - abcd abcd c | |
416 | a(b|c){1,}d - abd abd b | |
417 | a(b|c){1,}d - abcd abcd c | |
418 | a(b|c){2,2}d - acbd acbd b | |
419 | a(b|c){2,2}d - abcd abcd c | |
420 | a(b|c){2,4}d - abcd abcd c | |
421 | a(b|c){2,4}d - abcbd abcbd b | |
422 | a(b|c){2,4}d - abcbcd abcbcd c | |
423 | a(b|c){2,}d - abcd abcd c | |
424 | a(b|c){2,}d - abcbd abcbd b | |
425 | a(b+|((c)*))+d - abd abd @d,@d,- | |
426 | a(b+|((c)*))+d - abcd abcd @d,@d,- | |
427 | ||
428 | # check out the STARTEND option | |
429 | [abc] &# a(b)c b | |
430 | [abc] &# a(d)c | |
431 | [abc] &# a(bc)d b | |
432 | [abc] &# a(dc)d c | |
433 | . &# a()c | |
434 | b.*c &# b(bc)c bc | |
435 | b.* &# b(bc)c bc | |
436 | .*c &# b(bc)c bc | |
437 | ||
438 | # plain strings, with the NOSPEC flag | |
439 | abc m abc abc | |
440 | abc m xabcy abc | |
441 | abc m xyz | |
442 | a*b m aba*b a*b | |
443 | a*b m ab | |
444 | "" mC EMPTY | |
445 | ||
446 | # cases involving NULs | |
447 | aZb & a a | |
448 | aZb &p a | |
449 | aZb &p# (aZb) aZb | |
450 | aZ*b &p# (ab) ab | |
451 | a.b &# (aZb) aZb | |
452 | a.* &# (aZb)c aZb | |
453 | ||
454 | # word boundaries (ick) | |
455 | [[:<:]]a & a a | |
456 | [[:<:]]a & ba | |
457 | [[:<:]]a & -a a | |
458 | a[[:>:]] & a a | |
459 | a[[:>:]] & ab | |
460 | a[[:>:]] & a- a | |
461 | [[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc abc | |
462 | [[:<:]]a.c[[:>:]] & axcd-dayc-dazce-abc-q abc | |
463 | [[:<:]]a.c[[:>:]] & axc-dayc-dazce-abc axc | |
464 | [[:<:]]b.c[[:>:]] & a_bxc-byc_d-bzc-q bzc | |
465 | [[:<:]].x..[[:>:]] & y_xa_-_xb_y-_xc_-axdc _xc_ | |
466 | [[:<:]]a_b[[:>:]] & x_a_b | |
467 | ||
468 | # past problems, and suspected problems | |
469 | (A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A[7])|(A[8])|(A[9])|(A[A]) - A1 A1 | |
470 | abcdefghijklmnop i abcdefghijklmnop abcdefghijklmnop | |
471 | abcdefghijklmnopqrstuv i abcdefghijklmnopqrstuv abcdefghijklmnopqrstuv | |
472 | (ALAK)|(ALT[AB])|(CC[123]1)|(CM[123]1)|(GAMC)|(LC[23][EO ])|(SEM[1234])|(SL[ES][12])|(SLWW)|(SLF )|(SLDT)|(VWH[12])|(WH[34][EW])|(WP1[ESN]) - CC11 CC11 | |
473 | CC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a - CC11 CC11 | |
474 | Char \([a-z0-9_]*\)\[.* b Char xyz[k Char xyz[k xyz | |
475 | a?b - ab ab | |
476 | -\{0,1\}[0-9]*$ b -5 -5 | |
477 | a*a*a*a*a*a*a* & aaaaaa aaaaaa |