diff options
| author | Dima Kogan | 2016-03-11 18:18:14 -0800 |
|---|---|---|
| committer | Michal Nazarewicz | 2016-08-02 15:39:10 +0200 |
| commit | 6db72771cc08e719a08f56db8abd7cefef9c8c99 (patch) | |
| tree | ade21e8c66a4f759d3d40f7cc9a590472c8c916c | |
| parent | 53917616b0aca43b9ca85531d4dcb426885bdb73 (diff) | |
| download | emacs-6db72771cc08e719a08f56db8abd7cefef9c8c99.tar.gz emacs-6db72771cc08e719a08f56db8abd7cefef9c8c99.zip | |
New regex tests imported from glibc 2.21
* test/src/regex-resources/BOOST.tests:
* test/src/regex-resources/PCRE.tests:
* test/src/regex-resources/PTESTS:
* test/src/regex-resources/TESTS:
New test data files
[mina86@mina86.com: Moved files from test/src/regex/* to test/src/*.]
| -rw-r--r-- | test/src/regex-resources/BOOST.tests | 829 | ||||
| -rw-r--r-- | test/src/regex-resources/PCRE.tests | 2386 | ||||
| -rw-r--r-- | test/src/regex-resources/PTESTS | 341 | ||||
| -rw-r--r-- | test/src/regex-resources/TESTS | 167 |
4 files changed, 3723 insertions, 0 deletions
diff --git a/test/src/regex-resources/BOOST.tests b/test/src/regex-resources/BOOST.tests new file mode 100644 index 00000000000..98fd3b6abf3 --- /dev/null +++ b/test/src/regex-resources/BOOST.tests | |||
| @@ -0,0 +1,829 @@ | |||
| 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 | |||
diff --git a/test/src/regex-resources/PCRE.tests b/test/src/regex-resources/PCRE.tests new file mode 100644 index 00000000000..0fb9cadafc9 --- /dev/null +++ b/test/src/regex-resources/PCRE.tests | |||
| @@ -0,0 +1,2386 @@ | |||
| 1 | # PCRE version 4.4 21-August-2003 | ||
| 2 | |||
| 3 | # Tests taken from PCRE and modified to suit glibc regex. | ||
| 4 | # | ||
| 5 | # PCRE LICENCE | ||
| 6 | # ------------ | ||
| 7 | # | ||
| 8 | # PCRE is a library of functions to support regular expressions whose syntax | ||
| 9 | # and semantics are as close as possible to those of the Perl 5 language. | ||
| 10 | # | ||
| 11 | # Written by: Philip Hazel <ph10@cam.ac.uk> | ||
| 12 | # | ||
| 13 | # University of Cambridge Computing Service, | ||
| 14 | # Cambridge, England. Phone: +44 1223 334714. | ||
| 15 | # | ||
| 16 | # Copyright (c) 1997-2003 University of Cambridge | ||
| 17 | # | ||
| 18 | # Permission is granted to anyone to use this software for any purpose on any | ||
| 19 | # computer system, and to redistribute it freely, subject to the following | ||
| 20 | # restrictions: | ||
| 21 | # | ||
| 22 | # 1. This software is distributed in the hope that it will be useful, | ||
| 23 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 24 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| 25 | # | ||
| 26 | # 2. The origin of this software must not be misrepresented, either by | ||
| 27 | # explicit claim or by omission. In practice, this means that if you use | ||
| 28 | # PCRE in software that you distribute to others, commercially or | ||
| 29 | # otherwise, you must put a sentence like this | ||
| 30 | # | ||
| 31 | # Regular expression support is provided by the PCRE library package, | ||
| 32 | # which is open source software, written by Philip Hazel, and copyright | ||
| 33 | # by the University of Cambridge, England. | ||
| 34 | # | ||
| 35 | # somewhere reasonably visible in your documentation and in any relevant | ||
| 36 | # files or online help data or similar. A reference to the ftp site for | ||
| 37 | # the source, that is, to | ||
| 38 | # | ||
| 39 | # ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ | ||
| 40 | # | ||
| 41 | # should also be given in the documentation. However, this condition is not | ||
| 42 | # intended to apply to whole chains of software. If package A includes PCRE, | ||
| 43 | # it must acknowledge it, but if package B is software that includes package | ||
| 44 | # A, the condition is not imposed on package B (unless it uses PCRE | ||
| 45 | # independently). | ||
| 46 | # | ||
| 47 | # 3. Altered versions must be plainly marked as such, and must not be | ||
| 48 | # misrepresented as being the original software. | ||
| 49 | # | ||
| 50 | # 4. If PCRE is embedded in any software that is released under the GNU | ||
| 51 | # General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL), | ||
| 52 | # then the terms of that licence shall supersede any condition above with | ||
| 53 | # which it is incompatible. | ||
| 54 | # | ||
| 55 | # The documentation for PCRE, supplied in the "doc" directory, is distributed | ||
| 56 | # under the same terms as the software itself. | ||
| 57 | # | ||
| 58 | # End | ||
| 59 | # | ||
| 60 | |||
| 61 | /the quick brown fox/ | ||
| 62 | the quick brown fox | ||
| 63 | 0: the quick brown fox | ||
| 64 | The quick brown FOX | ||
| 65 | No match | ||
| 66 | What do you know about the quick brown fox? | ||
| 67 | 0: the quick brown fox | ||
| 68 | What do you know about THE QUICK BROWN FOX? | ||
| 69 | No match | ||
| 70 | |||
| 71 | /The quick brown fox/i | ||
| 72 | the quick brown fox | ||
| 73 | 0: the quick brown fox | ||
| 74 | The quick brown FOX | ||
| 75 | 0: The quick brown FOX | ||
| 76 | What do you know about the quick brown fox? | ||
| 77 | 0: the quick brown fox | ||
| 78 | What do you know about THE QUICK BROWN FOX? | ||
| 79 | 0: THE QUICK BROWN FOX | ||
| 80 | |||
| 81 | /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ | ||
| 82 | abxyzpqrrrabbxyyyypqAzz | ||
| 83 | 0: abxyzpqrrrabbxyyyypqAzz | ||
| 84 | abxyzpqrrrabbxyyyypqAzz | ||
| 85 | 0: abxyzpqrrrabbxyyyypqAzz | ||
| 86 | aabxyzpqrrrabbxyyyypqAzz | ||
| 87 | 0: aabxyzpqrrrabbxyyyypqAzz | ||
| 88 | aaabxyzpqrrrabbxyyyypqAzz | ||
| 89 | 0: aaabxyzpqrrrabbxyyyypqAzz | ||
| 90 | aaaabxyzpqrrrabbxyyyypqAzz | ||
| 91 | 0: aaaabxyzpqrrrabbxyyyypqAzz | ||
| 92 | abcxyzpqrrrabbxyyyypqAzz | ||
| 93 | 0: abcxyzpqrrrabbxyyyypqAzz | ||
| 94 | aabcxyzpqrrrabbxyyyypqAzz | ||
| 95 | 0: aabcxyzpqrrrabbxyyyypqAzz | ||
| 96 | aaabcxyzpqrrrabbxyyyypAzz | ||
| 97 | 0: aaabcxyzpqrrrabbxyyyypAzz | ||
| 98 | aaabcxyzpqrrrabbxyyyypqAzz | ||
| 99 | 0: aaabcxyzpqrrrabbxyyyypqAzz | ||
| 100 | aaabcxyzpqrrrabbxyyyypqqAzz | ||
| 101 | 0: aaabcxyzpqrrrabbxyyyypqqAzz | ||
| 102 | aaabcxyzpqrrrabbxyyyypqqqAzz | ||
| 103 | 0: aaabcxyzpqrrrabbxyyyypqqqAzz | ||
| 104 | aaabcxyzpqrrrabbxyyyypqqqqAzz | ||
| 105 | 0: aaabcxyzpqrrrabbxyyyypqqqqAzz | ||
| 106 | aaabcxyzpqrrrabbxyyyypqqqqqAzz | ||
| 107 | 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz | ||
| 108 | aaabcxyzpqrrrabbxyyyypqqqqqqAzz | ||
| 109 | 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz | ||
| 110 | aaaabcxyzpqrrrabbxyyyypqAzz | ||
| 111 | 0: aaaabcxyzpqrrrabbxyyyypqAzz | ||
| 112 | abxyzzpqrrrabbxyyyypqAzz | ||
| 113 | 0: abxyzzpqrrrabbxyyyypqAzz | ||
| 114 | aabxyzzzpqrrrabbxyyyypqAzz | ||
| 115 | 0: aabxyzzzpqrrrabbxyyyypqAzz | ||
| 116 | aaabxyzzzzpqrrrabbxyyyypqAzz | ||
| 117 | 0: aaabxyzzzzpqrrrabbxyyyypqAzz | ||
| 118 | aaaabxyzzzzpqrrrabbxyyyypqAzz | ||
| 119 | 0: aaaabxyzzzzpqrrrabbxyyyypqAzz | ||
| 120 | abcxyzzpqrrrabbxyyyypqAzz | ||
| 121 | 0: abcxyzzpqrrrabbxyyyypqAzz | ||
| 122 | aabcxyzzzpqrrrabbxyyyypqAzz | ||
| 123 | 0: aabcxyzzzpqrrrabbxyyyypqAzz | ||
| 124 | aaabcxyzzzzpqrrrabbxyyyypqAzz | ||
| 125 | 0: aaabcxyzzzzpqrrrabbxyyyypqAzz | ||
| 126 | aaaabcxyzzzzpqrrrabbxyyyypqAzz | ||
| 127 | 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz | ||
| 128 | aaaabcxyzzzzpqrrrabbbxyyyypqAzz | ||
| 129 | 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz | ||
| 130 | aaaabcxyzzzzpqrrrabbbxyyyyypqAzz | ||
| 131 | 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz | ||
| 132 | aaabcxyzpqrrrabbxyyyypABzz | ||
| 133 | 0: aaabcxyzpqrrrabbxyyyypABzz | ||
| 134 | aaabcxyzpqrrrabbxyyyypABBzz | ||
| 135 | 0: aaabcxyzpqrrrabbxyyyypABBzz | ||
| 136 | >>>aaabxyzpqrrrabbxyyyypqAzz | ||
| 137 | 0: aaabxyzpqrrrabbxyyyypqAzz | ||
| 138 | >aaaabxyzpqrrrabbxyyyypqAzz | ||
| 139 | 0: aaaabxyzpqrrrabbxyyyypqAzz | ||
| 140 | >>>>abcxyzpqrrrabbxyyyypqAzz | ||
| 141 | 0: abcxyzpqrrrabbxyyyypqAzz | ||
| 142 | *** Failers | ||
| 143 | No match | ||
| 144 | abxyzpqrrabbxyyyypqAzz | ||
| 145 | No match | ||
| 146 | abxyzpqrrrrabbxyyyypqAzz | ||
| 147 | No match | ||
| 148 | abxyzpqrrrabxyyyypqAzz | ||
| 149 | No match | ||
| 150 | aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz | ||
| 151 | No match | ||
| 152 | aaaabcxyzzzzpqrrrabbbxyyypqAzz | ||
| 153 | No match | ||
| 154 | aaabcxyzpqrrrabbxyyyypqqqqqqqAzz | ||
| 155 | No match | ||
| 156 | |||
| 157 | /^(abc){1,2}zz/ | ||
| 158 | abczz | ||
| 159 | 0: abczz | ||
| 160 | 1: abc | ||
| 161 | abcabczz | ||
| 162 | 0: abcabczz | ||
| 163 | 1: abc | ||
| 164 | *** Failers | ||
| 165 | No match | ||
| 166 | zz | ||
| 167 | No match | ||
| 168 | abcabcabczz | ||
| 169 | No match | ||
| 170 | >>abczz | ||
| 171 | No match | ||
| 172 | |||
| 173 | /^(b+|a){1,2}c/ | ||
| 174 | bc | ||
| 175 | 0: bc | ||
| 176 | 1: b | ||
| 177 | bbc | ||
| 178 | 0: bbc | ||
| 179 | 1: bb | ||
| 180 | bbbc | ||
| 181 | 0: bbbc | ||
| 182 | 1: bbb | ||
| 183 | bac | ||
| 184 | 0: bac | ||
| 185 | 1: a | ||
| 186 | bbac | ||
| 187 | 0: bbac | ||
| 188 | 1: a | ||
| 189 | aac | ||
| 190 | 0: aac | ||
| 191 | 1: a | ||
| 192 | abbbbbbbbbbbc | ||
| 193 | 0: abbbbbbbbbbbc | ||
| 194 | 1: bbbbbbbbbbb | ||
| 195 | bbbbbbbbbbbac | ||
| 196 | 0: bbbbbbbbbbbac | ||
| 197 | 1: a | ||
| 198 | *** Failers | ||
| 199 | No match | ||
| 200 | aaac | ||
| 201 | No match | ||
| 202 | abbbbbbbbbbbac | ||
| 203 | No match | ||
| 204 | |||
| 205 | /^[]cde]/ | ||
| 206 | ]thing | ||
| 207 | 0: ] | ||
| 208 | cthing | ||
| 209 | 0: c | ||
| 210 | dthing | ||
| 211 | 0: d | ||
| 212 | ething | ||
| 213 | 0: e | ||
| 214 | *** Failers | ||
| 215 | No match | ||
| 216 | athing | ||
| 217 | No match | ||
| 218 | fthing | ||
| 219 | No match | ||
| 220 | |||
| 221 | /^[^]cde]/ | ||
| 222 | athing | ||
| 223 | 0: a | ||
| 224 | fthing | ||
| 225 | 0: f | ||
| 226 | *** Failers | ||
| 227 | 0: * | ||
| 228 | ]thing | ||
| 229 | No match | ||
| 230 | cthing | ||
| 231 | No match | ||
| 232 | dthing | ||
| 233 | No match | ||
| 234 | ething | ||
| 235 | No match | ||
| 236 | |||
| 237 | /^[0-9]+$/ | ||
| 238 | 0 | ||
| 239 | 0: 0 | ||
| 240 | 1 | ||
| 241 | 0: 1 | ||
| 242 | 2 | ||
| 243 | 0: 2 | ||
| 244 | 3 | ||
| 245 | 0: 3 | ||
| 246 | 4 | ||
| 247 | 0: 4 | ||
| 248 | 5 | ||
| 249 | 0: 5 | ||
| 250 | 6 | ||
| 251 | 0: 6 | ||
| 252 | 7 | ||
| 253 | 0: 7 | ||
| 254 | 8 | ||
| 255 | 0: 8 | ||
| 256 | 9 | ||
| 257 | 0: 9 | ||
| 258 | 10 | ||
| 259 | 0: 10 | ||
| 260 | 100 | ||
| 261 | 0: 100 | ||
| 262 | *** Failers | ||
| 263 | No match | ||
| 264 | abc | ||
| 265 | No match | ||
| 266 | |||
| 267 | /^.*nter/ | ||
| 268 | enter | ||
| 269 | 0: enter | ||
| 270 | inter | ||
| 271 | 0: inter | ||
| 272 | uponter | ||
| 273 | 0: uponter | ||
| 274 | |||
| 275 | /^xxx[0-9]+$/ | ||
| 276 | xxx0 | ||
| 277 | 0: xxx0 | ||
| 278 | xxx1234 | ||
| 279 | 0: xxx1234 | ||
| 280 | *** Failers | ||
| 281 | No match | ||
| 282 | xxx | ||
| 283 | No match | ||
| 284 | |||
| 285 | /^.+[0-9][0-9][0-9]$/ | ||
| 286 | x123 | ||
| 287 | 0: x123 | ||
| 288 | xx123 | ||
| 289 | 0: xx123 | ||
| 290 | 123456 | ||
| 291 | 0: 123456 | ||
| 292 | *** Failers | ||
| 293 | No match | ||
| 294 | 123 | ||
| 295 | No match | ||
| 296 | x1234 | ||
| 297 | 0: x1234 | ||
| 298 | |||
| 299 | /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ | ||
| 300 | abc!pqr=apquxz.ixr.zzz.ac.uk | ||
| 301 | 0: abc!pqr=apquxz.ixr.zzz.ac.uk | ||
| 302 | 1: abc | ||
| 303 | 2: pqr | ||
| 304 | *** Failers | ||
| 305 | No match | ||
| 306 | !pqr=apquxz.ixr.zzz.ac.uk | ||
| 307 | No match | ||
| 308 | abc!=apquxz.ixr.zzz.ac.uk | ||
| 309 | No match | ||
| 310 | abc!pqr=apquxz:ixr.zzz.ac.uk | ||
| 311 | No match | ||
| 312 | abc!pqr=apquxz.ixr.zzz.ac.ukk | ||
| 313 | No match | ||
| 314 | |||
| 315 | /:/ | ||
| 316 | Well, we need a colon: somewhere | ||
| 317 | 0: : | ||
| 318 | *** Fail if we don't | ||
| 319 | No match | ||
| 320 | |||
| 321 | /([0-9a-f:]+)$/i | ||
| 322 | 0abc | ||
| 323 | 0: 0abc | ||
| 324 | 1: 0abc | ||
| 325 | abc | ||
| 326 | 0: abc | ||
| 327 | 1: abc | ||
| 328 | fed | ||
| 329 | 0: fed | ||
| 330 | 1: fed | ||
| 331 | E | ||
| 332 | 0: E | ||
| 333 | 1: E | ||
| 334 | :: | ||
| 335 | 0: :: | ||
| 336 | 1: :: | ||
| 337 | 5f03:12C0::932e | ||
| 338 | 0: 5f03:12C0::932e | ||
| 339 | 1: 5f03:12C0::932e | ||
| 340 | fed def | ||
| 341 | 0: def | ||
| 342 | 1: def | ||
| 343 | Any old stuff | ||
| 344 | 0: ff | ||
| 345 | 1: ff | ||
| 346 | *** Failers | ||
| 347 | No match | ||
| 348 | 0zzz | ||
| 349 | No match | ||
| 350 | gzzz | ||
| 351 | No match | ||
| 352 | Any old rubbish | ||
| 353 | No match | ||
| 354 | |||
| 355 | /^.*\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/ | ||
| 356 | .1.2.3 | ||
| 357 | 0: .1.2.3 | ||
| 358 | 1: 1 | ||
| 359 | 2: 2 | ||
| 360 | 3: 3 | ||
| 361 | A.12.123.0 | ||
| 362 | 0: A.12.123.0 | ||
| 363 | 1: 12 | ||
| 364 | 2: 123 | ||
| 365 | 3: 0 | ||
| 366 | *** Failers | ||
| 367 | No match | ||
| 368 | .1.2.3333 | ||
| 369 | No match | ||
| 370 | 1.2.3 | ||
| 371 | No match | ||
| 372 | 1234.2.3 | ||
| 373 | No match | ||
| 374 | |||
| 375 | /^([0-9]+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ | ||
| 376 | 1 IN SOA non-sp1 non-sp2( | ||
| 377 | 0: 1 IN SOA non-sp1 non-sp2( | ||
| 378 | 1: 1 | ||
| 379 | 2: non-sp1 | ||
| 380 | 3: non-sp2 | ||
| 381 | 1 IN SOA non-sp1 non-sp2 ( | ||
| 382 | 0: 1 IN SOA non-sp1 non-sp2 ( | ||
| 383 | 1: 1 | ||
| 384 | 2: non-sp1 | ||
| 385 | 3: non-sp2 | ||
| 386 | *** Failers | ||
| 387 | No match | ||
| 388 | 1IN SOA non-sp1 non-sp2( | ||
| 389 | No match | ||
| 390 | |||
| 391 | /^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-z0-9-]*)*\.$/ | ||
| 392 | a. | ||
| 393 | 0: a. | ||
| 394 | Z. | ||
| 395 | 0: Z. | ||
| 396 | 2. | ||
| 397 | 0: 2. | ||
| 398 | ab-c.pq-r. | ||
| 399 | 0: ab-c.pq-r. | ||
| 400 | 1: .pq-r | ||
| 401 | sxk.zzz.ac.uk. | ||
| 402 | 0: sxk.zzz.ac.uk. | ||
| 403 | 1: .uk | ||
| 404 | x-.y-. | ||
| 405 | 0: x-.y-. | ||
| 406 | 1: .y- | ||
| 407 | *** Failers | ||
| 408 | No match | ||
| 409 | -abc.peq. | ||
| 410 | No match | ||
| 411 | |||
| 412 | /^\*\.[a-z]([a-z0-9-]*[a-z0-9]+)?(\.[a-z]([a-z0-9-]*[a-z0-9]+)?)*$/ | ||
| 413 | *.a | ||
| 414 | 0: *.a | ||
| 415 | *.b0-a | ||
| 416 | 0: *.b0-a | ||
| 417 | 1: 0-a | ||
| 418 | *.c3-b.c | ||
| 419 | 0: *.c3-b.c | ||
| 420 | 1: 3-b | ||
| 421 | 2: .c | ||
| 422 | *.c-a.b-c | ||
| 423 | 0: *.c-a.b-c | ||
| 424 | 1: -a | ||
| 425 | 2: .b-c | ||
| 426 | 3: -c | ||
| 427 | *** Failers | ||
| 428 | No match | ||
| 429 | *.0 | ||
| 430 | No match | ||
| 431 | *.a- | ||
| 432 | No match | ||
| 433 | *.a-b.c- | ||
| 434 | No match | ||
| 435 | *.c-a.0-c | ||
| 436 | No match | ||
| 437 | |||
| 438 | /^[0-9a-f](\.[0-9a-f])*$/i | ||
| 439 | a.b.c.d | ||
| 440 | 0: a.b.c.d | ||
| 441 | 1: .d | ||
| 442 | A.B.C.D | ||
| 443 | 0: A.B.C.D | ||
| 444 | 1: .D | ||
| 445 | a.b.c.1.2.3.C | ||
| 446 | 0: a.b.c.1.2.3.C | ||
| 447 | 1: .C | ||
| 448 | |||
| 449 | /^".*"\s*(;.*)?$/ | ||
| 450 | "1234" | ||
| 451 | 0: "1234" | ||
| 452 | "abcd" ; | ||
| 453 | 0: "abcd" ; | ||
| 454 | 1: ; | ||
| 455 | "" ; rhubarb | ||
| 456 | 0: "" ; rhubarb | ||
| 457 | 1: ; rhubarb | ||
| 458 | *** Failers | ||
| 459 | No match | ||
| 460 | "1234" : things | ||
| 461 | No match | ||
| 462 | |||
| 463 | /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ | ||
| 464 | abcdefhijklm | ||
| 465 | 0: abcdefhijklm | ||
| 466 | 1: abc | ||
| 467 | 2: bc | ||
| 468 | 3: c | ||
| 469 | 4: def | ||
| 470 | 5: ef | ||
| 471 | 6: f | ||
| 472 | 7: hij | ||
| 473 | 8: ij | ||
| 474 | 9: j | ||
| 475 | 10: klm | ||
| 476 | 11: lm | ||
| 477 | 12: m | ||
| 478 | |||
| 479 | /^a*\w/ | ||
| 480 | z | ||
| 481 | 0: z | ||
| 482 | az | ||
| 483 | 0: az | ||
| 484 | aaaz | ||
| 485 | 0: aaaz | ||
| 486 | a | ||
| 487 | 0: a | ||
| 488 | aa | ||
| 489 | 0: aa | ||
| 490 | aaaa | ||
| 491 | 0: aaaa | ||
| 492 | a+ | ||
| 493 | 0: a | ||
| 494 | aa+ | ||
| 495 | 0: aa | ||
| 496 | |||
| 497 | /^a+\w/ | ||
| 498 | az | ||
| 499 | 0: az | ||
| 500 | aaaz | ||
| 501 | 0: aaaz | ||
| 502 | aa | ||
| 503 | 0: aa | ||
| 504 | aaaa | ||
| 505 | 0: aaaa | ||
| 506 | aa+ | ||
| 507 | 0: aa | ||
| 508 | |||
| 509 | /^[0-9]{8}\w{2,}/ | ||
| 510 | 1234567890 | ||
| 511 | 0: 1234567890 | ||
| 512 | 12345678ab | ||
| 513 | 0: 12345678ab | ||
| 514 | 12345678__ | ||
| 515 | 0: 12345678__ | ||
| 516 | *** Failers | ||
| 517 | No match | ||
| 518 | 1234567 | ||
| 519 | No match | ||
| 520 | |||
| 521 | /^[aeiou0-9]{4,5}$/ | ||
| 522 | uoie | ||
| 523 | 0: uoie | ||
| 524 | 1234 | ||
| 525 | 0: 1234 | ||
| 526 | 12345 | ||
| 527 | 0: 12345 | ||
| 528 | aaaaa | ||
| 529 | 0: aaaaa | ||
| 530 | *** Failers | ||
| 531 | No match | ||
| 532 | 123456 | ||
| 533 | No match | ||
| 534 | |||
| 535 | /\`(abc|def)=(\1){2,3}\'/ | ||
| 536 | abc=abcabc | ||
| 537 | 0: abc=abcabc | ||
| 538 | 1: abc | ||
| 539 | 2: abc | ||
| 540 | def=defdefdef | ||
| 541 | 0: def=defdefdef | ||
| 542 | 1: def | ||
| 543 | 2: def | ||
| 544 | *** Failers | ||
| 545 | No match | ||
| 546 | abc=defdef | ||
| 547 | No match | ||
| 548 | |||
| 549 | /(cat(a(ract|tonic)|erpillar)) \1()2(3)/ | ||
| 550 | cataract cataract23 | ||
| 551 | 0: cataract cataract23 | ||
| 552 | 1: cataract | ||
| 553 | 2: aract | ||
| 554 | 3: ract | ||
| 555 | 4: | ||
| 556 | 5: 3 | ||
| 557 | catatonic catatonic23 | ||
| 558 | 0: catatonic catatonic23 | ||
| 559 | 1: catatonic | ||
| 560 | 2: atonic | ||
| 561 | 3: tonic | ||
| 562 | 4: | ||
| 563 | 5: 3 | ||
| 564 | caterpillar caterpillar23 | ||
| 565 | 0: caterpillar caterpillar23 | ||
| 566 | 1: caterpillar | ||
| 567 | 2: erpillar | ||
| 568 | 3: <unset> | ||
| 569 | 4: | ||
| 570 | 5: 3 | ||
| 571 | |||
| 572 | |||
| 573 | /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/ | ||
| 574 | From abcd Mon Sep 01 12:33:02 1997 | ||
| 575 | 0: From abcd Mon Sep 01 12:33 | ||
| 576 | 1: abcd | ||
| 577 | |||
| 578 | /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}[0-9]{1,2}\s+[0-9][0-9]:[0-9][0-9]/ | ||
| 579 | From abcd Mon Sep 01 12:33:02 1997 | ||
| 580 | 0: From abcd Mon Sep 01 12:33 | ||
| 581 | 1: Sep | ||
| 582 | From abcd Mon Sep 1 12:33:02 1997 | ||
| 583 | 0: From abcd Mon Sep 1 12:33 | ||
| 584 | 1: Sep | ||
| 585 | *** Failers | ||
| 586 | No match | ||
| 587 | From abcd Sep 01 12:33:02 1997 | ||
| 588 | No match | ||
| 589 | |||
| 590 | /^(a)\1{2,3}(.)/ | ||
| 591 | aaab | ||
| 592 | 0: aaab | ||
| 593 | 1: a | ||
| 594 | 2: b | ||
| 595 | aaaab | ||
| 596 | 0: aaaab | ||
| 597 | 1: a | ||
| 598 | 2: b | ||
| 599 | aaaaab | ||
| 600 | 0: aaaaa | ||
| 601 | 1: a | ||
| 602 | 2: a | ||
| 603 | aaaaaab | ||
| 604 | 0: aaaaa | ||
| 605 | 1: a | ||
| 606 | 2: a | ||
| 607 | |||
| 608 | /^[ab]{1,3}(ab*|b)/ | ||
| 609 | aabbbbb | ||
| 610 | 0: aabbbbb | ||
| 611 | 1: abbbbb | ||
| 612 | |||
| 613 | /^(cow|)\1(bell)/ | ||
| 614 | cowcowbell | ||
| 615 | 0: cowcowbell | ||
| 616 | 1: cow | ||
| 617 | 2: bell | ||
| 618 | bell | ||
| 619 | 0: bell | ||
| 620 | 1: | ||
| 621 | 2: bell | ||
| 622 | *** Failers | ||
| 623 | No match | ||
| 624 | cowbell | ||
| 625 | No match | ||
| 626 | |||
| 627 | /^(a|)\1+b/ | ||
| 628 | aab | ||
| 629 | 0: aab | ||
| 630 | 1: a | ||
| 631 | aaaab | ||
| 632 | 0: aaaab | ||
| 633 | 1: a | ||
| 634 | b | ||
| 635 | 0: b | ||
| 636 | 1: | ||
| 637 | *** Failers | ||
| 638 | No match | ||
| 639 | ab | ||
| 640 | No match | ||
| 641 | |||
| 642 | /^(a|)\1{2}b/ | ||
| 643 | aaab | ||
| 644 | 0: aaab | ||
| 645 | 1: a | ||
| 646 | b | ||
| 647 | 0: b | ||
| 648 | 1: | ||
| 649 | *** Failers | ||
| 650 | No match | ||
| 651 | ab | ||
| 652 | No match | ||
| 653 | aab | ||
| 654 | No match | ||
| 655 | aaaab | ||
| 656 | No match | ||
| 657 | |||
| 658 | /^(a|)\1{2,3}b/ | ||
| 659 | aaab | ||
| 660 | 0: aaab | ||
| 661 | 1: a | ||
| 662 | aaaab | ||
| 663 | 0: aaaab | ||
| 664 | 1: a | ||
| 665 | b | ||
| 666 | 0: b | ||
| 667 | 1: | ||
| 668 | *** Failers | ||
| 669 | No match | ||
| 670 | ab | ||
| 671 | No match | ||
| 672 | aab | ||
| 673 | No match | ||
| 674 | aaaaab | ||
| 675 | No match | ||
| 676 | |||
| 677 | /ab{1,3}bc/ | ||
| 678 | abbbbc | ||
| 679 | 0: abbbbc | ||
| 680 | abbbc | ||
| 681 | 0: abbbc | ||
| 682 | abbc | ||
| 683 | 0: abbc | ||
| 684 | *** Failers | ||
| 685 | No match | ||
| 686 | abc | ||
| 687 | No match | ||
| 688 | abbbbbc | ||
| 689 | No match | ||
| 690 | |||
| 691 | /([^.]*)\.([^:]*):[T ]+(.*)/ | ||
| 692 | track1.title:TBlah blah blah | ||
| 693 | 0: track1.title:TBlah blah blah | ||
| 694 | 1: track1 | ||
| 695 | 2: title | ||
| 696 | 3: Blah blah blah | ||
| 697 | |||
| 698 | /([^.]*)\.([^:]*):[T ]+(.*)/i | ||
| 699 | track1.title:TBlah blah blah | ||
| 700 | 0: track1.title:TBlah blah blah | ||
| 701 | 1: track1 | ||
| 702 | 2: title | ||
| 703 | 3: Blah blah blah | ||
| 704 | |||
| 705 | /([^.]*)\.([^:]*):[t ]+(.*)/i | ||
| 706 | track1.title:TBlah blah blah | ||
| 707 | 0: track1.title:TBlah blah blah | ||
| 708 | 1: track1 | ||
| 709 | 2: title | ||
| 710 | 3: Blah blah blah | ||
| 711 | |||
| 712 | /^abc$/ | ||
| 713 | abc | ||
| 714 | 0: abc | ||
| 715 | *** Failers | ||
| 716 | No match | ||
| 717 | |||
| 718 | /[-az]+/ | ||
| 719 | az- | ||
| 720 | 0: az- | ||
| 721 | *** Failers | ||
| 722 | 0: a | ||
| 723 | b | ||
| 724 | No match | ||
| 725 | |||
| 726 | /[az-]+/ | ||
| 727 | za- | ||
| 728 | 0: za- | ||
| 729 | *** Failers | ||
| 730 | 0: a | ||
| 731 | b | ||
| 732 | No match | ||
| 733 | |||
| 734 | /[a-z]+/ | ||
| 735 | abcdxyz | ||
| 736 | 0: abcdxyz | ||
| 737 | |||
| 738 | /[0-9-]+/ | ||
| 739 | 12-34 | ||
| 740 | 0: 12-34 | ||
| 741 | *** Failers | ||
| 742 | No match | ||
| 743 | aaa | ||
| 744 | No match | ||
| 745 | |||
| 746 | /(abc)\1/i | ||
| 747 | abcabc | ||
| 748 | 0: abcabc | ||
| 749 | 1: abc | ||
| 750 | ABCabc | ||
| 751 | 0: ABCabc | ||
| 752 | 1: ABC | ||
| 753 | abcABC | ||
| 754 | 0: abcABC | ||
| 755 | 1: abc | ||
| 756 | |||
| 757 | /a{0}bc/ | ||
| 758 | bc | ||
| 759 | 0: bc | ||
| 760 | |||
| 761 | /^([^a])([^b])([^c]*)([^d]{3,4})/ | ||
| 762 | baNOTccccd | ||
| 763 | 0: baNOTcccc | ||
| 764 | 1: b | ||
| 765 | 2: a | ||
| 766 | 3: NOT | ||
| 767 | 4: cccc | ||
| 768 | baNOTcccd | ||
| 769 | 0: baNOTccc | ||
| 770 | 1: b | ||
| 771 | 2: a | ||
| 772 | 3: NOT | ||
| 773 | 4: ccc | ||
| 774 | baNOTccd | ||
| 775 | 0: baNOTcc | ||
| 776 | 1: b | ||
| 777 | 2: a | ||
| 778 | 3: NO | ||
| 779 | 4: Tcc | ||
| 780 | bacccd | ||
| 781 | 0: baccc | ||
| 782 | 1: b | ||
| 783 | 2: a | ||
| 784 | 3: | ||
| 785 | 4: ccc | ||
| 786 | *** Failers | ||
| 787 | 0: *** Failers | ||
| 788 | 1: * | ||
| 789 | 2: * | ||
| 790 | 3: * Fail | ||
| 791 | 4: ers | ||
| 792 | anything | ||
| 793 | No match | ||
| 794 | baccd | ||
| 795 | No match | ||
| 796 | |||
| 797 | /[^a]/ | ||
| 798 | Abc | ||
| 799 | 0: A | ||
| 800 | |||
| 801 | /[^a]/i | ||
| 802 | Abc | ||
| 803 | 0: b | ||
| 804 | |||
| 805 | /[^a]+/ | ||
| 806 | AAAaAbc | ||
| 807 | 0: AAA | ||
| 808 | |||
| 809 | /[^a]+/i | ||
| 810 | AAAaAbc | ||
| 811 | 0: bc | ||
| 812 | |||
| 813 | /[^k]$/ | ||
| 814 | abc | ||
| 815 | 0: c | ||
| 816 | *** Failers | ||
| 817 | 0: s | ||
| 818 | abk | ||
| 819 | No match | ||
| 820 | |||
| 821 | /[^k]{2,3}$/ | ||
| 822 | abc | ||
| 823 | 0: abc | ||
| 824 | kbc | ||
| 825 | 0: bc | ||
| 826 | kabc | ||
| 827 | 0: abc | ||
| 828 | *** Failers | ||
| 829 | 0: ers | ||
| 830 | abk | ||
| 831 | No match | ||
| 832 | akb | ||
| 833 | No match | ||
| 834 | akk | ||
| 835 | No match | ||
| 836 | |||
| 837 | /^[0-9]{8,}@.+[^k]$/ | ||
| 838 | 12345678@a.b.c.d | ||
| 839 | 0: 12345678@a.b.c.d | ||
| 840 | 123456789@x.y.z | ||
| 841 | 0: 123456789@x.y.z | ||
| 842 | *** Failers | ||
| 843 | No match | ||
| 844 | 12345678@x.y.uk | ||
| 845 | No match | ||
| 846 | 1234567@a.b.c.d | ||
| 847 | No match | ||
| 848 | |||
| 849 | /(a)\1{8,}/ | ||
| 850 | aaaaaaaaa | ||
| 851 | 0: aaaaaaaaa | ||
| 852 | 1: a | ||
| 853 | aaaaaaaaaa | ||
| 854 | 0: aaaaaaaaaa | ||
| 855 | 1: a | ||
| 856 | *** Failers | ||
| 857 | No match | ||
| 858 | aaaaaaa | ||
| 859 | No match | ||
| 860 | |||
| 861 | /[^a]/ | ||
| 862 | aaaabcd | ||
| 863 | 0: b | ||
| 864 | aaAabcd | ||
| 865 | 0: A | ||
| 866 | |||
| 867 | /[^a]/i | ||
| 868 | aaaabcd | ||
| 869 | 0: b | ||
| 870 | aaAabcd | ||
| 871 | 0: b | ||
| 872 | |||
| 873 | /[^az]/ | ||
| 874 | aaaabcd | ||
| 875 | 0: b | ||
| 876 | aaAabcd | ||
| 877 | 0: A | ||
| 878 | |||
| 879 | /[^az]/i | ||
| 880 | aaaabcd | ||
| 881 | 0: b | ||
| 882 | aaAabcd | ||
| 883 | 0: b | ||
| 884 | |||
| 885 | /P[^*]TAIRE[^*]{1,6}LL/ | ||
| 886 | xxxxxxxxxxxPSTAIREISLLxxxxxxxxx | ||
| 887 | 0: PSTAIREISLL | ||
| 888 | |||
| 889 | /P[^*]TAIRE[^*]{1,}LL/ | ||
| 890 | xxxxxxxxxxxPSTAIREISLLxxxxxxxxx | ||
| 891 | 0: PSTAIREISLL | ||
| 892 | |||
| 893 | /(\.[0-9][0-9][1-9]?)[0-9]+/ | ||
| 894 | 1.230003938 | ||
| 895 | 0: .230003938 | ||
| 896 | 1: .23 | ||
| 897 | 1.875000282 | ||
| 898 | 0: .875000282 | ||
| 899 | 1: .875 | ||
| 900 | 1.235 | ||
| 901 | 0: .235 | ||
| 902 | 1: .23 | ||
| 903 | |||
| 904 | /\b(foo)\s+(\w+)/i | ||
| 905 | Food is on the foo table | ||
| 906 | 0: foo table | ||
| 907 | 1: foo | ||
| 908 | 2: table | ||
| 909 | |||
| 910 | /foo(.*)bar/ | ||
| 911 | The food is under the bar in the barn. | ||
| 912 | 0: food is under the bar in the bar | ||
| 913 | 1: d is under the bar in the | ||
| 914 | |||
| 915 | /(.*)([0-9]*)/ | ||
| 916 | I have 2 numbers: 53147 | ||
| 917 | 0: I have 2 numbers: 53147 | ||
| 918 | 1: I have 2 numbers: 53147 | ||
| 919 | 2: | ||
| 920 | |||
| 921 | /(.*)([0-9]+)/ | ||
| 922 | I have 2 numbers: 53147 | ||
| 923 | 0: I have 2 numbers: 53147 | ||
| 924 | 1: I have 2 numbers: 5314 | ||
| 925 | 2: 7 | ||
| 926 | |||
| 927 | /(.*)([0-9]+)$/ | ||
| 928 | I have 2 numbers: 53147 | ||
| 929 | 0: I have 2 numbers: 53147 | ||
| 930 | 1: I have 2 numbers: 5314 | ||
| 931 | 2: 7 | ||
| 932 | |||
| 933 | /(.*)\b([0-9]+)$/ | ||
| 934 | I have 2 numbers: 53147 | ||
| 935 | 0: I have 2 numbers: 53147 | ||
| 936 | 1: I have 2 numbers: | ||
| 937 | 2: 53147 | ||
| 938 | |||
| 939 | /(.*[^0-9])([0-9]+)$/ | ||
| 940 | I have 2 numbers: 53147 | ||
| 941 | 0: I have 2 numbers: 53147 | ||
| 942 | 1: I have 2 numbers: | ||
| 943 | 2: 53147 | ||
| 944 | |||
| 945 | /[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]][[:digit:]][[:digit:]]/ | ||
| 946 | 01/01/2000 | ||
| 947 | 0: 01/01/2000 | ||
| 948 | |||
| 949 | /^(a){0,0}/ | ||
| 950 | bcd | ||
| 951 | 0: | ||
| 952 | abc | ||
| 953 | 0: | ||
| 954 | aab | ||
| 955 | 0: | ||
| 956 | |||
| 957 | /^(a){0,1}/ | ||
| 958 | bcd | ||
| 959 | 0: | ||
| 960 | abc | ||
| 961 | 0: a | ||
| 962 | 1: a | ||
| 963 | aab | ||
| 964 | 0: a | ||
| 965 | 1: a | ||
| 966 | |||
| 967 | /^(a){0,2}/ | ||
| 968 | bcd | ||
| 969 | 0: | ||
| 970 | abc | ||
| 971 | 0: a | ||
| 972 | 1: a | ||
| 973 | aab | ||
| 974 | 0: aa | ||
| 975 | 1: a | ||
| 976 | |||
| 977 | /^(a){0,3}/ | ||
| 978 | bcd | ||
| 979 | 0: | ||
| 980 | abc | ||
| 981 | 0: a | ||
| 982 | 1: a | ||
| 983 | aab | ||
| 984 | 0: aa | ||
| 985 | 1: a | ||
| 986 | aaa | ||
| 987 | 0: aaa | ||
| 988 | 1: a | ||
| 989 | |||
| 990 | /^(a){0,}/ | ||
| 991 | bcd | ||
| 992 | 0: | ||
| 993 | abc | ||
| 994 | 0: a | ||
| 995 | 1: a | ||
| 996 | aab | ||
| 997 | 0: aa | ||
| 998 | 1: a | ||
| 999 | aaa | ||
| 1000 | 0: aaa | ||
| 1001 | 1: a | ||
| 1002 | aaaaaaaa | ||
| 1003 | 0: aaaaaaaa | ||
| 1004 | 1: a | ||
| 1005 | |||
| 1006 | /^(a){1,1}/ | ||
| 1007 | bcd | ||
| 1008 | No match | ||
| 1009 | abc | ||
| 1010 | 0: a | ||
| 1011 | 1: a | ||
| 1012 | aab | ||
| 1013 | 0: a | ||
| 1014 | 1: a | ||
| 1015 | |||
| 1016 | /^(a){1,2}/ | ||
| 1017 | bcd | ||
| 1018 | No match | ||
| 1019 | abc | ||
| 1020 | 0: a | ||
| 1021 | 1: a | ||
| 1022 | aab | ||
| 1023 | 0: aa | ||
| 1024 | 1: a | ||
| 1025 | |||
| 1026 | /^(a){1,3}/ | ||
| 1027 | bcd | ||
| 1028 | No match | ||
| 1029 | abc | ||
| 1030 | 0: a | ||
| 1031 | 1: a | ||
| 1032 | aab | ||
| 1033 | 0: aa | ||
| 1034 | 1: a | ||
| 1035 | aaa | ||
| 1036 | 0: aaa | ||
| 1037 | 1: a | ||
| 1038 | |||
| 1039 | /^(a){1,}/ | ||
| 1040 | bcd | ||
| 1041 | No match | ||
| 1042 | abc | ||
| 1043 | 0: a | ||
| 1044 | 1: a | ||
| 1045 | aab | ||
| 1046 | 0: aa | ||
| 1047 | 1: a | ||
| 1048 | aaa | ||
| 1049 | 0: aaa | ||
| 1050 | 1: a | ||
| 1051 | aaaaaaaa | ||
| 1052 | 0: aaaaaaaa | ||
| 1053 | 1: a | ||
| 1054 | |||
| 1055 | /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ | ||
| 1056 | 123456654321 | ||
| 1057 | 0: 123456654321 | ||
| 1058 | |||
| 1059 | /^[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/ | ||
| 1060 | 123456654321 | ||
| 1061 | 0: 123456654321 | ||
| 1062 | |||
| 1063 | /^[abc]{12}/ | ||
| 1064 | abcabcabcabc | ||
| 1065 | 0: abcabcabcabc | ||
| 1066 | |||
| 1067 | /^[a-c]{12}/ | ||
| 1068 | abcabcabcabc | ||
| 1069 | 0: abcabcabcabc | ||
| 1070 | |||
| 1071 | /^(a|b|c){12}/ | ||
| 1072 | abcabcabcabc | ||
| 1073 | 0: abcabcabcabc | ||
| 1074 | 1: c | ||
| 1075 | |||
| 1076 | /^[abcdefghijklmnopqrstuvwxy0123456789]/ | ||
| 1077 | n | ||
| 1078 | 0: n | ||
| 1079 | *** Failers | ||
| 1080 | No match | ||
| 1081 | z | ||
| 1082 | No match | ||
| 1083 | |||
| 1084 | /abcde{0,0}/ | ||
| 1085 | abcd | ||
| 1086 | 0: abcd | ||
| 1087 | *** Failers | ||
| 1088 | No match | ||
| 1089 | abce | ||
| 1090 | No match | ||
| 1091 | |||
| 1092 | /ab[cd]{0,0}e/ | ||
| 1093 | abe | ||
| 1094 | 0: abe | ||
| 1095 | *** Failers | ||
| 1096 | No match | ||
| 1097 | abcde | ||
| 1098 | No match | ||
| 1099 | |||
| 1100 | /ab(c){0,0}d/ | ||
| 1101 | abd | ||
| 1102 | 0: abd | ||
| 1103 | *** Failers | ||
| 1104 | No match | ||
| 1105 | abcd | ||
| 1106 | No match | ||
| 1107 | |||
| 1108 | /a(b*)/ | ||
| 1109 | a | ||
| 1110 | 0: a | ||
| 1111 | 1: | ||
| 1112 | ab | ||
| 1113 | 0: ab | ||
| 1114 | 1: b | ||
| 1115 | abbbb | ||
| 1116 | 0: abbbb | ||
| 1117 | 1: bbbb | ||
| 1118 | *** Failers | ||
| 1119 | 0: a | ||
| 1120 | 1: | ||
| 1121 | bbbbb | ||
| 1122 | No match | ||
| 1123 | |||
| 1124 | /ab[0-9]{0}e/ | ||
| 1125 | abe | ||
| 1126 | 0: abe | ||
| 1127 | *** Failers | ||
| 1128 | No match | ||
| 1129 | ab1e | ||
| 1130 | No match | ||
| 1131 | |||
| 1132 | /(A|B)*CD/ | ||
| 1133 | CD | ||
| 1134 | 0: CD | ||
| 1135 | |||
| 1136 | /(AB)*\1/ | ||
| 1137 | ABABAB | ||
| 1138 | 0: ABABAB | ||
| 1139 | 1: AB | ||
| 1140 | |||
| 1141 | /([0-9]+)(\w)/ | ||
| 1142 | 12345a | ||
| 1143 | 0: 12345a | ||
| 1144 | 1: 12345 | ||
| 1145 | 2: a | ||
| 1146 | 12345+ | ||
| 1147 | 0: 12345 | ||
| 1148 | 1: 1234 | ||
| 1149 | 2: 5 | ||
| 1150 | |||
| 1151 | /(abc|)+/ | ||
| 1152 | abc | ||
| 1153 | 0: abc | ||
| 1154 | 1: abc | ||
| 1155 | abcabc | ||
| 1156 | 0: abcabc | ||
| 1157 | 1: abc | ||
| 1158 | abcabcabc | ||
| 1159 | 0: abcabcabc | ||
| 1160 | 1: abc | ||
| 1161 | xyz | ||
| 1162 | 0: | ||
| 1163 | 1: | ||
| 1164 | |||
| 1165 | /([a]*)*/ | ||
| 1166 | a | ||
| 1167 | 0: a | ||
| 1168 | 1: a | ||
| 1169 | aaaaa | ||
| 1170 | 0: aaaaa | ||
| 1171 | 1: aaaaa | ||
| 1172 | |||
| 1173 | /([ab]*)*/ | ||
| 1174 | a | ||
| 1175 | 0: a | ||
| 1176 | 1: a | ||
| 1177 | b | ||
| 1178 | 0: b | ||
| 1179 | 1: b | ||
| 1180 | ababab | ||
| 1181 | 0: ababab | ||
| 1182 | 1: ababab | ||
| 1183 | aaaabcde | ||
| 1184 | 0: aaaab | ||
| 1185 | 1: aaaab | ||
| 1186 | bbbb | ||
| 1187 | 0: bbbb | ||
| 1188 | 1: bbbb | ||
| 1189 | |||
| 1190 | /([^a]*)*/ | ||
| 1191 | b | ||
| 1192 | 0: b | ||
| 1193 | 1: b | ||
| 1194 | bbbb | ||
| 1195 | 0: bbbb | ||
| 1196 | 1: bbbb | ||
| 1197 | aaa | ||
| 1198 | 0: | ||
| 1199 | |||
| 1200 | /([^ab]*)*/ | ||
| 1201 | cccc | ||
| 1202 | 0: cccc | ||
| 1203 | 1: cccc | ||
| 1204 | abab | ||
| 1205 | 0: | ||
| 1206 | |||
| 1207 | /abc/ | ||
| 1208 | abc | ||
| 1209 | 0: abc | ||
| 1210 | xabcy | ||
| 1211 | 0: abc | ||
| 1212 | ababc | ||
| 1213 | 0: abc | ||
| 1214 | *** Failers | ||
| 1215 | No match | ||
| 1216 | xbc | ||
| 1217 | No match | ||
| 1218 | axc | ||
| 1219 | No match | ||
| 1220 | abx | ||
| 1221 | No match | ||
| 1222 | |||
| 1223 | /ab*c/ | ||
| 1224 | abc | ||
| 1225 | 0: abc | ||
| 1226 | |||
| 1227 | /ab*bc/ | ||
| 1228 | abc | ||
| 1229 | 0: abc | ||
| 1230 | abbc | ||
| 1231 | 0: abbc | ||
| 1232 | abbbbc | ||
| 1233 | 0: abbbbc | ||
| 1234 | |||
| 1235 | /.{1}/ | ||
| 1236 | abbbbc | ||
| 1237 | 0: a | ||
| 1238 | |||
| 1239 | /.{3,4}/ | ||
| 1240 | abbbbc | ||
| 1241 | 0: abbb | ||
| 1242 | |||
| 1243 | /ab{0,}bc/ | ||
| 1244 | abbbbc | ||
| 1245 | 0: abbbbc | ||
| 1246 | |||
| 1247 | /ab+bc/ | ||
| 1248 | abbc | ||
| 1249 | 0: abbc | ||
| 1250 | *** Failers | ||
| 1251 | No match | ||
| 1252 | abc | ||
| 1253 | No match | ||
| 1254 | abq | ||
| 1255 | No match | ||
| 1256 | |||
| 1257 | /ab+bc/ | ||
| 1258 | abbbbc | ||
| 1259 | 0: abbbbc | ||
| 1260 | |||
| 1261 | /ab{1,}bc/ | ||
| 1262 | abbbbc | ||
| 1263 | 0: abbbbc | ||
| 1264 | |||
| 1265 | /ab{1,3}bc/ | ||
| 1266 | abbbbc | ||
| 1267 | 0: abbbbc | ||
| 1268 | |||
| 1269 | /ab{3,4}bc/ | ||
| 1270 | abbbbc | ||
| 1271 | 0: abbbbc | ||
| 1272 | |||
| 1273 | /ab{4,5}bc/ | ||
| 1274 | *** Failers | ||
| 1275 | No match | ||
| 1276 | abq | ||
| 1277 | No match | ||
| 1278 | abbbbc | ||
| 1279 | No match | ||
| 1280 | |||
| 1281 | /ab?bc/ | ||
| 1282 | abbc | ||
| 1283 | 0: abbc | ||
| 1284 | abc | ||
| 1285 | 0: abc | ||
| 1286 | |||
| 1287 | /ab{0,1}bc/ | ||
| 1288 | abc | ||
| 1289 | 0: abc | ||
| 1290 | |||
| 1291 | /ab?c/ | ||
| 1292 | abc | ||
| 1293 | 0: abc | ||
| 1294 | |||
| 1295 | /ab{0,1}c/ | ||
| 1296 | abc | ||
| 1297 | 0: abc | ||
| 1298 | |||
| 1299 | /^abc$/ | ||
| 1300 | abc | ||
| 1301 | 0: abc | ||
| 1302 | *** Failers | ||
| 1303 | No match | ||
| 1304 | abbbbc | ||
| 1305 | No match | ||
| 1306 | abcc | ||
| 1307 | No match | ||
| 1308 | |||
| 1309 | /^abc/ | ||
| 1310 | abcc | ||
| 1311 | 0: abc | ||
| 1312 | |||
| 1313 | /abc$/ | ||
| 1314 | aabc | ||
| 1315 | 0: abc | ||
| 1316 | *** Failers | ||
| 1317 | No match | ||
| 1318 | aabc | ||
| 1319 | 0: abc | ||
| 1320 | aabcd | ||
| 1321 | No match | ||
| 1322 | |||
| 1323 | /^/ | ||
| 1324 | abc | ||
| 1325 | 0: | ||
| 1326 | |||
| 1327 | /$/ | ||
| 1328 | abc | ||
| 1329 | 0: | ||
| 1330 | |||
| 1331 | /a.c/ | ||
| 1332 | abc | ||
| 1333 | 0: abc | ||
| 1334 | axc | ||
| 1335 | 0: axc | ||
| 1336 | |||
| 1337 | /a.*c/ | ||
| 1338 | axyzc | ||
| 1339 | 0: axyzc | ||
| 1340 | |||
| 1341 | /a[bc]d/ | ||
| 1342 | abd | ||
| 1343 | 0: abd | ||
| 1344 | *** Failers | ||
| 1345 | No match | ||
| 1346 | axyzd | ||
| 1347 | No match | ||
| 1348 | abc | ||
| 1349 | No match | ||
| 1350 | |||
| 1351 | /a[b-d]e/ | ||
| 1352 | ace | ||
| 1353 | 0: ace | ||
| 1354 | |||
| 1355 | /a[b-d]/ | ||
| 1356 | aac | ||
| 1357 | 0: ac | ||
| 1358 | |||
| 1359 | /a[-b]/ | ||
| 1360 | a- | ||
| 1361 | 0: a- | ||
| 1362 | |||
| 1363 | /a[b-]/ | ||
| 1364 | a- | ||
| 1365 | 0: a- | ||
| 1366 | |||
| 1367 | /a[]]b/ | ||
| 1368 | a]b | ||
| 1369 | 0: a]b | ||
| 1370 | |||
| 1371 | /a[^bc]d/ | ||
| 1372 | aed | ||
| 1373 | 0: aed | ||
| 1374 | *** Failers | ||
| 1375 | No match | ||
| 1376 | abd | ||
| 1377 | No match | ||
| 1378 | abd | ||
| 1379 | No match | ||
| 1380 | |||
| 1381 | /a[^-b]c/ | ||
| 1382 | adc | ||
| 1383 | 0: adc | ||
| 1384 | |||
| 1385 | /a[^]b]c/ | ||
| 1386 | adc | ||
| 1387 | 0: adc | ||
| 1388 | *** Failers | ||
| 1389 | No match | ||
| 1390 | a-c | ||
| 1391 | 0: a-c | ||
| 1392 | a]c | ||
| 1393 | No match | ||
| 1394 | |||
| 1395 | /\ba\b/ | ||
| 1396 | a- | ||
| 1397 | 0: a | ||
| 1398 | -a | ||
| 1399 | 0: a | ||
| 1400 | -a- | ||
| 1401 | 0: a | ||
| 1402 | |||
| 1403 | /\by\b/ | ||
| 1404 | *** Failers | ||
| 1405 | No match | ||
| 1406 | xy | ||
| 1407 | No match | ||
| 1408 | yz | ||
| 1409 | No match | ||
| 1410 | xyz | ||
| 1411 | No match | ||
| 1412 | |||
| 1413 | /\Ba\B/ | ||
| 1414 | *** Failers | ||
| 1415 | 0: a | ||
| 1416 | a- | ||
| 1417 | No match | ||
| 1418 | -a | ||
| 1419 | No match | ||
| 1420 | -a- | ||
| 1421 | No match | ||
| 1422 | |||
| 1423 | /\By\b/ | ||
| 1424 | xy | ||
| 1425 | 0: y | ||
| 1426 | |||
| 1427 | /\by\B/ | ||
| 1428 | yz | ||
| 1429 | 0: y | ||
| 1430 | |||
| 1431 | /\By\B/ | ||
| 1432 | xyz | ||
| 1433 | 0: y | ||
| 1434 | |||
| 1435 | /\w/ | ||
| 1436 | a | ||
| 1437 | 0: a | ||
| 1438 | |||
| 1439 | /\W/ | ||
| 1440 | - | ||
| 1441 | 0: - | ||
| 1442 | *** Failers | ||
| 1443 | 0: * | ||
| 1444 | - | ||
| 1445 | 0: - | ||
| 1446 | a | ||
| 1447 | No match | ||
| 1448 | |||
| 1449 | /a\sb/ | ||
| 1450 | a b | ||
| 1451 | 0: a b | ||
| 1452 | |||
| 1453 | /a\Sb/ | ||
| 1454 | a-b | ||
| 1455 | 0: a-b | ||
| 1456 | *** Failers | ||
| 1457 | No match | ||
| 1458 | a-b | ||
| 1459 | 0: a-b | ||
| 1460 | a b | ||
| 1461 | No match | ||
| 1462 | |||
| 1463 | /[0-9]/ | ||
| 1464 | 1 | ||
| 1465 | 0: 1 | ||
| 1466 | |||
| 1467 | /[^0-9]/ | ||
| 1468 | - | ||
| 1469 | 0: - | ||
| 1470 | *** Failers | ||
| 1471 | 0: * | ||
| 1472 | - | ||
| 1473 | 0: - | ||
| 1474 | 1 | ||
| 1475 | No match | ||
| 1476 | |||
| 1477 | /ab|cd/ | ||
| 1478 | abc | ||
| 1479 | 0: ab | ||
| 1480 | abcd | ||
| 1481 | 0: ab | ||
| 1482 | |||
| 1483 | /()ef/ | ||
| 1484 | def | ||
| 1485 | 0: ef | ||
| 1486 | 1: | ||
| 1487 | |||
| 1488 | /a\(b/ | ||
| 1489 | a(b | ||
| 1490 | 0: a(b | ||
| 1491 | |||
| 1492 | /a\(*b/ | ||
| 1493 | ab | ||
| 1494 | 0: ab | ||
| 1495 | a((b | ||
| 1496 | 0: a((b | ||
| 1497 | |||
| 1498 | /((a))/ | ||
| 1499 | abc | ||
| 1500 | 0: a | ||
| 1501 | 1: a | ||
| 1502 | 2: a | ||
| 1503 | |||
| 1504 | /(a)b(c)/ | ||
| 1505 | abc | ||
| 1506 | 0: abc | ||
| 1507 | 1: a | ||
| 1508 | 2: c | ||
| 1509 | |||
| 1510 | /a+b+c/ | ||
| 1511 | aabbabc | ||
| 1512 | 0: abc | ||
| 1513 | |||
| 1514 | /a{1,}b{1,}c/ | ||
| 1515 | aabbabc | ||
| 1516 | 0: abc | ||
| 1517 | |||
| 1518 | /(a+|b)*/ | ||
| 1519 | ab | ||
| 1520 | 0: ab | ||
| 1521 | 1: b | ||
| 1522 | |||
| 1523 | /(a+|b){0,}/ | ||
| 1524 | ab | ||
| 1525 | 0: ab | ||
| 1526 | 1: b | ||
| 1527 | |||
| 1528 | /(a+|b)+/ | ||
| 1529 | ab | ||
| 1530 | 0: ab | ||
| 1531 | 1: b | ||
| 1532 | |||
| 1533 | /(a+|b){1,}/ | ||
| 1534 | ab | ||
| 1535 | 0: ab | ||
| 1536 | 1: b | ||
| 1537 | |||
| 1538 | /(a+|b)?/ | ||
| 1539 | ab | ||
| 1540 | 0: a | ||
| 1541 | 1: a | ||
| 1542 | |||
| 1543 | /(a+|b){0,1}/ | ||
| 1544 | ab | ||
| 1545 | 0: a | ||
| 1546 | 1: a | ||
| 1547 | |||
| 1548 | /[^ab]*/ | ||
| 1549 | cde | ||
| 1550 | 0: cde | ||
| 1551 | |||
| 1552 | /abc/ | ||
| 1553 | *** Failers | ||
| 1554 | No match | ||
| 1555 | b | ||
| 1556 | No match | ||
| 1557 | |||
| 1558 | |||
| 1559 | /a*/ | ||
| 1560 | |||
| 1561 | |||
| 1562 | /([abc])*d/ | ||
| 1563 | abbbcd | ||
| 1564 | 0: abbbcd | ||
| 1565 | 1: c | ||
| 1566 | |||
| 1567 | /([abc])*bcd/ | ||
| 1568 | abcd | ||
| 1569 | 0: abcd | ||
| 1570 | 1: a | ||
| 1571 | |||
| 1572 | /a|b|c|d|e/ | ||
| 1573 | e | ||
| 1574 | 0: e | ||
| 1575 | |||
| 1576 | /(a|b|c|d|e)f/ | ||
| 1577 | ef | ||
| 1578 | 0: ef | ||
| 1579 | 1: e | ||
| 1580 | |||
| 1581 | /abcd*efg/ | ||
| 1582 | abcdefg | ||
| 1583 | 0: abcdefg | ||
| 1584 | |||
| 1585 | /ab*/ | ||
| 1586 | xabyabbbz | ||
| 1587 | 0: ab | ||
| 1588 | xayabbbz | ||
| 1589 | 0: a | ||
| 1590 | |||
| 1591 | /(ab|cd)e/ | ||
| 1592 | abcde | ||
| 1593 | 0: cde | ||
| 1594 | 1: cd | ||
| 1595 | |||
| 1596 | /[abhgefdc]ij/ | ||
| 1597 | hij | ||
| 1598 | 0: hij | ||
| 1599 | |||
| 1600 | /(abc|)ef/ | ||
| 1601 | abcdef | ||
| 1602 | 0: ef | ||
| 1603 | 1: | ||
| 1604 | |||
| 1605 | /(a|b)c*d/ | ||
| 1606 | abcd | ||
| 1607 | 0: bcd | ||
| 1608 | 1: b | ||
| 1609 | |||
| 1610 | /(ab|ab*)bc/ | ||
| 1611 | abc | ||
| 1612 | 0: abc | ||
| 1613 | 1: a | ||
| 1614 | |||
| 1615 | /a([bc]*)c*/ | ||
| 1616 | abc | ||
| 1617 | 0: abc | ||
| 1618 | 1: bc | ||
| 1619 | |||
| 1620 | /a([bc]*)(c*d)/ | ||
| 1621 | abcd | ||
| 1622 | 0: abcd | ||
| 1623 | 1: bc | ||
| 1624 | 2: d | ||
| 1625 | |||
| 1626 | /a([bc]+)(c*d)/ | ||
| 1627 | abcd | ||
| 1628 | 0: abcd | ||
| 1629 | 1: bc | ||
| 1630 | 2: d | ||
| 1631 | |||
| 1632 | /a([bc]*)(c+d)/ | ||
| 1633 | abcd | ||
| 1634 | 0: abcd | ||
| 1635 | 1: b | ||
| 1636 | 2: cd | ||
| 1637 | |||
| 1638 | /a[bcd]*dcdcde/ | ||
| 1639 | adcdcde | ||
| 1640 | 0: adcdcde | ||
| 1641 | |||
| 1642 | /a[bcd]+dcdcde/ | ||
| 1643 | *** Failers | ||
| 1644 | No match | ||
| 1645 | abcde | ||
| 1646 | No match | ||
| 1647 | adcdcde | ||
| 1648 | No match | ||
| 1649 | |||
| 1650 | /(ab|a)b*c/ | ||
| 1651 | abc | ||
| 1652 | 0: abc | ||
| 1653 | 1: ab | ||
| 1654 | |||
| 1655 | /((a)(b)c)(d)/ | ||
| 1656 | abcd | ||
| 1657 | 0: abcd | ||
| 1658 | 1: abc | ||
| 1659 | 2: a | ||
| 1660 | 3: b | ||
| 1661 | 4: d | ||
| 1662 | |||
| 1663 | /[a-zA-Z_][a-zA-Z0-9_]*/ | ||
| 1664 | alpha | ||
| 1665 | 0: alpha | ||
| 1666 | |||
| 1667 | /^a(bc+|b[eh])g|.h$/ | ||
| 1668 | abh | ||
| 1669 | 0: bh | ||
| 1670 | |||
| 1671 | /(bc+d$|ef*g.|h?i(j|k))/ | ||
| 1672 | effgz | ||
| 1673 | 0: effgz | ||
| 1674 | 1: effgz | ||
| 1675 | ij | ||
| 1676 | 0: ij | ||
| 1677 | 1: ij | ||
| 1678 | 2: j | ||
| 1679 | reffgz | ||
| 1680 | 0: effgz | ||
| 1681 | 1: effgz | ||
| 1682 | *** Failers | ||
| 1683 | No match | ||
| 1684 | effg | ||
| 1685 | No match | ||
| 1686 | bcdd | ||
| 1687 | No match | ||
| 1688 | |||
| 1689 | /((((((((((a))))))))))/ | ||
| 1690 | a | ||
| 1691 | 0: a | ||
| 1692 | 1: a | ||
| 1693 | 2: a | ||
| 1694 | 3: a | ||
| 1695 | 4: a | ||
| 1696 | 5: a | ||
| 1697 | 6: a | ||
| 1698 | 7: a | ||
| 1699 | 8: a | ||
| 1700 | 9: a | ||
| 1701 | 10: a | ||
| 1702 | |||
| 1703 | /((((((((((a))))))))))\9/ | ||
| 1704 | aa | ||
| 1705 | 0: aa | ||
| 1706 | 1: a | ||
| 1707 | 2: a | ||
| 1708 | 3: a | ||
| 1709 | 4: a | ||
| 1710 | 5: a | ||
| 1711 | 6: a | ||
| 1712 | 7: a | ||
| 1713 | 8: a | ||
| 1714 | 9: a | ||
| 1715 | 10: a | ||
| 1716 | |||
| 1717 | /(((((((((a)))))))))/ | ||
| 1718 | a | ||
| 1719 | 0: a | ||
| 1720 | 1: a | ||
| 1721 | 2: a | ||
| 1722 | 3: a | ||
| 1723 | 4: a | ||
| 1724 | 5: a | ||
| 1725 | 6: a | ||
| 1726 | 7: a | ||
| 1727 | 8: a | ||
| 1728 | 9: a | ||
| 1729 | |||
| 1730 | /multiple words of text/ | ||
| 1731 | *** Failers | ||
| 1732 | No match | ||
| 1733 | aa | ||
| 1734 | No match | ||
| 1735 | uh-uh | ||
| 1736 | No match | ||
| 1737 | |||
| 1738 | /multiple words/ | ||
| 1739 | multiple words, yeah | ||
| 1740 | 0: multiple words | ||
| 1741 | |||
| 1742 | /(.*)c(.*)/ | ||
| 1743 | abcde | ||
| 1744 | 0: abcde | ||
| 1745 | 1: ab | ||
| 1746 | 2: de | ||
| 1747 | |||
| 1748 | /\((.*), (.*)\)/ | ||
| 1749 | (a, b) | ||
| 1750 | 0: (a, b) | ||
| 1751 | 1: a | ||
| 1752 | 2: b | ||
| 1753 | |||
| 1754 | /abcd/ | ||
| 1755 | abcd | ||
| 1756 | 0: abcd | ||
| 1757 | |||
| 1758 | /a(bc)d/ | ||
| 1759 | abcd | ||
| 1760 | 0: abcd | ||
| 1761 | 1: bc | ||
| 1762 | |||
| 1763 | /a[-]?c/ | ||
| 1764 | ac | ||
| 1765 | 0: ac | ||
| 1766 | |||
| 1767 | /(abc)\1/ | ||
| 1768 | abcabc | ||
| 1769 | 0: abcabc | ||
| 1770 | 1: abc | ||
| 1771 | |||
| 1772 | /([a-c]*)\1/ | ||
| 1773 | abcabc | ||
| 1774 | 0: abcabc | ||
| 1775 | 1: abc | ||
| 1776 | |||
| 1777 | /(a)|\1/ | ||
| 1778 | a | ||
| 1779 | 0: a | ||
| 1780 | 1: a | ||
| 1781 | *** Failers | ||
| 1782 | 0: a | ||
| 1783 | 1: a | ||
| 1784 | ab | ||
| 1785 | 0: a | ||
| 1786 | 1: a | ||
| 1787 | x | ||
| 1788 | No match | ||
| 1789 | |||
| 1790 | /abc/i | ||
| 1791 | ABC | ||
| 1792 | 0: ABC | ||
| 1793 | XABCY | ||
| 1794 | 0: ABC | ||
| 1795 | ABABC | ||
| 1796 | 0: ABC | ||
| 1797 | *** Failers | ||
| 1798 | No match | ||
| 1799 | aaxabxbaxbbx | ||
| 1800 | No match | ||
| 1801 | XBC | ||
| 1802 | No match | ||
| 1803 | AXC | ||
| 1804 | No match | ||
| 1805 | ABX | ||
| 1806 | No match | ||
| 1807 | |||
| 1808 | /ab*c/i | ||
| 1809 | ABC | ||
| 1810 | 0: ABC | ||
| 1811 | |||
| 1812 | /ab*bc/i | ||
| 1813 | ABC | ||
| 1814 | 0: ABC | ||
| 1815 | ABBC | ||
| 1816 | 0: ABBC | ||
| 1817 | |||
| 1818 | /ab+bc/i | ||
| 1819 | *** Failers | ||
| 1820 | No match | ||
| 1821 | ABC | ||
| 1822 | No match | ||
| 1823 | ABQ | ||
| 1824 | No match | ||
| 1825 | |||
| 1826 | /ab+bc/i | ||
| 1827 | ABBBBC | ||
| 1828 | 0: ABBBBC | ||
| 1829 | |||
| 1830 | /^abc$/i | ||
| 1831 | ABC | ||
| 1832 | 0: ABC | ||
| 1833 | *** Failers | ||
| 1834 | No match | ||
| 1835 | ABBBBC | ||
| 1836 | No match | ||
| 1837 | ABCC | ||
| 1838 | No match | ||
| 1839 | |||
| 1840 | /^abc/i | ||
| 1841 | ABCC | ||
| 1842 | 0: ABC | ||
| 1843 | |||
| 1844 | /abc$/i | ||
| 1845 | AABC | ||
| 1846 | 0: ABC | ||
| 1847 | |||
| 1848 | /^/i | ||
| 1849 | ABC | ||
| 1850 | 0: | ||
| 1851 | |||
| 1852 | /$/i | ||
| 1853 | ABC | ||
| 1854 | 0: | ||
| 1855 | |||
| 1856 | /a.c/i | ||
| 1857 | ABC | ||
| 1858 | 0: ABC | ||
| 1859 | AXC | ||
| 1860 | 0: AXC | ||
| 1861 | |||
| 1862 | /a.*c/i | ||
| 1863 | *** Failers | ||
| 1864 | No match | ||
| 1865 | AABC | ||
| 1866 | 0: AABC | ||
| 1867 | AXYZD | ||
| 1868 | No match | ||
| 1869 | |||
| 1870 | /a[bc]d/i | ||
| 1871 | ABD | ||
| 1872 | 0: ABD | ||
| 1873 | |||
| 1874 | /a[b-d]e/i | ||
| 1875 | ACE | ||
| 1876 | 0: ACE | ||
| 1877 | *** Failers | ||
| 1878 | No match | ||
| 1879 | ABC | ||
| 1880 | No match | ||
| 1881 | ABD | ||
| 1882 | No match | ||
| 1883 | |||
| 1884 | /a[b-d]/i | ||
| 1885 | AAC | ||
| 1886 | 0: AC | ||
| 1887 | |||
| 1888 | /a[-b]/i | ||
| 1889 | A- | ||
| 1890 | 0: A- | ||
| 1891 | |||
| 1892 | /a[b-]/i | ||
| 1893 | A- | ||
| 1894 | 0: A- | ||
| 1895 | |||
| 1896 | /a[]]b/i | ||
| 1897 | A]B | ||
| 1898 | 0: A]B | ||
| 1899 | |||
| 1900 | /a[^bc]d/i | ||
| 1901 | AED | ||
| 1902 | 0: AED | ||
| 1903 | |||
| 1904 | /a[^-b]c/i | ||
| 1905 | ADC | ||
| 1906 | 0: ADC | ||
| 1907 | *** Failers | ||
| 1908 | No match | ||
| 1909 | ABD | ||
| 1910 | No match | ||
| 1911 | A-C | ||
| 1912 | No match | ||
| 1913 | |||
| 1914 | /a[^]b]c/i | ||
| 1915 | ADC | ||
| 1916 | 0: ADC | ||
| 1917 | |||
| 1918 | /ab|cd/i | ||
| 1919 | ABC | ||
| 1920 | 0: AB | ||
| 1921 | ABCD | ||
| 1922 | 0: AB | ||
| 1923 | |||
| 1924 | /()ef/i | ||
| 1925 | DEF | ||
| 1926 | 0: EF | ||
| 1927 | 1: | ||
| 1928 | |||
| 1929 | /$b/i | ||
| 1930 | *** Failers | ||
| 1931 | No match | ||
| 1932 | A]C | ||
| 1933 | No match | ||
| 1934 | B | ||
| 1935 | No match | ||
| 1936 | |||
| 1937 | /a\(b/i | ||
| 1938 | A(B | ||
| 1939 | 0: A(B | ||
| 1940 | |||
| 1941 | /a\(*b/i | ||
| 1942 | AB | ||
| 1943 | 0: AB | ||
| 1944 | A((B | ||
| 1945 | 0: A((B | ||
| 1946 | |||
| 1947 | /((a))/i | ||
| 1948 | ABC | ||
| 1949 | 0: A | ||
| 1950 | 1: A | ||
| 1951 | 2: A | ||
| 1952 | |||
| 1953 | /(a)b(c)/i | ||
| 1954 | ABC | ||
| 1955 | 0: ABC | ||
| 1956 | 1: A | ||
| 1957 | 2: C | ||
| 1958 | |||
| 1959 | /a+b+c/i | ||
| 1960 | AABBABC | ||
| 1961 | 0: ABC | ||
| 1962 | |||
| 1963 | /a{1,}b{1,}c/i | ||
| 1964 | AABBABC | ||
| 1965 | 0: ABC | ||
| 1966 | |||
| 1967 | /(a+|b)*/i | ||
| 1968 | AB | ||
| 1969 | 0: AB | ||
| 1970 | 1: B | ||
| 1971 | |||
| 1972 | /(a+|b){0,}/i | ||
| 1973 | AB | ||
| 1974 | 0: AB | ||
| 1975 | 1: B | ||
| 1976 | |||
| 1977 | /(a+|b)+/i | ||
| 1978 | AB | ||
| 1979 | 0: AB | ||
| 1980 | 1: B | ||
| 1981 | |||
| 1982 | /(a+|b){1,}/i | ||
| 1983 | AB | ||
| 1984 | 0: AB | ||
| 1985 | 1: B | ||
| 1986 | |||
| 1987 | /(a+|b)?/i | ||
| 1988 | AB | ||
| 1989 | 0: A | ||
| 1990 | 1: A | ||
| 1991 | |||
| 1992 | /(a+|b){0,1}/i | ||
| 1993 | AB | ||
| 1994 | 0: A | ||
| 1995 | 1: A | ||
| 1996 | |||
| 1997 | /[^ab]*/i | ||
| 1998 | CDE | ||
| 1999 | 0: CDE | ||
| 2000 | |||
| 2001 | /([abc])*d/i | ||
| 2002 | ABBBCD | ||
| 2003 | 0: ABBBCD | ||
| 2004 | 1: C | ||
| 2005 | |||
| 2006 | /([abc])*bcd/i | ||
| 2007 | ABCD | ||
| 2008 | 0: ABCD | ||
| 2009 | 1: A | ||
| 2010 | |||
| 2011 | /a|b|c|d|e/i | ||
| 2012 | E | ||
| 2013 | 0: E | ||
| 2014 | |||
| 2015 | /(a|b|c|d|e)f/i | ||
| 2016 | EF | ||
| 2017 | 0: EF | ||
| 2018 | 1: E | ||
| 2019 | |||
| 2020 | /abcd*efg/i | ||
| 2021 | ABCDEFG | ||
| 2022 | 0: ABCDEFG | ||
| 2023 | |||
| 2024 | /ab*/i | ||
| 2025 | XABYABBBZ | ||
| 2026 | 0: AB | ||
| 2027 | XAYABBBZ | ||
| 2028 | 0: A | ||
| 2029 | |||
| 2030 | /(ab|cd)e/i | ||
| 2031 | ABCDE | ||
| 2032 | 0: CDE | ||
| 2033 | 1: CD | ||
| 2034 | |||
| 2035 | /[abhgefdc]ij/i | ||
| 2036 | HIJ | ||
| 2037 | 0: HIJ | ||
| 2038 | |||
| 2039 | /^(ab|cd)e/i | ||
| 2040 | ABCDE | ||
| 2041 | No match | ||
| 2042 | |||
| 2043 | /(abc|)ef/i | ||
| 2044 | ABCDEF | ||
| 2045 | 0: EF | ||
| 2046 | 1: | ||
| 2047 | |||
| 2048 | /(a|b)c*d/i | ||
| 2049 | ABCD | ||
| 2050 | 0: BCD | ||
| 2051 | 1: B | ||
| 2052 | |||
| 2053 | /(ab|ab*)bc/i | ||
| 2054 | ABC | ||
| 2055 | 0: ABC | ||
| 2056 | 1: A | ||
| 2057 | |||
| 2058 | /a([bc]*)c*/i | ||
| 2059 | ABC | ||
| 2060 | 0: ABC | ||
| 2061 | 1: BC | ||
| 2062 | |||
| 2063 | /a([bc]*)(c*d)/i | ||
| 2064 | ABCD | ||
| 2065 | 0: ABCD | ||
| 2066 | 1: BC | ||
| 2067 | 2: D | ||
| 2068 | |||
| 2069 | /a([bc]+)(c*d)/i | ||
| 2070 | ABCD | ||
| 2071 | 0: ABCD | ||
| 2072 | 1: BC | ||
| 2073 | 2: D | ||
| 2074 | |||
| 2075 | /a([bc]*)(c+d)/i | ||
| 2076 | ABCD | ||
| 2077 | 0: ABCD | ||
| 2078 | 1: B | ||
| 2079 | 2: CD | ||
| 2080 | |||
| 2081 | /a[bcd]*dcdcde/i | ||
| 2082 | ADCDCDE | ||
| 2083 | 0: ADCDCDE | ||
| 2084 | |||
| 2085 | /a[bcd]+dcdcde/i | ||
| 2086 | |||
| 2087 | /(ab|a)b*c/i | ||
| 2088 | ABC | ||
| 2089 | 0: ABC | ||
| 2090 | 1: AB | ||
| 2091 | |||
| 2092 | /((a)(b)c)(d)/i | ||
| 2093 | ABCD | ||
| 2094 | 0: ABCD | ||
| 2095 | 1: ABC | ||
| 2096 | 2: A | ||
| 2097 | 3: B | ||
| 2098 | 4: D | ||
| 2099 | |||
| 2100 | /[a-zA-Z_][a-zA-Z0-9_]*/i | ||
| 2101 | ALPHA | ||
| 2102 | 0: ALPHA | ||
| 2103 | |||
| 2104 | /^a(bc+|b[eh])g|.h$/i | ||
| 2105 | ABH | ||
| 2106 | 0: BH | ||
| 2107 | |||
| 2108 | /(bc+d$|ef*g.|h?i(j|k))/i | ||
| 2109 | EFFGZ | ||
| 2110 | 0: EFFGZ | ||
| 2111 | 1: EFFGZ | ||
| 2112 | IJ | ||
| 2113 | 0: IJ | ||
| 2114 | 1: IJ | ||
| 2115 | 2: J | ||
| 2116 | REFFGZ | ||
| 2117 | 0: EFFGZ | ||
| 2118 | 1: EFFGZ | ||
| 2119 | *** Failers | ||
| 2120 | No match | ||
| 2121 | ADCDCDE | ||
| 2122 | No match | ||
| 2123 | EFFG | ||
| 2124 | No match | ||
| 2125 | BCDD | ||
| 2126 | No match | ||
| 2127 | |||
| 2128 | /((((((((((a))))))))))/i | ||
| 2129 | A | ||
| 2130 | 0: A | ||
| 2131 | 1: A | ||
| 2132 | 2: A | ||
| 2133 | 3: A | ||
| 2134 | 4: A | ||
| 2135 | 5: A | ||
| 2136 | 6: A | ||
| 2137 | 7: A | ||
| 2138 | 8: A | ||
| 2139 | 9: A | ||
| 2140 | 10: A | ||
| 2141 | |||
| 2142 | /((((((((((a))))))))))\9/i | ||
| 2143 | AA | ||
| 2144 | 0: AA | ||
| 2145 | 1: A | ||
| 2146 | 2: A | ||
| 2147 | 3: A | ||
| 2148 | 4: A | ||
| 2149 | 5: A | ||
| 2150 | 6: A | ||
| 2151 | 7: A | ||
| 2152 | 8: A | ||
| 2153 | 9: A | ||
| 2154 | 10: A | ||
| 2155 | |||
| 2156 | /(((((((((a)))))))))/i | ||
| 2157 | A | ||
| 2158 | 0: A | ||
| 2159 | 1: A | ||
| 2160 | 2: A | ||
| 2161 | 3: A | ||
| 2162 | 4: A | ||
| 2163 | 5: A | ||
| 2164 | 6: A | ||
| 2165 | 7: A | ||
| 2166 | 8: A | ||
| 2167 | 9: A | ||
| 2168 | |||
| 2169 | /multiple words of text/i | ||
| 2170 | *** Failers | ||
| 2171 | No match | ||
| 2172 | AA | ||
| 2173 | No match | ||
| 2174 | UH-UH | ||
| 2175 | No match | ||
| 2176 | |||
| 2177 | /multiple words/i | ||
| 2178 | MULTIPLE WORDS, YEAH | ||
| 2179 | 0: MULTIPLE WORDS | ||
| 2180 | |||
| 2181 | /(.*)c(.*)/i | ||
| 2182 | ABCDE | ||
| 2183 | 0: ABCDE | ||
| 2184 | 1: AB | ||
| 2185 | 2: DE | ||
| 2186 | |||
| 2187 | /\((.*), (.*)\)/i | ||
| 2188 | (A, B) | ||
| 2189 | 0: (A, B) | ||
| 2190 | 1: A | ||
| 2191 | 2: B | ||
| 2192 | |||
| 2193 | /abcd/i | ||
| 2194 | ABCD | ||
| 2195 | 0: ABCD | ||
| 2196 | |||
| 2197 | /a(bc)d/i | ||
| 2198 | ABCD | ||
| 2199 | 0: ABCD | ||
| 2200 | 1: BC | ||
| 2201 | |||
| 2202 | /a[-]?c/i | ||
| 2203 | AC | ||
| 2204 | 0: AC | ||
| 2205 | |||
| 2206 | /(abc)\1/i | ||
| 2207 | ABCABC | ||
| 2208 | 0: ABCABC | ||
| 2209 | 1: ABC | ||
| 2210 | |||
| 2211 | /([a-c]*)\1/i | ||
| 2212 | ABCABC | ||
| 2213 | 0: ABCABC | ||
| 2214 | 1: ABC | ||
| 2215 | |||
| 2216 | /((foo)|(bar))*/ | ||
| 2217 | foobar | ||
| 2218 | 0: foobar | ||
| 2219 | 1: bar | ||
| 2220 | 2: foo | ||
| 2221 | 3: bar | ||
| 2222 | |||
| 2223 | /^(.+)?B/ | ||
| 2224 | AB | ||
| 2225 | 0: AB | ||
| 2226 | 1: A | ||
| 2227 | |||
| 2228 | /^([^a-z])|(\^)$/ | ||
| 2229 | . | ||
| 2230 | 0: . | ||
| 2231 | 1: . | ||
| 2232 | |||
| 2233 | /^[<>]&/ | ||
| 2234 | <&OUT | ||
| 2235 | 0: <& | ||
| 2236 | |||
| 2237 | /^(){3,5}/ | ||
| 2238 | abc | ||
| 2239 | 0: | ||
| 2240 | 1: | ||
| 2241 | |||
| 2242 | /^(a+)*ax/ | ||
| 2243 | aax | ||
| 2244 | 0: aax | ||
| 2245 | 1: a | ||
| 2246 | |||
| 2247 | /^((a|b)+)*ax/ | ||
| 2248 | aax | ||
| 2249 | 0: aax | ||
| 2250 | 1: a | ||
| 2251 | 2: a | ||
| 2252 | |||
| 2253 | /^((a|bc)+)*ax/ | ||
| 2254 | aax | ||
| 2255 | 0: aax | ||
| 2256 | 1: a | ||
| 2257 | 2: a | ||
| 2258 | |||
| 2259 | /(a|x)*ab/ | ||
| 2260 | cab | ||
| 2261 | 0: ab | ||
| 2262 | |||
| 2263 | /(a)*ab/ | ||
| 2264 | cab | ||
| 2265 | 0: ab | ||
| 2266 | |||
| 2267 | /(ab)[0-9]\1/i | ||
| 2268 | Ab4ab | ||
| 2269 | 0: Ab4ab | ||
| 2270 | 1: Ab | ||
| 2271 | ab4Ab | ||
| 2272 | 0: ab4Ab | ||
| 2273 | 1: ab | ||
| 2274 | |||
| 2275 | /foo\w*[0-9]{4}baz/ | ||
| 2276 | foobar1234baz | ||
| 2277 | 0: foobar1234baz | ||
| 2278 | |||
| 2279 | /(\w+:)+/ | ||
| 2280 | one: | ||
| 2281 | 0: one: | ||
| 2282 | 1: one: | ||
| 2283 | |||
| 2284 | /((\w|:)+::)?(\w+)$/ | ||
| 2285 | abcd | ||
| 2286 | 0: abcd | ||
| 2287 | 1: <unset> | ||
| 2288 | 2: <unset> | ||
| 2289 | 3: abcd | ||
| 2290 | xy:z:::abcd | ||
| 2291 | 0: xy:z:::abcd | ||
| 2292 | 1: xy:z::: | ||
| 2293 | 2: : | ||
| 2294 | 3: abcd | ||
| 2295 | |||
| 2296 | /^[^bcd]*(c+)/ | ||
| 2297 | aexycd | ||
| 2298 | 0: aexyc | ||
| 2299 | 1: c | ||
| 2300 | |||
| 2301 | /(a*)b+/ | ||
| 2302 | caab | ||
| 2303 | 0: aab | ||
| 2304 | 1: aa | ||
| 2305 | |||
| 2306 | /((\w|:)+::)?(\w+)$/ | ||
| 2307 | abcd | ||
| 2308 | 0: abcd | ||
| 2309 | 1: <unset> | ||
| 2310 | 2: <unset> | ||
| 2311 | 3: abcd | ||
| 2312 | xy:z:::abcd | ||
| 2313 | 0: xy:z:::abcd | ||
| 2314 | 1: xy:z::: | ||
| 2315 | 2: : | ||
| 2316 | 3: abcd | ||
| 2317 | *** Failers | ||
| 2318 | 0: Failers | ||
| 2319 | 1: <unset> | ||
| 2320 | 2: <unset> | ||
| 2321 | 3: Failers | ||
| 2322 | abcd: | ||
| 2323 | No match | ||
| 2324 | abcd: | ||
| 2325 | No match | ||
| 2326 | |||
| 2327 | /^[^bcd]*(c+)/ | ||
| 2328 | aexycd | ||
| 2329 | 0: aexyc | ||
| 2330 | 1: c | ||
| 2331 | |||
| 2332 | /((Z)+|A)*/ | ||
| 2333 | ZABCDEFG | ||
| 2334 | 0: ZA | ||
| 2335 | 1: A | ||
| 2336 | 2: Z | ||
| 2337 | |||
| 2338 | /(Z()|A)*/ | ||
| 2339 | ZABCDEFG | ||
| 2340 | 0: ZA | ||
| 2341 | 1: A | ||
| 2342 | 2: | ||
| 2343 | |||
| 2344 | /(Z(())|A)*/ | ||
| 2345 | ZABCDEFG | ||
| 2346 | 0: ZA | ||
| 2347 | 1: A | ||
| 2348 | 2: | ||
| 2349 | 3: | ||
| 2350 | |||
| 2351 | /(.*)[0-9]+\1/ | ||
| 2352 | abc123abc | ||
| 2353 | 0: abc123abc | ||
| 2354 | 1: abc | ||
| 2355 | abc123bc | ||
| 2356 | 0: bc123bc | ||
| 2357 | 1: bc | ||
| 2358 | |||
| 2359 | /((.*))[0-9]+\1/ | ||
| 2360 | abc123abc | ||
| 2361 | 0: abc123abc | ||
| 2362 | 1: abc | ||
| 2363 | 2: abc | ||
| 2364 | abc123bc | ||
| 2365 | 0: bc123bc | ||
| 2366 | 1: bc | ||
| 2367 | 2: bc | ||
| 2368 | |||
| 2369 | /^a{2,5}$/ | ||
| 2370 | aa | ||
| 2371 | 0: aa | ||
| 2372 | aaa | ||
| 2373 | 0: aaa | ||
| 2374 | aaaa | ||
| 2375 | 0: aaaa | ||
| 2376 | aaaaa | ||
| 2377 | 0: aaaaa | ||
| 2378 | *** Failers | ||
| 2379 | No match | ||
| 2380 | a | ||
| 2381 | No match | ||
| 2382 | b | ||
| 2383 | No match | ||
| 2384 | aaaaab | ||
| 2385 | No match | ||
| 2386 | aaaaaa | ||
diff --git a/test/src/regex-resources/PTESTS b/test/src/regex-resources/PTESTS new file mode 100644 index 00000000000..02b357cf2e3 --- /dev/null +++ b/test/src/regex-resources/PTESTS | |||
| @@ -0,0 +1,341 @@ | |||
| 1 | # 2.8.2 Regular Expression General Requirement | ||
| 2 | 2¦4¦bb*¦abbbc¦ | ||
| 3 | 2¦2¦bb*¦ababbbc¦ | ||
| 4 | 7¦9¦A#*::¦A:A#:qA::qA#::qA##::q¦ | ||
| 5 | 1¦5¦A#*::¦A##::A#::qA::qA#:q¦ | ||
| 6 | # 2.8.3.1.2 BRE Special Characters | ||
| 7 | # GA108 | ||
| 8 | 2¦2¦\.¦a.c¦ | ||
| 9 | 2¦2¦\[¦a[c¦ | ||
| 10 | 2¦2¦\\¦a\c¦ | ||
| 11 | 2¦2¦\*¦a*c¦ | ||
| 12 | 2¦2¦\^¦a^c¦ | ||
| 13 | 2¦2¦\$¦a$c¦ | ||
| 14 | 7¦11¦X\*Y\*8¦Y*8X*8X*Y*8¦ | ||
| 15 | # GA109 | ||
| 16 | 2¦2¦[.]¦a.c¦ | ||
| 17 | 2¦2¦[[]¦a[c¦ | ||
| 18 | -1¦-1¦[[]¦ac¦ | ||
| 19 | 2¦2¦[\]¦a\c¦ | ||
| 20 | 1¦1¦[\a]¦abc¦ | ||
| 21 | 2¦2¦[\.]¦a\.c¦ | ||
| 22 | 2¦2¦[\.]¦a.\c¦ | ||
| 23 | 2¦2¦[*]¦a*c¦ | ||
| 24 | 2¦2¦[$]¦a$c¦ | ||
| 25 | 2¦2¦[X*Y8]¦7*8YX¦ | ||
| 26 | # GA110 | ||
| 27 | 2¦2¦*¦a*c¦ | ||
| 28 | 3¦4¦*a¦*b*a*c¦ | ||
| 29 | 1¦5¦**9=¦***9=9¦ | ||
| 30 | # GA111 | ||
| 31 | 1¦1¦^*¦*bc¦ | ||
| 32 | -1¦-1¦^*¦a*c¦ | ||
| 33 | -1¦-1¦^*¦^*ab¦ | ||
| 34 | 1¦5¦^**9=¦***9=¦ | ||
| 35 | -1¦-1¦^*5<*9¦5<9*5<*9¦ | ||
| 36 | # GA112 | ||
| 37 | 2¦3¦\(*b\)¦a*b¦ | ||
| 38 | -1¦-1¦\(*b\)¦ac¦ | ||
| 39 | 1¦6¦A\(**9\)=¦A***9=79¦ | ||
| 40 | # GA113(1) | ||
| 41 | 1¦3¦\(^*ab\)¦*ab¦ | ||
| 42 | -1¦-1¦\(^*ab\)¦^*ab¦ | ||
| 43 | -1¦-1¦\(^*b\)¦a*b¦ | ||
| 44 | -1¦-1¦\(^*b\)¦^*b¦ | ||
| 45 | ### GA113(2) GNU regex implements GA113(1) | ||
| 46 | ##-1¦-1¦\(^*ab\)¦*ab¦ | ||
| 47 | ##-1¦-1¦\(^*ab\)¦^*ab¦ | ||
| 48 | ##1¦1¦\(^*b\)¦b¦ | ||
| 49 | ##1¦3¦\(^*b\)¦^^b¦ | ||
| 50 | # GA114 | ||
| 51 | 1¦3¦a^b¦a^b¦ | ||
| 52 | 1¦3¦a\^b¦a^b¦ | ||
| 53 | 1¦1¦^^¦^bc¦ | ||
| 54 | 2¦2¦\^¦a^c¦ | ||
| 55 | 1¦1¦[c^b]¦^abc¦ | ||
| 56 | 1¦1¦[\^ab]¦^ab¦ | ||
| 57 | 2¦2¦[\^ab]¦c\d¦ | ||
| 58 | -1¦-1¦[^^]¦^¦ | ||
| 59 | 1¦3¦\(a^b\)¦a^b¦ | ||
| 60 | 1¦3¦\(a\^b\)¦a^b¦ | ||
| 61 | 2¦2¦\(\^\)¦a^b¦ | ||
| 62 | # GA115 | ||
| 63 | 3¦3¦$$¦ab$¦ | ||
| 64 | -1¦-1¦$$¦$ab¦ | ||
| 65 | 2¦3¦$c¦a$c¦ | ||
| 66 | 2¦2¦[$]¦a$c¦ | ||
| 67 | 1¦2¦\$a¦$a¦ | ||
| 68 | 3¦3¦\$$¦ab$¦ | ||
| 69 | 2¦6¦A\([34]$[34]\)B¦XA4$3BY¦ | ||
| 70 | # 2.8.3.1.3 Periods in BREs | ||
| 71 | # GA116 | ||
| 72 | 1¦1¦.¦abc¦ | ||
| 73 | -1¦-1¦.ab¦abc¦ | ||
| 74 | 1¦3¦ab.¦abc¦ | ||
| 75 | 1¦3¦a.b¦a,b¦ | ||
| 76 | -1¦-1¦.......¦PqRs6¦ | ||
| 77 | 1¦7¦.......¦PqRs6T8¦ | ||
| 78 | # 2.8.3.2 RE Bracket Expression | ||
| 79 | # GA118 | ||
| 80 | 2¦2¦[abc]¦xbyz¦ | ||
| 81 | -1¦-1¦[abc]¦xyz¦ | ||
| 82 | 2¦2¦[abc]¦xbay¦ | ||
| 83 | # GA119 | ||
| 84 | 2¦2¦[^a]¦abc¦ | ||
| 85 | 4¦4¦[^]cd]¦cd]ef¦ | ||
| 86 | 2¦2¦[^abc]¦axyz¦ | ||
| 87 | -1¦-1¦[^abc]¦abc¦ | ||
| 88 | 3¦3¦[^[.a.]b]¦abc¦ | ||
| 89 | 3¦3¦[^[=a=]b]¦abc¦ | ||
| 90 | 2¦2¦[^-ac]¦abcde-¦ | ||
| 91 | 2¦2¦[^ac-]¦abcde-¦ | ||
| 92 | 3¦3¦[^a-b]¦abcde¦ | ||
| 93 | 3¦3¦[^a-bd-e]¦dec¦ | ||
| 94 | 2¦2¦[^---]¦-ab¦ | ||
| 95 | 16¦16¦[^a-zA-Z0-9]¦pqrstVWXYZ23579#¦ | ||
| 96 | # GA120(1) | ||
| 97 | 3¦3¦[]a]¦cd]ef¦ | ||
| 98 | 1¦1¦[]-a]¦a_b¦ | ||
| 99 | 3¦3¦[][.-.]-0]¦ab0-]¦ | ||
| 100 | 1¦1¦[]^a-z]¦string¦ | ||
| 101 | # GA120(2) | ||
| 102 | 4¦4¦[^]cd]¦cd]ef¦ | ||
| 103 | 0¦0¦[^]]*¦]]]]]]]]X¦ | ||
| 104 | 0¦0¦[^]]*¦]]]]]]]]¦ | ||
| 105 | 9¦9¦[^]]\{1,\}¦]]]]]]]]X¦ | ||
| 106 | -1¦-1¦[^]]\{1,\}¦]]]]]]]]¦ | ||
| 107 | # GA120(3) | ||
| 108 | 3¦3¦[c[.].]d]¦ab]cd¦ | ||
| 109 | 2¦8¦[a-z]*[[.].]][A-Z]*¦Abcd]DEFg¦ | ||
| 110 | # GA121 | ||
| 111 | 2¦2¦[[.a.]b]¦Abc¦ | ||
| 112 | 1¦1¦[[.a.]b]¦aBc¦ | ||
| 113 | -1¦-1¦[[.a.]b]¦ABc¦ | ||
| 114 | 3¦3¦[^[.a.]b]¦abc¦ | ||
| 115 | 3¦3¦[][.-.]-0]¦ab0-]¦ | ||
| 116 | 3¦3¦[A-[.].]c]¦ab]!¦ | ||
| 117 | # GA122 | ||
| 118 | -2¦-2¦[[.ch.]]¦abc¦ | ||
| 119 | -2¦-2¦[[.ab.][.CD.][.EF.]]¦yZabCDEFQ9¦ | ||
| 120 | # GA125 | ||
| 121 | 2¦2¦[[=a=]b]¦Abc¦ | ||
| 122 | 1¦1¦[[=a=]b]¦aBc¦ | ||
| 123 | -1¦-1¦[[=a=]b]¦ABc¦ | ||
| 124 | 3¦3¦[^[=a=]b]¦abc¦ | ||
| 125 | # GA126 | ||
| 126 | #W the expected result for [[:alnum:]]* is 2-7 which is wrong | ||
| 127 | 0¦0¦[[:alnum:]]*¦ aB28gH¦ | ||
| 128 | 2¦7¦[[:alnum:]][[:alnum:]]*¦ aB28gH¦ | ||
| 129 | #W the expected result for [^[:alnum:]]* is 2-5 which is wrong | ||
| 130 | 0¦0¦[^[:alnum:]]*¦2 ,a¦ | ||
| 131 | 2¦5¦[^[:alnum:]][^[:alnum:]]*¦2 ,a¦ | ||
| 132 | #W the expected result for [[:alpha:]]* is 2-5 which is wrong | ||
| 133 | 0¦0¦[[:alpha:]]*¦ aBgH2¦ | ||
| 134 | 2¦5¦[[:alpha:]][[:alpha:]]*¦ aBgH2¦ | ||
| 135 | 1¦6¦[^[:alpha:]]*¦2 8,a¦ | ||
| 136 | 1¦2¦[[:blank:]]*¦ ¦ | ||
| 137 | 1¦8¦[^[:blank:]]*¦aB28gH, ¦ | ||
| 138 | 1¦2¦[[:cntrl:]]*¦ ¦ | ||
| 139 | 1¦8¦[^[:cntrl:]]*¦aB2 8gh,¦ | ||
| 140 | #W the expected result for [[:digit:]]* is 2-3 which is wrong | ||
| 141 | 0¦0¦[[:digit:]]*¦a28¦ | ||
| 142 | 2¦3¦[[:digit:]][[:digit:]]*¦a28¦ | ||
| 143 | 1¦8¦[^[:digit:]]*¦aB gH,¦ | ||
| 144 | 1¦7¦[[:graph:]]*¦aB28gH, ¦ | ||
| 145 | 1¦3¦[^[:graph:]]*¦ ,¦ | ||
| 146 | 1¦2¦[[:lower:]]*¦agB¦ | ||
| 147 | 1¦8¦[^[:lower:]]*¦B2 8H,a¦ | ||
| 148 | 1¦8¦[[:print:]]*¦aB2 8gH, ¦ | ||
| 149 | 1¦2¦[^[:print:]]*¦ ¦ | ||
| 150 | #W the expected result for [[:punct:]]* is 2-2 which is wrong | ||
| 151 | 0¦0¦[[:punct:]]*¦a,2¦ | ||
| 152 | 2¦3¦[[:punct:]][[:punct:]]*¦a,,2¦ | ||
| 153 | 1¦9¦[^[:punct:]]*¦aB2 8gH¦ | ||
| 154 | 1¦3¦[[:space:]]*¦ ¦ | ||
| 155 | #W the expected result for [^[:space:]]* is 2-9 which is wrong | ||
| 156 | 0¦0¦[^[:space:]]*¦ aB28gH, ¦ | ||
| 157 | 2¦9¦[^[:space:]][^[:space:]]*¦ aB28gH, ¦ | ||
| 158 | #W the expected result for [[:upper:]]* is 2-3 which is wrong | ||
| 159 | 0¦0¦[[:upper:]]*¦aBH2¦ | ||
| 160 | 2¦3¦[[:upper:]][[:upper:]]*¦aBH2¦ | ||
| 161 | 1¦8¦[^[:upper:]]*¦a2 8g,B¦ | ||
| 162 | #W the expected result for [[:xdigit:]]* is 2-5 which is wrong | ||
| 163 | 0¦0¦[[:xdigit:]]*¦gaB28h¦ | ||
| 164 | 2¦5¦[[:xdigit:]][[:xdigit:]]*¦gaB28h¦ | ||
| 165 | #W the expected result for [^[:xdigit:]]* is 2-7 which is wrong | ||
| 166 | 2¦7¦[^[:xdigit:]][^[:xdigit:]]*¦a gH,2¦ | ||
| 167 | # GA127 | ||
| 168 | -2¦-2¦[b-a]¦abc¦ | ||
| 169 | 1¦1¦[a-c]¦bbccde¦ | ||
| 170 | 2¦2¦[a-b]¦-bc¦ | ||
| 171 | 3¦3¦[a-z0-9]¦AB0¦ | ||
| 172 | 3¦3¦[^a-b]¦abcde¦ | ||
| 173 | 3¦3¦[^a-bd-e]¦dec¦ | ||
| 174 | 1¦1¦[]-a]¦a_b¦ | ||
| 175 | 2¦2¦[+--]¦a,b¦ | ||
| 176 | 2¦2¦[--/]¦a.b¦ | ||
| 177 | 2¦2¦[^---]¦-ab¦ | ||
| 178 | 3¦3¦[][.-.]-0]¦ab0-]¦ | ||
| 179 | 3¦3¦[A-[.].]c]¦ab]!¦ | ||
| 180 | 2¦6¦bc[d-w]xy¦abchxyz¦ | ||
| 181 | # GA129 | ||
| 182 | 1¦1¦[a-cd-f]¦dbccde¦ | ||
| 183 | -1¦-1¦[a-ce-f]¦dBCCdE¦ | ||
| 184 | 2¦4¦b[n-zA-M]Y¦absY9Z¦ | ||
| 185 | 2¦4¦b[n-zA-M]Y¦abGY9Z¦ | ||
| 186 | # GA130 | ||
| 187 | 3¦3¦[-xy]¦ac-¦ | ||
| 188 | 2¦4¦c[-xy]D¦ac-D+¦ | ||
| 189 | 2¦2¦[--/]¦a.b¦ | ||
| 190 | 2¦4¦c[--/]D¦ac.D+b¦ | ||
| 191 | 2¦2¦[^-ac]¦abcde-¦ | ||
| 192 | 1¦3¦a[^-ac]c¦abcde-¦ | ||
| 193 | 3¦3¦[xy-]¦zc-¦ | ||
| 194 | 2¦4¦c[xy-]7¦zc-786¦ | ||
| 195 | 2¦2¦[^ac-]¦abcde-¦ | ||
| 196 | 2¦4¦a[^ac-]c¦5abcde-¦ | ||
| 197 | 2¦2¦[+--]¦a,b¦ | ||
| 198 | 2¦4¦a[+--]B¦Xa,By¦ | ||
| 199 | 2¦2¦[^---]¦-ab¦ | ||
| 200 | 4¦6¦X[^---]Y¦X-YXaYXbY¦ | ||
| 201 | # 2.8.3.3 BREs Matching Multiple Characters | ||
| 202 | # GA131 | ||
| 203 | 3¦4¦cd¦abcdeabcde¦ | ||
| 204 | 1¦2¦ag*b¦abcde¦ | ||
| 205 | -1¦-1¦[a-c][e-f]¦abcdef¦ | ||
| 206 | 3¦4¦[a-c][e-f]¦acbedf¦ | ||
| 207 | 4¦8¦abc*XYZ¦890abXYZ#*¦ | ||
| 208 | 4¦9¦abc*XYZ¦890abcXYZ#*¦ | ||
| 209 | 4¦15¦abc*XYZ¦890abcccccccXYZ#*¦ | ||
| 210 | -1¦-1¦abc*XYZ¦890abc*XYZ#*¦ | ||
| 211 | # GA132 | ||
| 212 | 2¦4¦\(*bc\)¦a*bc¦ | ||
| 213 | 1¦2¦\(ab\)¦abcde¦ | ||
| 214 | 1¦10¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)¦abcdefghijk¦ | ||
| 215 | 3¦8¦43\(2\(6\)*0\)AB¦654320ABCD¦ | ||
| 216 | 3¦9¦43\(2\(7\)*0\)AB¦6543270ABCD¦ | ||
| 217 | 3¦12¦43\(2\(7\)*0\)AB¦6543277770ABCD¦ | ||
| 218 | # GA133 | ||
| 219 | 1¦10¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)¦abcdefghijk¦ | ||
| 220 | -1¦-1¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(k\)\)\)\)\)\)\)\)¦abcdefghijk¦ | ||
| 221 | # GA134 | ||
| 222 | 2¦4¦\(bb*\)¦abbbc¦ | ||
| 223 | 2¦2¦\(bb*\)¦ababbbc¦ | ||
| 224 | 1¦6¦a\(.*b\)¦ababbbc¦ | ||
| 225 | 1¦2¦a\(b*\)¦ababbbc¦ | ||
| 226 | 1¦20¦a\(.*b\)c¦axcaxbbbcsxbbbbbbbbc¦ | ||
| 227 | # GA135 | ||
| 228 | 1¦7¦\(a\(b\(c\(d\(e\)\)\)\)\)\4¦abcdededede¦ | ||
| 229 | #W POSIX does not really specify whether a\(b\)*c\1 matches acb. | ||
| 230 | #W back references are supposed to expand to the last match, but what | ||
| 231 | #W if there never was a match as in this case? | ||
| 232 | -1¦-1¦a\(b\)*c\1¦acb¦ | ||
| 233 | 1¦11¦\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)\9¦abcdefghijjk¦ | ||
| 234 | # GA136 | ||
| 235 | #W These two tests have the same problem as the test in GA135. No match | ||
| 236 | #W of a subexpression, why should the back reference be usable? | ||
| 237 | #W 1 2 a\(b\)*c\1 acb | ||
| 238 | #W 4 7 a\(b\(c\(d\(f\)*\)\)\)\4¦xYzabcdePQRST | ||
| 239 | -1¦-1¦a\(b\)*c\1¦acb¦ | ||
| 240 | -1¦-1¦a\(b\(c\(d\(f\)*\)\)\)\4¦xYzabcdePQRST¦ | ||
| 241 | # GA137 | ||
| 242 | -2¦-2¦\(a\(b\)\)\3¦foo¦ | ||
| 243 | -2¦-2¦\(a\(b\)\)\(a\(b\)\)\5¦foo¦ | ||
| 244 | # GA138 | ||
| 245 | 1¦2¦ag*b¦abcde¦ | ||
| 246 | 1¦10¦a.*b¦abababvbabc¦ | ||
| 247 | 2¦5¦b*c¦abbbcdeabbbbbbcde¦ | ||
| 248 | 2¦5¦bbb*c¦abbbcdeabbbbbbcde¦ | ||
| 249 | 1¦5¦a\(b\)*c\1¦abbcbbb¦ | ||
| 250 | -1¦-1¦a\(b\)*c\1¦abbdbd¦ | ||
| 251 | 0¦0¦\([a-c]*\)\1¦abcacdef¦ | ||
| 252 | 1¦6¦\([a-c]*\)\1¦abcabcabcd¦ | ||
| 253 | 1¦2¦a^*b¦ab¦ | ||
| 254 | 1¦5¦a^*b¦a^^^b¦ | ||
| 255 | # GA139 | ||
| 256 | 1¦2¦a\{2\}¦aaaa¦ | ||
| 257 | 1¦7¦\([a-c]*\)\{0,\}¦aabcaab¦ | ||
| 258 | 1¦2¦\(a\)\1\{1,2\}¦aabc¦ | ||
| 259 | 1¦3¦\(a\)\1\{1,2\}¦aaaabc¦ | ||
| 260 | #W the expression \(\(a\)\1\)\{1,2\} is ill-formed, using \2 | ||
| 261 | 1¦4¦\(\(a\)\2\)\{1,2\}¦aaaabc¦ | ||
| 262 | # GA140 | ||
| 263 | 1¦2¦a\{2\}¦aaaa¦ | ||
| 264 | -1¦-1¦a\{2\}¦abcd¦ | ||
| 265 | 0¦0¦a\{0\}¦aaaa¦ | ||
| 266 | 1¦64¦a\{64\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦ | ||
| 267 | # GA141 | ||
| 268 | 1¦7¦\([a-c]*\)\{0,\}¦aabcaab¦ | ||
| 269 | #W the expected result for \([a-c]*\)\{2,\} is failure which isn't correct | ||
| 270 | 1¦3¦\([a-c]*\)\{2,\}¦abcdefg¦ | ||
| 271 | 1¦3¦\([a-c]*\)\{1,\}¦abcdefg¦ | ||
| 272 | -1¦-1¦a\{64,\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦ | ||
| 273 | # GA142 | ||
| 274 | 1¦3¦a\{2,3\}¦aaaa¦ | ||
| 275 | -1¦-1¦a\{2,3\}¦abcd¦ | ||
| 276 | 0¦0¦\([a-c]*\)\{0,0\}¦foo¦ | ||
| 277 | 1¦63¦a\{1,63\}¦aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa¦ | ||
| 278 | # 2.8.3.4 BRE Precedence | ||
| 279 | # GA143 | ||
| 280 | #W There are numerous bugs in the original version. | ||
| 281 | 2¦19¦\^\[[[.].]]\\(\\1\\)\*\\{1,2\\}\$¦a^[]\(\1\)*\{1,2\}$b¦ | ||
| 282 | 1¦6¦[[=*=]][[=\=]][[=]=]][[===]][[...]][[:punct:]]¦*\]=.;¦ | ||
| 283 | 1¦6¦[$\(*\)^]*¦$\()*^¦ | ||
| 284 | 1¦1¦[\1]¦1¦ | ||
| 285 | 1¦1¦[\{1,2\}]¦{¦ | ||
| 286 | #W the expected result for \(*\)*\1* is 2-2 which isn't correct | ||
| 287 | 0¦0¦\(*\)*\1*¦a*b*11¦ | ||
| 288 | 2¦3¦\(*\)*\1*b¦a*b*11¦ | ||
| 289 | #W the expected result for \(a\(b\{1,2\}\)\{1,2\}\) is 1-5 which isn't correct | ||
| 290 | 1¦3¦\(a\(b\{1,2\}\)\{1,2\}\)¦abbab¦ | ||
| 291 | 1¦5¦\(a\(b\{1,2\}\)\)\{1,2\}¦abbab¦ | ||
| 292 | 1¦1¦^\(^\(^a$\)$\)$¦a¦ | ||
| 293 | 1¦2¦\(a\)\1$¦aa¦ | ||
| 294 | 1¦3¦ab*¦abb¦ | ||
| 295 | 1¦4¦ab\{2,4\}¦abbbc¦ | ||
| 296 | # 2.8.3.5 BRE Expression Anchoring | ||
| 297 | # GA144 | ||
| 298 | 1¦1¦^a¦abc¦ | ||
| 299 | -1¦-1¦^b¦abc¦ | ||
| 300 | -1¦-1¦^[a-zA-Z]¦99Nine¦ | ||
| 301 | 1¦4¦^[a-zA-Z]*¦Nine99¦ | ||
| 302 | # GA145(1) | ||
| 303 | 1¦2¦\(^a\)\1¦aabc¦ | ||
| 304 | -1¦-1¦\(^a\)\1¦^a^abc¦ | ||
| 305 | 1¦2¦\(^^a\)¦^a¦ | ||
| 306 | 1¦1¦\(^^\)¦^^¦ | ||
| 307 | 1¦3¦\(^abc\)¦abcdef¦ | ||
| 308 | -1¦-1¦\(^def\)¦abcdef¦ | ||
| 309 | ### GA145(2) GNU regex implements GA145(1) | ||
| 310 | ##-1¦-1¦\(^a\)\1¦aabc¦ | ||
| 311 | ##1¦4¦\(^a\)\1¦^a^abc¦ | ||
| 312 | ##-1¦-1¦\(^^a\)¦^a¦ | ||
| 313 | ##1¦2¦\(^^\)¦^^¦ | ||
| 314 | # GA146 | ||
| 315 | 3¦3¦a$¦cba¦ | ||
| 316 | -1¦-1¦a$¦abc¦ | ||
| 317 | 5¦7¦[a-z]*$¦99ZZxyz¦ | ||
| 318 | #W the expected result for [a-z]*$ is failure which isn't correct | ||
| 319 | 10¦9¦[a-z]*$¦99ZZxyz99¦ | ||
| 320 | 3¦3¦$$¦ab$¦ | ||
| 321 | -1¦-1¦$$¦$ab¦ | ||
| 322 | 3¦3¦\$$¦ab$¦ | ||
| 323 | # GA147(1) | ||
| 324 | -1¦-1¦\(a$\)\1¦bcaa¦ | ||
| 325 | -1¦-1¦\(a$\)\1¦ba$¦ | ||
| 326 | -1¦-1¦\(ab$\)¦ab$¦ | ||
| 327 | 1¦2¦\(ab$\)¦ab¦ | ||
| 328 | 4¦6¦\(def$\)¦abcdef¦ | ||
| 329 | -1¦-1¦\(abc$\)¦abcdef¦ | ||
| 330 | ### GA147(2) GNU regex implements GA147(1) | ||
| 331 | ##-1¦-1¦\(a$\)\1¦bcaa¦ | ||
| 332 | ##2¦5¦\(a$\)\1¦ba$a$¦ | ||
| 333 | ##-1¦-1¦\(ab$\)¦ab¦ | ||
| 334 | ##1¦3¦\(ab$\)¦ab$¦ | ||
| 335 | # GA148 | ||
| 336 | 0¦0¦^$¦¦ | ||
| 337 | 1¦3¦^abc$¦abc¦ | ||
| 338 | -1¦-1¦^xyz$¦^xyz^¦ | ||
| 339 | -1¦-1¦^234$¦^234$¦ | ||
| 340 | 1¦9¦^[a-zA-Z0-9]*$¦2aA3bB9zZ¦ | ||
| 341 | -1¦-1¦^[a-z0-9]*$¦2aA3b#B9zZ¦ | ||
diff --git a/test/src/regex-resources/TESTS b/test/src/regex-resources/TESTS new file mode 100644 index 00000000000..f2c98864058 --- /dev/null +++ b/test/src/regex-resources/TESTS | |||
| @@ -0,0 +1,167 @@ | |||
| 1 | 0:(.*)*\1:xx | ||
| 2 | 0:^: | ||
| 3 | 0:$: | ||
| 4 | 0:^$: | ||
| 5 | 0:^a$:a | ||
| 6 | 0:abc:abc | ||
| 7 | 1:abc:xbc | ||
| 8 | 1:abc:axc | ||
| 9 | 1:abc:abx | ||
| 10 | 0:abc:xabcy | ||
| 11 | 0:abc:ababc | ||
| 12 | 0:ab*c:abc | ||
| 13 | 0:ab*bc:abc | ||
| 14 | 0:ab*bc:abbc | ||
| 15 | 0:ab*bc:abbbbc | ||
| 16 | 0:ab+bc:abbc | ||
| 17 | 1:ab+bc:abc | ||
| 18 | 1:ab+bc:abq | ||
| 19 | 0:ab+bc:abbbbc | ||
| 20 | 0:ab?bc:abbc | ||
| 21 | 0:ab?bc:abc | ||
| 22 | 1:ab?bc:abbbbc | ||
| 23 | 0:ab?c:abc | ||
| 24 | 0:^abc$:abc | ||
| 25 | 1:^abc$:abcc | ||
| 26 | 0:^abc:abcc | ||
| 27 | 1:^abc$:aabc | ||
| 28 | 0:abc$:aabc | ||
| 29 | 0:^:abc | ||
| 30 | 0:$:abc | ||
| 31 | 0:a.c:abc | ||
| 32 | 0:a.c:axc | ||
| 33 | 0:a.*c:axyzc | ||
| 34 | 1:a.*c:axyzd | ||
| 35 | 1:a[bc]d:abc | ||
| 36 | 0:a[bc]d:abd | ||
| 37 | 1:a[b-d]e:abd | ||
| 38 | 0:a[b-d]e:ace | ||
| 39 | 0:a[b-d]:aac | ||
| 40 | 0:a[-b]:a- | ||
| 41 | 0:a[b-]:a- | ||
| 42 | 2:a[b-a]:- | ||
| 43 | 2:a[]b:- | ||
| 44 | 2:a[:- | ||
| 45 | 0:a]:a] | ||
| 46 | 0:a[]]b:a]b | ||
| 47 | 0:a[^bc]d:aed | ||
| 48 | 1:a[^bc]d:abd | ||
| 49 | 0:a[^-b]c:adc | ||
| 50 | 1:a[^-b]c:a-c | ||
| 51 | 1:a[^]b]c:a]c | ||
| 52 | 0:a[^]b]c:adc | ||
| 53 | 0:ab|cd:abc | ||
| 54 | 0:ab|cd:abcd | ||
| 55 | 0:()ef:def | ||
| 56 | 0:()*:- | ||
| 57 | 2:*a:- | ||
| 58 | 2:^*:- | ||
| 59 | 2:$*:- | ||
| 60 | 2:(*)b:- | ||
| 61 | 1:$b:b | ||
| 62 | 2:a\:- | ||
| 63 | 0:a\(b:a(b | ||
| 64 | 0:a\(*b:ab | ||
| 65 | 0:a\(*b:a((b | ||
| 66 | 1:a\x:a\x | ||
| 67 | 1:abc):- | ||
| 68 | 2:(abc:- | ||
| 69 | 0:((a)):abc | ||
| 70 | 0:(a)b(c):abc | ||
| 71 | 0:a+b+c:aabbabc | ||
| 72 | 0:a**:- | ||
| 73 | 0:a*?:- | ||
| 74 | 0:(a*)*:- | ||
| 75 | 0:(a*)+:- | ||
| 76 | 0:(a|)*:- | ||
| 77 | 0:(a*|b)*:- | ||
| 78 | 0:(a+|b)*:ab | ||
| 79 | 0:(a+|b)+:ab | ||
| 80 | 0:(a+|b)?:ab | ||
| 81 | 0:[^ab]*:cde | ||
| 82 | 0:(^)*:- | ||
| 83 | 0:(ab|)*:- | ||
| 84 | 2:)(:- | ||
| 85 | 1:abc: | ||
| 86 | 1:abc: | ||
| 87 | 0:a*: | ||
| 88 | 0:([abc])*d:abbbcd | ||
| 89 | 0:([abc])*bcd:abcd | ||
| 90 | 0:a|b|c|d|e:e | ||
| 91 | 0:(a|b|c|d|e)f:ef | ||
| 92 | 0:((a*|b))*:- | ||
| 93 | 0:abcd*efg:abcdefg | ||
| 94 | 0:ab*:xabyabbbz | ||
| 95 | 0:ab*:xayabbbz | ||
| 96 | 0:(ab|cd)e:abcde | ||
| 97 | 0:[abhgefdc]ij:hij | ||
| 98 | 1:^(ab|cd)e:abcde | ||
| 99 | 0:(abc|)ef:abcdef | ||
| 100 | 0:(a|b)c*d:abcd | ||
| 101 | 0:(ab|ab*)bc:abc | ||
| 102 | 0:a([bc]*)c*:abc | ||
| 103 | 0:a([bc]*)(c*d):abcd | ||
| 104 | 0:a([bc]+)(c*d):abcd | ||
| 105 | 0:a([bc]*)(c+d):abcd | ||
| 106 | 0:a[bcd]*dcdcde:adcdcde | ||
| 107 | 1:a[bcd]+dcdcde:adcdcde | ||
| 108 | 0:(ab|a)b*c:abc | ||
| 109 | 0:((a)(b)c)(d):abcd | ||
| 110 | 0:[A-Za-z_][A-Za-z0-9_]*:alpha | ||
| 111 | 0:^a(bc+|b[eh])g|.h$:abh | ||
| 112 | 0:(bc+d$|ef*g.|h?i(j|k)):effgz | ||
| 113 | 0:(bc+d$|ef*g.|h?i(j|k)):ij | ||
| 114 | 1:(bc+d$|ef*g.|h?i(j|k)):effg | ||
| 115 | 1:(bc+d$|ef*g.|h?i(j|k)):bcdd | ||
| 116 | 0:(bc+d$|ef*g.|h?i(j|k)):reffgz | ||
| 117 | 1:((((((((((a)))))))))):- | ||
| 118 | 0:(((((((((a))))))))):a | ||
| 119 | 1:multiple words of text:uh-uh | ||
| 120 | 0:multiple words:multiple words, yeah | ||
| 121 | 0:(.*)c(.*):abcde | ||
| 122 | 1:\((.*),:(.*)\) | ||
| 123 | 1:[k]:ab | ||
| 124 | 0:abcd:abcd | ||
| 125 | 0:a(bc)d:abcd | ||
| 126 | 0:a[-]?c:ac | ||
| 127 | 0:(....).*\1:beriberi | ||
| 128 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Qaddafi | ||
| 129 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mo'ammar Gadhafi | ||
| 130 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Kaddafi | ||
| 131 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Qadhafi | ||
| 132 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar El Kadhafi | ||
| 133 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Gadafi | ||
| 134 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qadafi | ||
| 135 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamer El Kazzafi | ||
| 136 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar al-Gaddafi | ||
| 137 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Al Qathafi | ||
| 138 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Al Qathafi | ||
| 139 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mo'ammar el-Gadhafi | ||
| 140 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar El Kadhafi | ||
| 141 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar al-Qadhafi | ||
| 142 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qadhdhafi | ||
| 143 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Qadafi | ||
| 144 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar Gaddafi | ||
| 145 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Qadhdhafi | ||
| 146 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Khaddafi | ||
| 147 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar al-Khaddafi | ||
| 148 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'amar al-Kadafi | ||
| 149 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghaddafy | ||
| 150 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghadafi | ||
| 151 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghaddafi | ||
| 152 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muamar Kaddafi | ||
| 153 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Quathafi | ||
| 154 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Gheddafi | ||
| 155 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muamar Al-Kaddafi | ||
| 156 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar Khadafy | ||
| 157 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar Qudhafi | ||
| 158 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qaddafi | ||
| 159 | 0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi | ||
| 160 | 0:[[:digit:]]+:01234 | ||
| 161 | 1:[[:alpha:]]+:01234 | ||
| 162 | 0:^[[:digit:]]*$:01234 | ||
| 163 | 1:^[[:digit:]]*$:01234a | ||
| 164 | 0:^[[:alnum:]]*$:01234a | ||
| 165 | 0:^[[:xdigit:]]*$:01234a | ||
| 166 | 1:^[[:xdigit:]]*$:01234g | ||
| 167 | 0:^[[:alnum:][:space:]]*$:Hello world | ||