1 /-- This set of tests is run only with the 8-bit library. They do not require 2 UTF-8 or Unicode property support. The file starts with all the tests of 3 the POSIX interface, because that is supported only with the 8-bit library. 4 --/ 5 6 < forbid 8W 7 8 /abc/P 9 abc 10 0: abc 11 *** Failers 12 No match: POSIX code 17: match failed 13 14 /^abc|def/P 15 abcdef 16 0: abc 17 abcdef\B 18 0: def 19 20 /.*((abc)$|(def))/P 21 defabc 22 0: defabc 23 1: abc 24 2: abc 25 \Zdefabc 26 0: def 27 1: def 28 3: def 29 30 /the quick brown fox/P 31 the quick brown fox 32 0: the quick brown fox 33 *** Failers 34 No match: POSIX code 17: match failed 35 The Quick Brown Fox 36 No match: POSIX code 17: match failed 37 38 /the quick brown fox/Pi 39 the quick brown fox 40 0: the quick brown fox 41 The Quick Brown Fox 42 0: The Quick Brown Fox 43 44 /abc.def/P 45 *** Failers 46 No match: POSIX code 17: match failed 47 abc\ndef 48 No match: POSIX code 17: match failed 49 50 /abc$/P 51 abc 52 0: abc 53 abc\n 54 0: abc 55 56 /(abc)\2/P 57 Failed: POSIX code 15: bad back reference at offset 7 58 59 /(abc\1)/P 60 abc 61 No match: POSIX code 17: match failed 62 63 /a*(b+)(z)(z)/P 64 aaaabbbbzzzz 65 0: aaaabbbbzz 66 1: bbbb 67 2: z 68 3: z 69 aaaabbbbzzzz\O0 70 aaaabbbbzzzz\O1 71 0: aaaabbbbzz 72 aaaabbbbzzzz\O2 73 0: aaaabbbbzz 74 1: bbbb 75 aaaabbbbzzzz\O3 76 0: aaaabbbbzz 77 1: bbbb 78 2: z 79 aaaabbbbzzzz\O4 80 0: aaaabbbbzz 81 1: bbbb 82 2: z 83 3: z 84 aaaabbbbzzzz\O5 85 0: aaaabbbbzz 86 1: bbbb 87 2: z 88 3: z 89 90 /ab.cd/P 91 ab-cd 92 0: ab-cd 93 ab=cd 94 0: ab=cd 95 ** Failers 96 No match: POSIX code 17: match failed 97 ab\ncd 98 No match: POSIX code 17: match failed 99 100 /ab.cd/Ps 101 ab-cd 102 0: ab-cd 103 ab=cd 104 0: ab=cd 105 ab\ncd 106 0: ab\x0acd 107 108 /a(b)c/PN 109 abc 110 Matched with REG_NOSUB 111 112 /a(?P<name>b)c/PN 113 abc 114 Matched with REG_NOSUB 115 116 /a?|b?/P 117 abc 118 0: a 119 ** Failers 120 0: 121 ddd\N 122 No match: POSIX code 17: match failed 123 124 /\w+A/P 125 CDAAAAB 126 0: CDAAAA 127 128 /\w+A/PU 129 CDAAAAB 130 0: CDA 131 132 /\Biss\B/I+P 133 Mississippi 134 0: iss 135 0+ issippi 136 137 /abc/\P 138 Failed: POSIX code 9: bad escape sequence at offset 4 139 140 /-- End of POSIX tests --/ 141 142 /a\Cb/ 143 aXb 144 0: aXb 145 a\nb 146 0: a\x0ab 147 ** Failers (too big char) 148 No match 149 A\x{123}B 150 ** Character \x{123} is greater than 255 and UTF-8 mode is not enabled. 151 ** Truncation will probably give the wrong result. 152 No match 153 A\o{443}B 154 ** Character \x{123} is greater than 255 and UTF-8 mode is not enabled. 155 ** Truncation will probably give the wrong result. 156 No match 157 158 /\x{100}/I 159 Failed: character value in \x{} or \o{} is too large at offset 6 160 161 /\o{400}/I 162 Failed: character value in \x{} or \o{} is too large at offset 6 163 164 / (?: [\040\t] | \( 165 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 166 \) )* # optional leading comment 167 (?: (?: 168 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 169 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 170 | 171 " (?: # opening quote... 172 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 173 | # or 174 \\ [^\x80-\xff] # Escaped something (something != CR) 175 )* " # closing quote 176 ) # initial word 177 (?: (?: [\040\t] | \( 178 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 179 \) )* \. (?: [\040\t] | \( 180 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 181 \) )* (?: 182 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 183 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 184 | 185 " (?: # opening quote... 186 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 187 | # or 188 \\ [^\x80-\xff] # Escaped something (something != CR) 189 )* " # closing quote 190 ) )* # further okay, if led by a period 191 (?: [\040\t] | \( 192 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 193 \) )* @ (?: [\040\t] | \( 194 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 195 \) )* (?: 196 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 197 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 198 | \[ # [ 199 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 200 \] # ] 201 ) # initial subdomain 202 (?: # 203 (?: [\040\t] | \( 204 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 205 \) )* \. # if led by a period... 206 (?: [\040\t] | \( 207 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 208 \) )* (?: 209 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 210 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 211 | \[ # [ 212 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 213 \] # ] 214 ) # ...further okay 215 )* 216 # address 217 | # or 218 (?: 219 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 220 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 221 | 222 " (?: # opening quote... 223 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 224 | # or 225 \\ [^\x80-\xff] # Escaped something (something != CR) 226 )* " # closing quote 227 ) # one word, optionally followed by.... 228 (?: 229 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... 230 \( 231 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 232 \) | # comments, or... 233 234 " (?: # opening quote... 235 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 236 | # or 237 \\ [^\x80-\xff] # Escaped something (something != CR) 238 )* " # closing quote 239 # quoted strings 240 )* 241 < (?: [\040\t] | \( 242 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 243 \) )* # leading < 244 (?: @ (?: [\040\t] | \( 245 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 246 \) )* (?: 247 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 248 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 249 | \[ # [ 250 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 251 \] # ] 252 ) # initial subdomain 253 (?: # 254 (?: [\040\t] | \( 255 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 256 \) )* \. # if led by a period... 257 (?: [\040\t] | \( 258 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 259 \) )* (?: 260 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 261 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 262 | \[ # [ 263 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 264 \] # ] 265 ) # ...further okay 266 )* 267 268 (?: (?: [\040\t] | \( 269 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 270 \) )* , (?: [\040\t] | \( 271 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 272 \) )* @ (?: [\040\t] | \( 273 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 274 \) )* (?: 275 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 276 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 277 | \[ # [ 278 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 279 \] # ] 280 ) # initial subdomain 281 (?: # 282 (?: [\040\t] | \( 283 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 284 \) )* \. # if led by a period... 285 (?: [\040\t] | \( 286 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 287 \) )* (?: 288 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 289 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 290 | \[ # [ 291 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 292 \] # ] 293 ) # ...further okay 294 )* 295 )* # further okay, if led by comma 296 : # closing colon 297 (?: [\040\t] | \( 298 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 299 \) )* )? # optional route 300 (?: 301 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 302 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 303 | 304 " (?: # opening quote... 305 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 306 | # or 307 \\ [^\x80-\xff] # Escaped something (something != CR) 308 )* " # closing quote 309 ) # initial word 310 (?: (?: [\040\t] | \( 311 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 312 \) )* \. (?: [\040\t] | \( 313 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 314 \) )* (?: 315 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 316 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 317 | 318 " (?: # opening quote... 319 [^\\\x80-\xff\n\015"] # Anything except backslash and quote 320 | # or 321 \\ [^\x80-\xff] # Escaped something (something != CR) 322 )* " # closing quote 323 ) )* # further okay, if led by a period 324 (?: [\040\t] | \( 325 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 326 \) )* @ (?: [\040\t] | \( 327 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 328 \) )* (?: 329 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 330 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 331 | \[ # [ 332 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 333 \] # ] 334 ) # initial subdomain 335 (?: # 336 (?: [\040\t] | \( 337 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 338 \) )* \. # if led by a period... 339 (?: [\040\t] | \( 340 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 341 \) )* (?: 342 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... 343 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom 344 | \[ # [ 345 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff 346 \] # ] 347 ) # ...further okay 348 )* 349 # address spec 350 (?: [\040\t] | \( 351 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 352 \) )* > # trailing > 353 # name and address 354 ) (?: [\040\t] | \( 355 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* 356 \) )* # optional trailing comment 357 /xSI 358 Capturing subpattern count = 0 359 Contains explicit CR or LF match 360 Options: extended 361 No first char 362 No need char 363 Subject length lower bound = 3 364 Starting chars: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8 365 9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e 366 f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f 367 368 /-- Although this saved pattern was compiled with link-size=2, it does no harm 369 to run this test with other link sizes because it is going to generated a 370 "compiled in wrong mode" error as soon as it is loaded, so the link size does 371 not matter. --/ 372 373 <!testsaved16 374 Compiled pattern loaded from testsaved16 375 No study data 376 Error -28 from pcre_fullinfo(0) 377 Running in 8-bit mode but pattern was compiled in 16-bit mode 378 379 <!testsaved32 380 Compiled pattern loaded from testsaved32 381 No study data 382 Error -28 from pcre_fullinfo(0) 383 Running in 8-bit mode but pattern was compiled in 32-bit mode 384 385 /\h/SI 386 Capturing subpattern count = 0 387 No options 388 No first char 389 No need char 390 Subject length lower bound = 1 391 Starting chars: \x09 \x20 \xa0 392 393 /\H/SI 394 Capturing subpattern count = 0 395 No options 396 No first char 397 No need char 398 Subject length lower bound = 1 399 No starting char list 400 401 /\v/SI 402 Capturing subpattern count = 0 403 No options 404 No first char 405 No need char 406 Subject length lower bound = 1 407 Starting chars: \x0a \x0b \x0c \x0d \x85 408 409 /\V/SI 410 Capturing subpattern count = 0 411 No options 412 No first char 413 No need char 414 Subject length lower bound = 1 415 No starting char list 416 417 /\R/SI 418 Capturing subpattern count = 0 419 No options 420 No first char 421 No need char 422 Subject length lower bound = 1 423 Starting chars: \x0a \x0b \x0c \x0d \x85 424 425 /[\h]/BZ 426 ------------------------------------------------------------------ 427 Bra 428 [\x09 \xa0] 429 Ket 430 End 431 ------------------------------------------------------------------ 432 >\x09< 433 0: \x09 434 435 /[\h]+/BZ 436 ------------------------------------------------------------------ 437 Bra 438 [\x09 \xa0]++ 439 Ket 440 End 441 ------------------------------------------------------------------ 442 >\x09\x20\xa0< 443 0: \x09 \xa0 444 445 /[\v]/BZ 446 ------------------------------------------------------------------ 447 Bra 448 [\x0a-\x0d\x85] 449 Ket 450 End 451 ------------------------------------------------------------------ 452 453 /[\H]/BZ 454 ------------------------------------------------------------------ 455 Bra 456 [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] 457 Ket 458 End 459 ------------------------------------------------------------------ 460 461 /[^\h]/BZ 462 ------------------------------------------------------------------ 463 Bra 464 [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg) 465 Ket 466 End 467 ------------------------------------------------------------------ 468 469 /[\V]/BZ 470 ------------------------------------------------------------------ 471 Bra 472 [\x00-\x09\x0e-\x84\x86-\xff] 473 Ket 474 End 475 ------------------------------------------------------------------ 476 477 /[\x0a\V]/BZ 478 ------------------------------------------------------------------ 479 Bra 480 [\x00-\x0a\x0e-\x84\x86-\xff] 481 Ket 482 End 483 ------------------------------------------------------------------ 484 485 /\777/I 486 Failed: octal value is greater than \377 in 8-bit non-UTF-8 mode at offset 3 487 488 /(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K 489 Failed: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) at offset 259 490 491 /(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K 492 XX 493 0: XX 494 MK: 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE 495 496 /\u0100/<JS> 497 Failed: character value in \u.... sequence is too large at offset 5 498 499 /[\u0100-\u0200]/<JS> 500 Failed: character value in \u.... sequence is too large at offset 6 501 502 /[^\x00-a]{12,}[^b-\xff]*/BZ 503 ------------------------------------------------------------------ 504 Bra 505 [b-\xff] (neg){12,}+ 506 [\x00-a] (neg)*+ 507 Ket 508 End 509 ------------------------------------------------------------------ 510 511 /[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/BZ 512 ------------------------------------------------------------------ 513 Bra 514 [\x00-\x08\x0e-\x1f!-\xff] (neg)*+ 515 \s* 516 517 [0-9A-Z_a-z]++ 518 \W+ 519 520 [\x00-/:-\xff] (neg)*+ 521 \d 522 0 523 [\x00-/:-@[-^`{-\xff] (neg){4,6}+ 524 \w* 525 A 526 Ket 527 End 528 ------------------------------------------------------------------ 529 530 /-- End of testinput14 --/ 531