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 12No 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 34No match: POSIX code 17: match failed 35 The Quick Brown Fox 36No 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 46No match: POSIX code 17: match failed 47 abc\ndef 48No 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 57Failed: POSIX code 15: bad back reference at offset 7 58 59/(abc\1)/P 60 abc 61No 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 96No match: POSIX code 17: match failed 97 ab\ncd 98No 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 110Matched with REG_NOSUB 111 112/a(?P<name>b)c/PN 113 abc 114Matched with REG_NOSUB 115 116/a?|b?/P 117 abc 118 0: a 119 ** Failers 120 0: 121 ddd\N 122No 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 138Failed: 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) 148No 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. 152No 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. 156No match 157 158/\x{100}/I 159Failed: character value in \x{} or \o{} is too large at offset 6 160 161/\o{400}/I 162Failed: 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 358Capturing subpattern count = 0 359Contains explicit CR or LF match 360Options: extended 361No first char 362No need char 363Subject length lower bound = 3 364Starting 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 369to 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 371not matter. --/ 372 373<!testsaved16 374Compiled pattern loaded from testsaved16 375No study data 376Error -28 from pcre_fullinfo(0) 377Running in 8-bit mode but pattern was compiled in 16-bit mode 378 379<!testsaved32 380Compiled pattern loaded from testsaved32 381No study data 382Error -28 from pcre_fullinfo(0) 383Running in 8-bit mode but pattern was compiled in 32-bit mode 384 385/\h/SI 386Capturing subpattern count = 0 387No options 388No first char 389No need char 390Subject length lower bound = 1 391Starting chars: \x09 \x20 \xa0 392 393/\H/SI 394Capturing subpattern count = 0 395No options 396No first char 397No need char 398Subject length lower bound = 1 399No starting char list 400 401/\v/SI 402Capturing subpattern count = 0 403No options 404No first char 405No need char 406Subject length lower bound = 1 407Starting chars: \x0a \x0b \x0c \x0d \x85 408 409/\V/SI 410Capturing subpattern count = 0 411No options 412No first char 413No need char 414Subject length lower bound = 1 415No starting char list 416 417/\R/SI 418Capturing subpattern count = 0 419No options 420No first char 421No need char 422Subject length lower bound = 1 423Starting 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 486Failed: octal value is greater than \377 in 8-bit non-UTF-8 mode at offset 3 487 488/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K 489Failed: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) at offset 259 490 491/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K 492 XX 493 0: XX 494MK: 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE 495 496/\u0100/<JS> 497Failed: character value in \u.... sequence is too large at offset 5 498 499/[\u0100-\u0200]/<JS> 500Failed: 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/(?'ABC'[bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar](*THEN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/ 531 532/-- End of testinput14 --/ 533