1 |
/-- This set of tests is for features that are compatible with all versions of |
/-- This set of tests is for features that are compatible with all versions of |
2 |
Perl 5, in non-UTF-8 mode. --/ |
Perl >= 5.10, in non-UTF-8 mode. It should run clean for the 8-bit, 16-bit, |
3 |
|
and 32-bit PCRE libraries. --/ |
4 |
|
|
5 |
/the quick brown fox/ |
/the quick brown fox/ |
6 |
the quick brown fox |
the quick brown fox |
3773 |
abc123abc |
abc123abc |
3774 |
abc123bc |
abc123bc |
3775 |
|
|
3776 |
/-- This tests for an IPv6 address in the form where it can have up to --/ |
/-- This tests for an IPv6 address in the form where it can have up to |
3777 |
/-- eight components, one and only one of which is empty. This must be --/ |
eight components, one and only one of which is empty. This must be |
3778 |
/-- an internal component. --/ |
an internal component. --/ |
3779 |
|
|
3780 |
/^(?!:) # colon disallowed at start |
/^(?!:) # colon disallowed at start |
3781 |
(?: # start of item |
(?: # start of item |
4131 |
abcdef |
abcdef |
4132 |
ABCDEF |
ABCDEF |
4133 |
|
|
4134 |
|
/((a|)+)+Z/ |
4135 |
|
Z |
4136 |
|
|
4137 |
|
/(a)b|(a)c/ |
4138 |
|
ac |
4139 |
|
|
4140 |
|
/(?>(a))b|(a)c/ |
4141 |
|
ac |
4142 |
|
|
4143 |
|
/(?=(a))ab|(a)c/ |
4144 |
|
ac |
4145 |
|
|
4146 |
|
/((?>(a))b|(a)c)/ |
4147 |
|
ac |
4148 |
|
|
4149 |
|
/((?>(a))b|(a)c)++/ |
4150 |
|
ac |
4151 |
|
|
4152 |
|
/(?:(?>(a))b|(a)c)++/ |
4153 |
|
ac |
4154 |
|
|
4155 |
|
/(?=(?>(a))b|(a)c)(..)/ |
4156 |
|
ac |
4157 |
|
|
4158 |
|
/(?>(?>(a))b|(a)c)/ |
4159 |
|
ac |
4160 |
|
|
4161 |
|
/(?:(?>([ab])))+a=/+ |
4162 |
|
=ba= |
4163 |
|
|
4164 |
|
/(?>([ab]))+a=/+ |
4165 |
|
=ba= |
4166 |
|
|
4167 |
|
/((?>(a+)b)+(aabab))/ |
4168 |
|
aaaabaaabaabab |
4169 |
|
|
4170 |
|
/(?>a+|ab)+?c/ |
4171 |
|
aabc |
4172 |
|
|
4173 |
|
/(?>a+|ab)+c/ |
4174 |
|
aabc |
4175 |
|
|
4176 |
|
/(?:a+|ab)+c/ |
4177 |
|
aabc |
4178 |
|
|
4179 |
|
/(?(?=(a))a)/ |
4180 |
|
a |
4181 |
|
|
4182 |
|
/(?(?=(a))a)(b)/ |
4183 |
|
ab |
4184 |
|
|
4185 |
|
/^(?:a|ab)++c/ |
4186 |
|
aaaabc |
4187 |
|
|
4188 |
|
/^(?>a|ab)++c/ |
4189 |
|
aaaabc |
4190 |
|
|
4191 |
|
/^(?:a|ab)+c/ |
4192 |
|
aaaabc |
4193 |
|
|
4194 |
|
/(?=abc){3}abc/+ |
4195 |
|
abcabcabc |
4196 |
|
** Failers |
4197 |
|
xyz |
4198 |
|
|
4199 |
|
/(?=abc)+abc/+ |
4200 |
|
abcabcabc |
4201 |
|
** Failers |
4202 |
|
xyz |
4203 |
|
|
4204 |
|
/(?=abc)++abc/+ |
4205 |
|
abcabcabc |
4206 |
|
** Failers |
4207 |
|
xyz |
4208 |
|
|
4209 |
|
/(?=abc){0}xyz/ |
4210 |
|
xyz |
4211 |
|
|
4212 |
|
/(?=abc){1}xyz/ |
4213 |
|
** Failers |
4214 |
|
xyz |
4215 |
|
|
4216 |
|
/(?=(a))?./ |
4217 |
|
ab |
4218 |
|
bc |
4219 |
|
|
4220 |
|
/(?=(a))??./ |
4221 |
|
ab |
4222 |
|
bc |
4223 |
|
|
4224 |
|
/^(?=(?1))?[az]([abc])d/ |
4225 |
|
abd |
4226 |
|
zcdxx |
4227 |
|
|
4228 |
|
/^(?!a){0}\w+/ |
4229 |
|
aaaaa |
4230 |
|
|
4231 |
|
/(?<=(abc))?xyz/ |
4232 |
|
abcxyz |
4233 |
|
pqrxyz |
4234 |
|
|
4235 |
|
/^[\g<a>]+/ |
4236 |
|
ggg<<<aaa>>> |
4237 |
|
** Failers |
4238 |
|
\\ga |
4239 |
|
|
4240 |
|
/^[\ga]+/ |
4241 |
|
gggagagaxyz |
4242 |
|
|
4243 |
|
/^[:a[:digit:]]+/ |
4244 |
|
aaaa444:::Z |
4245 |
|
|
4246 |
|
/^[:a[:digit:]:b]+/ |
4247 |
|
aaaa444:::bbbZ |
4248 |
|
|
4249 |
|
/[:a]xxx[b:]/ |
4250 |
|
:xxx: |
4251 |
|
|
4252 |
|
/(?<=a{2})b/i |
4253 |
|
xaabc |
4254 |
|
** Failers |
4255 |
|
xabc |
4256 |
|
|
4257 |
|
/(?<!a{2})b/i |
4258 |
|
xabc |
4259 |
|
** Failers |
4260 |
|
xaabc |
4261 |
|
|
4262 |
|
/(?<=a\h)c/ |
4263 |
|
xa c |
4264 |
|
|
4265 |
|
/(?<=[^a]{2})b/ |
4266 |
|
axxbc |
4267 |
|
aAAbc |
4268 |
|
** Failers |
4269 |
|
xaabc |
4270 |
|
|
4271 |
|
/(?<=[^a]{2})b/i |
4272 |
|
axxbc |
4273 |
|
** Failers |
4274 |
|
aAAbc |
4275 |
|
xaabc |
4276 |
|
|
4277 |
|
/(?<=a\H)c/ |
4278 |
|
abc |
4279 |
|
|
4280 |
|
/(?<=a\V)c/ |
4281 |
|
abc |
4282 |
|
|
4283 |
|
/(?<=a\v)c/ |
4284 |
|
a\nc |
4285 |
|
|
4286 |
|
/(?(?=c)c|d)++Y/ |
4287 |
|
XcccddYX |
4288 |
|
|
4289 |
|
/(?(?=c)c|d)*+Y/ |
4290 |
|
XcccddYX |
4291 |
|
|
4292 |
|
/^(a{2,3}){2,}+a/ |
4293 |
|
aaaaaaa |
4294 |
|
** Failers |
4295 |
|
aaaaaa |
4296 |
|
aaaaaaaaa |
4297 |
|
|
4298 |
|
/^(a{2,3})++a/ |
4299 |
|
** Failers |
4300 |
|
aaaaaa |
4301 |
|
|
4302 |
|
/^(a{2,3})*+a/ |
4303 |
|
** Failers |
4304 |
|
aaaaaa |
4305 |
|
|
4306 |
|
/ab\Cde/ |
4307 |
|
abXde |
4308 |
|
|
4309 |
|
/(?<=ab\Cde)X/ |
4310 |
|
abZdeX |
4311 |
|
|
4312 |
|
/a[\CD]b/ |
4313 |
|
aCb |
4314 |
|
aDb |
4315 |
|
|
4316 |
|
/a[\C-X]b/ |
4317 |
|
aJb |
4318 |
|
|
4319 |
|
/\H\h\V\v/ |
4320 |
|
X X\x0a |
4321 |
|
X\x09X\x0b |
4322 |
|
** Failers |
4323 |
|
\xa0 X\x0a |
4324 |
|
|
4325 |
|
/\H*\h+\V?\v{3,4}/ |
4326 |
|
\x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a |
4327 |
|
\x09\x20\xa0\x0a\x0b\x0c\x0d\x0a |
4328 |
|
\x09\x20\xa0\x0a\x0b\x0c |
4329 |
|
** Failers |
4330 |
|
\x09\x20\xa0\x0a\x0b |
4331 |
|
|
4332 |
|
/\H{3,4}/ |
4333 |
|
XY ABCDE |
4334 |
|
XY PQR ST |
4335 |
|
|
4336 |
|
/.\h{3,4}./ |
4337 |
|
XY AB PQRS |
4338 |
|
|
4339 |
|
/\h*X\h?\H+Y\H?Z/ |
4340 |
|
>XNNNYZ |
4341 |
|
> X NYQZ |
4342 |
|
** Failers |
4343 |
|
>XYZ |
4344 |
|
> X NY Z |
4345 |
|
|
4346 |
|
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/ |
4347 |
|
>XY\x0aZ\x0aA\x0bNN\x0c |
4348 |
|
>\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c |
4349 |
|
|
4350 |
|
/(foo)\Kbar/ |
4351 |
|
foobar |
4352 |
|
|
4353 |
|
/(foo)(\Kbar|baz)/ |
4354 |
|
foobar |
4355 |
|
foobaz |
4356 |
|
|
4357 |
|
/(foo\Kbar)baz/ |
4358 |
|
foobarbaz |
4359 |
|
|
4360 |
|
/abc\K|def\K/g+ |
4361 |
|
Xabcdefghi |
4362 |
|
|
4363 |
|
/ab\Kc|de\Kf/g+ |
4364 |
|
Xabcdefghi |
4365 |
|
|
4366 |
|
/(?=C)/g+ |
4367 |
|
ABCDECBA |
4368 |
|
|
4369 |
|
/^abc\K/+ |
4370 |
|
abcdef |
4371 |
|
** Failers |
4372 |
|
defabcxyz |
4373 |
|
|
4374 |
|
/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/ |
4375 |
|
ababababbbabZXXXX |
4376 |
|
|
4377 |
|
/(?<A>tom|bon)-\g{A}/ |
4378 |
|
tom-tom |
4379 |
|
bon-bon |
4380 |
|
|
4381 |
|
/(^(a|b\g{-1}))/ |
4382 |
|
bacxxx |
4383 |
|
|
4384 |
|
/(?|(abc)|(xyz))\1/ |
4385 |
|
abcabc |
4386 |
|
xyzxyz |
4387 |
|
** Failers |
4388 |
|
abcxyz |
4389 |
|
xyzabc |
4390 |
|
|
4391 |
|
/(?|(abc)|(xyz))(?1)/ |
4392 |
|
abcabc |
4393 |
|
xyzabc |
4394 |
|
** Failers |
4395 |
|
xyzxyz |
4396 |
|
|
4397 |
|
/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/ |
4398 |
|
XYabcdY |
4399 |
|
|
4400 |
|
/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/ |
4401 |
|
XYabcdY |
4402 |
|
|
4403 |
|
/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/ |
4404 |
|
XYabcdY |
4405 |
|
|
4406 |
|
/(?'abc'\w+):\k<abc>{2}/ |
4407 |
|
a:aaxyz |
4408 |
|
ab:ababxyz |
4409 |
|
** Failers |
4410 |
|
a:axyz |
4411 |
|
ab:abxyz |
4412 |
|
|
4413 |
|
/(?'abc'\w+):\g{abc}{2}/ |
4414 |
|
a:aaxyz |
4415 |
|
ab:ababxyz |
4416 |
|
** Failers |
4417 |
|
a:axyz |
4418 |
|
ab:abxyz |
4419 |
|
|
4420 |
|
/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x |
4421 |
|
abd |
4422 |
|
ce |
4423 |
|
|
4424 |
|
/^(a.)\g-1Z/ |
4425 |
|
aXaXZ |
4426 |
|
|
4427 |
|
/^(a.)\g{-1}Z/ |
4428 |
|
aXaXZ |
4429 |
|
|
4430 |
|
/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x |
4431 |
|
abcd |
4432 |
|
|
4433 |
|
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT)) |
4434 |
|
(?(DEFINE) |
4435 |
|
(?<NAME_PAT>[a-z]+) |
4436 |
|
(?<ADDRESS_PAT>\d+) |
4437 |
|
)/x |
4438 |
|
metcalfe 33 |
4439 |
|
|
4440 |
|
/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/ |
4441 |
|
1.2.3.4 |
4442 |
|
131.111.10.206 |
4443 |
|
10.0.0.0 |
4444 |
|
** Failers |
4445 |
|
10.6 |
4446 |
|
455.3.4.5 |
4447 |
|
|
4448 |
|
/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/ |
4449 |
|
1.2.3.4 |
4450 |
|
131.111.10.206 |
4451 |
|
10.0.0.0 |
4452 |
|
** Failers |
4453 |
|
10.6 |
4454 |
|
455.3.4.5 |
4455 |
|
|
4456 |
|
/^(\w++|\s++)*$/ |
4457 |
|
now is the time for all good men to come to the aid of the party |
4458 |
|
*** Failers |
4459 |
|
this is not a line with only words and spaces! |
4460 |
|
|
4461 |
|
/(\d++)(\w)/ |
4462 |
|
12345a |
4463 |
|
*** Failers |
4464 |
|
12345+ |
4465 |
|
|
4466 |
|
/a++b/ |
4467 |
|
aaab |
4468 |
|
|
4469 |
|
/(a++b)/ |
4470 |
|
aaab |
4471 |
|
|
4472 |
|
/(a++)b/ |
4473 |
|
aaab |
4474 |
|
|
4475 |
|
/([^()]++|\([^()]*\))+/ |
4476 |
|
((abc(ade)ufh()()x |
4477 |
|
|
4478 |
|
/\(([^()]++|\([^()]+\))+\)/ |
4479 |
|
(abc) |
4480 |
|
(abc(def)xyz) |
4481 |
|
*** Failers |
4482 |
|
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
4483 |
|
|
4484 |
|
/^([^()]|\((?1)*\))*$/ |
4485 |
|
abc |
4486 |
|
a(b)c |
4487 |
|
a(b(c))d |
4488 |
|
*** Failers) |
4489 |
|
a(b(c)d |
4490 |
|
|
4491 |
|
/^>abc>([^()]|\((?1)*\))*<xyz<$/ |
4492 |
|
>abc>123<xyz< |
4493 |
|
>abc>1(2)3<xyz< |
4494 |
|
>abc>(1(2)3)<xyz< |
4495 |
|
|
4496 |
|
/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i |
4497 |
|
1221 |
4498 |
|
Satanoscillatemymetallicsonatas |
4499 |
|
AmanaplanacanalPanama |
4500 |
|
AblewasIereIsawElba |
4501 |
|
*** Failers |
4502 |
|
Thequickbrownfox |
4503 |
|
|
4504 |
|
/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/ |
4505 |
|
12 |
4506 |
|
(((2+2)*-3)-7) |
4507 |
|
-12 |
4508 |
|
*** Failers |
4509 |
|
((2+2)*-3)-7) |
4510 |
|
|
4511 |
|
/^(x(y|(?1){2})z)/ |
4512 |
|
xyz |
4513 |
|
xxyzxyzz |
4514 |
|
*** Failers |
4515 |
|
xxyzz |
4516 |
|
xxyzxyzxyzz |
4517 |
|
|
4518 |
|
/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x |
4519 |
|
<> |
4520 |
|
<abcd> |
4521 |
|
<abc <123> hij> |
4522 |
|
<abc <def> hij> |
4523 |
|
<abc<>def> |
4524 |
|
<abc<> |
4525 |
|
*** Failers |
4526 |
|
<abc |
4527 |
|
|
4528 |
|
/^a+(*FAIL)/ |
4529 |
|
aaaaaa |
4530 |
|
|
4531 |
|
/a+b?c+(*FAIL)/ |
4532 |
|
aaabccc |
4533 |
|
|
4534 |
|
/a+b?(*PRUNE)c+(*FAIL)/ |
4535 |
|
aaabccc |
4536 |
|
|
4537 |
|
/a+b?(*COMMIT)c+(*FAIL)/ |
4538 |
|
aaabccc |
4539 |
|
|
4540 |
|
/a+b?(*SKIP)c+(*FAIL)/ |
4541 |
|
aaabcccaaabccc |
4542 |
|
|
4543 |
|
/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ |
4544 |
|
aaaxxxxxx |
4545 |
|
aaa++++++ |
4546 |
|
bbbxxxxx |
4547 |
|
bbb+++++ |
4548 |
|
cccxxxx |
4549 |
|
ccc++++ |
4550 |
|
dddddddd |
4551 |
|
|
4552 |
|
/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ |
4553 |
|
aaaxxxxxx |
4554 |
|
aaa++++++ |
4555 |
|
bbbxxxxx |
4556 |
|
bbb+++++ |
4557 |
|
cccxxxx |
4558 |
|
ccc++++ |
4559 |
|
dddddddd |
4560 |
|
|
4561 |
|
/a+b?(*THEN)c+(*FAIL)/ |
4562 |
|
aaabccc |
4563 |
|
|
4564 |
|
/(A (A|B(*ACCEPT)|C) D)(E)/x |
4565 |
|
AB |
4566 |
|
ABX |
4567 |
|
AADE |
4568 |
|
ACDE |
4569 |
|
** Failers |
4570 |
|
AD |
4571 |
|
|
4572 |
|
/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i |
4573 |
|
1221 |
4574 |
|
Satan, oscillate my metallic sonatas! |
4575 |
|
A man, a plan, a canal: Panama! |
4576 |
|
Able was I ere I saw Elba. |
4577 |
|
*** Failers |
4578 |
|
The quick brown fox |
4579 |
|
|
4580 |
|
/^((.)(?1)\2|.)$/ |
4581 |
|
a |
4582 |
|
aba |
4583 |
|
aabaa |
4584 |
|
abcdcba |
4585 |
|
pqaabaaqp |
4586 |
|
ablewasiereisawelba |
4587 |
|
rhubarb |
4588 |
|
the quick brown fox |
4589 |
|
|
4590 |
|
/(a)(?<=b(?1))/ |
4591 |
|
baz |
4592 |
|
** Failers |
4593 |
|
caz |
4594 |
|
|
4595 |
|
/(?<=b(?1))(a)/ |
4596 |
|
zbaaz |
4597 |
|
** Failers |
4598 |
|
aaa |
4599 |
|
|
4600 |
|
/(?<X>a)(?<=b(?&X))/ |
4601 |
|
baz |
4602 |
|
|
4603 |
|
/^(?|(abc)|(def))\1/ |
4604 |
|
abcabc |
4605 |
|
defdef |
4606 |
|
** Failers |
4607 |
|
abcdef |
4608 |
|
defabc |
4609 |
|
|
4610 |
|
/^(?|(abc)|(def))(?1)/ |
4611 |
|
abcabc |
4612 |
|
defabc |
4613 |
|
** Failers |
4614 |
|
defdef |
4615 |
|
abcdef |
4616 |
|
|
4617 |
|
/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ |
4618 |
|
a\"aaaaa |
4619 |
|
b\"aaaaa |
4620 |
|
** Failers |
4621 |
|
b\"11111 |
4622 |
|
|
4623 |
|
/(?:(?1)|B)(A(*F)|C)/ |
4624 |
|
ABCD |
4625 |
|
CCD |
4626 |
|
** Failers |
4627 |
|
CAD |
4628 |
|
|
4629 |
|
/^(?:(?1)|B)(A(*F)|C)/ |
4630 |
|
CCD |
4631 |
|
BCD |
4632 |
|
** Failers |
4633 |
|
ABCD |
4634 |
|
CAD |
4635 |
|
BAD |
4636 |
|
|
4637 |
|
/(?:(?1)|B)(A(*ACCEPT)XX|C)D/ |
4638 |
|
AAD |
4639 |
|
ACD |
4640 |
|
BAD |
4641 |
|
BCD |
4642 |
|
BAX |
4643 |
|
** Failers |
4644 |
|
ACX |
4645 |
|
ABC |
4646 |
|
|
4647 |
|
/(?(DEFINE)(A))B(?1)C/ |
4648 |
|
BAC |
4649 |
|
|
4650 |
|
/(?(DEFINE)((A)\2))B(?1)C/ |
4651 |
|
BAAC |
4652 |
|
|
4653 |
|
/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x |
4654 |
|
(ab(cd)ef) |
4655 |
|
|
4656 |
|
/^(?=a(*SKIP)b|ac)/ |
4657 |
|
** Failers |
4658 |
|
ac |
4659 |
|
|
4660 |
|
/^(?=a(*PRUNE)b)/ |
4661 |
|
ab |
4662 |
|
** Failers |
4663 |
|
ac |
4664 |
|
|
4665 |
|
/^(?=a(*ACCEPT)b)/ |
4666 |
|
ac |
4667 |
|
|
4668 |
|
/(?>a\Kb)/ |
4669 |
|
ab |
4670 |
|
|
4671 |
|
/((?>a\Kb))/ |
4672 |
|
ab |
4673 |
|
|
4674 |
|
/(a\Kb)/ |
4675 |
|
ab |
4676 |
|
|
4677 |
|
/^a\Kcz|ac/ |
4678 |
|
ac |
4679 |
|
|
4680 |
|
/(?>a\Kbz|ab)/ |
4681 |
|
ab |
4682 |
|
|
4683 |
|
/^(?&t)(?(DEFINE)(?<t>a\Kb))$/ |
4684 |
|
ab |
4685 |
|
|
4686 |
|
/^([^()]|\((?1)*\))*$/ |
4687 |
|
a(b)c |
4688 |
|
a(b(c)d)e |
4689 |
|
|
4690 |
|
/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/ |
4691 |
|
0 |
4692 |
|
00 |
4693 |
|
0000 |
4694 |
|
|
4695 |
|
/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/ |
4696 |
|
0 |
4697 |
|
00 |
4698 |
|
0000 |
4699 |
|
|
4700 |
|
/--- This one does fail, as expected, in Perl. It needs the complex item at the |
4701 |
|
end of the pattern. A single letter instead of (B|D) makes it not fail, |
4702 |
|
which I think is a Perl bug. --- / |
4703 |
|
|
4704 |
|
/A(*COMMIT)(B|D)/ |
4705 |
|
ACABX |
4706 |
|
|
4707 |
|
/--- Check the use of names for failure ---/ |
4708 |
|
|
4709 |
|
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K |
4710 |
|
** Failers |
4711 |
|
AC |
4712 |
|
CB |
4713 |
|
|
4714 |
|
/--- Force no study, otherwise mark is not seen. The studied version is in |
4715 |
|
test 2 because it isn't Perl-compatible. ---/ |
4716 |
|
|
4717 |
|
/(*MARK:A)(*SKIP:B)(C|X)/KSS |
4718 |
|
C |
4719 |
|
D |
4720 |
|
|
4721 |
|
/^(A(*THEN:A)B|C(*THEN:B)D)/K |
4722 |
|
** Failers |
4723 |
|
CB |
4724 |
|
|
4725 |
|
/^(?:A(*THEN:A)B|C(*THEN:B)D)/K |
4726 |
|
CB |
4727 |
|
|
4728 |
|
/^(?>A(*THEN:A)B|C(*THEN:B)D)/K |
4729 |
|
CB |
4730 |
|
|
4731 |
|
/--- This should succeed, as the skip causes bump to offset 1 (the mark). Note |
4732 |
|
that we have to have something complicated such as (B|Z) at the end because, |
4733 |
|
for Perl, a simple character somehow causes an unwanted optimization to mess |
4734 |
|
with the handling of backtracking verbs. ---/ |
4735 |
|
|
4736 |
|
/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK |
4737 |
|
AAAC |
4738 |
|
|
4739 |
|
/--- Test skipping over a non-matching mark. ---/ |
4740 |
|
|
4741 |
|
/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK |
4742 |
|
AAAC |
4743 |
|
|
4744 |
|
/--- Check shorthand for MARK ---/ |
4745 |
|
|
4746 |
|
/A(*:A)A+(*SKIP:A)(B|Z) | AC/xK |
4747 |
|
AAAC |
4748 |
|
|
4749 |
|
/--- Don't loop! Force no study, otherwise mark is not seen. ---/ |
4750 |
|
|
4751 |
|
/(*:A)A+(*SKIP:A)(B|Z)/KSS |
4752 |
|
AAAC |
4753 |
|
|
4754 |
|
/--- This should succeed, as a non-existent skip name disables the skip ---/ |
4755 |
|
|
4756 |
|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK |
4757 |
|
AAAC |
4758 |
|
|
4759 |
|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK |
4760 |
|
AAAC |
4761 |
|
|
4762 |
|
/--- COMMIT at the start of a pattern should act like an anchor. Again, |
4763 |
|
however, we need the complication for Perl. ---/ |
4764 |
|
|
4765 |
|
/(*COMMIT)(A|P)(B|P)(C|P)/ |
4766 |
|
ABCDEFG |
4767 |
|
** Failers |
4768 |
|
DEFGABC |
4769 |
|
|
4770 |
|
/--- COMMIT inside an atomic group can't stop backtracking over the group. ---/ |
4771 |
|
|
4772 |
|
/(\w+)(?>b(*COMMIT))\w{2}/ |
4773 |
|
abbb |
4774 |
|
|
4775 |
|
/(\w+)b(*COMMIT)\w{2}/ |
4776 |
|
abbb |
4777 |
|
|
4778 |
|
/--- Check opening parens in comment when seeking forward reference. ---/ |
4779 |
|
|
4780 |
|
/(?&t)(?#()(?(DEFINE)(?<t>a))/ |
4781 |
|
bac |
4782 |
|
|
4783 |
|
/--- COMMIT should override THEN ---/ |
4784 |
|
|
4785 |
|
/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/ |
4786 |
|
yes |
4787 |
|
|
4788 |
|
/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/ |
4789 |
|
yes |
4790 |
|
|
4791 |
|
/b?(*SKIP)c/ |
4792 |
|
bc |
4793 |
|
abc |
4794 |
|
|
4795 |
|
/(*SKIP)bc/ |
4796 |
|
a |
4797 |
|
|
4798 |
|
/(*SKIP)b/ |
4799 |
|
a |
4800 |
|
|
4801 |
|
/(?P<abn>(?P=abn)xxx|)+/ |
4802 |
|
xxx |
4803 |
|
|
4804 |
|
/(?i:([^b]))(?1)/ |
4805 |
|
aa |
4806 |
|
aA |
4807 |
|
** Failers |
4808 |
|
ab |
4809 |
|
aB |
4810 |
|
Ba |
4811 |
|
ba |
4812 |
|
|
4813 |
|
/^(?&t)*+(?(DEFINE)(?<t>a))\w$/ |
4814 |
|
aaaaaaX |
4815 |
|
** Failers |
4816 |
|
aaaaaa |
4817 |
|
|
4818 |
|
/^(?&t)*(?(DEFINE)(?<t>a))\w$/ |
4819 |
|
aaaaaaX |
4820 |
|
aaaaaa |
4821 |
|
|
4822 |
|
/^(a)*+(\w)/ |
4823 |
|
aaaaX |
4824 |
|
YZ |
4825 |
|
** Failers |
4826 |
|
aaaa |
4827 |
|
|
4828 |
|
/^(?:a)*+(\w)/ |
4829 |
|
aaaaX |
4830 |
|
YZ |
4831 |
|
** Failers |
4832 |
|
aaaa |
4833 |
|
|
4834 |
|
/^(a)++(\w)/ |
4835 |
|
aaaaX |
4836 |
|
** Failers |
4837 |
|
aaaa |
4838 |
|
YZ |
4839 |
|
|
4840 |
|
/^(?:a)++(\w)/ |
4841 |
|
aaaaX |
4842 |
|
** Failers |
4843 |
|
aaaa |
4844 |
|
YZ |
4845 |
|
|
4846 |
|
/^(a)?+(\w)/ |
4847 |
|
aaaaX |
4848 |
|
YZ |
4849 |
|
|
4850 |
|
/^(?:a)?+(\w)/ |
4851 |
|
aaaaX |
4852 |
|
YZ |
4853 |
|
|
4854 |
|
/^(a){2,}+(\w)/ |
4855 |
|
aaaaX |
4856 |
|
** Failers |
4857 |
|
aaa |
4858 |
|
YZ |
4859 |
|
|
4860 |
|
/^(?:a){2,}+(\w)/ |
4861 |
|
aaaaX |
4862 |
|
** Failers |
4863 |
|
aaa |
4864 |
|
YZ |
4865 |
|
|
4866 |
|
/(a|)*(?1)b/ |
4867 |
|
b |
4868 |
|
ab |
4869 |
|
aab |
4870 |
|
|
4871 |
|
/(a)++(?1)b/ |
4872 |
|
** Failers |
4873 |
|
ab |
4874 |
|
aab |
4875 |
|
|
4876 |
|
/(a)*+(?1)b/ |
4877 |
|
** Failers |
4878 |
|
ab |
4879 |
|
aab |
4880 |
|
|
4881 |
|
/(?1)(?:(b)){0}/ |
4882 |
|
b |
4883 |
|
|
4884 |
|
/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x |
4885 |
|
foo(bar(baz)+baz(bop)) |
4886 |
|
|
4887 |
|
/(A (A|B(*ACCEPT)|C) D)(E)/x |
4888 |
|
AB |
4889 |
|
|
4890 |
|
/\A.*?(a|bc)/ |
4891 |
|
ba |
4892 |
|
|
4893 |
|
/\A.*?(?:a|bc)++/ |
4894 |
|
ba |
4895 |
|
|
4896 |
|
/\A.*?(a|bc)++/ |
4897 |
|
ba |
4898 |
|
|
4899 |
|
/\A.*?(?:a|bc|d)/ |
4900 |
|
ba |
4901 |
|
|
4902 |
|
/(?:(b))++/ |
4903 |
|
beetle |
4904 |
|
|
4905 |
|
/(?(?=(a(*ACCEPT)z))a)/ |
4906 |
|
a |
4907 |
|
|
4908 |
|
/^(a)(?1)+ab/ |
4909 |
|
aaaab |
4910 |
|
|
4911 |
|
/^(a)(?1)++ab/ |
4912 |
|
aaaab |
4913 |
|
|
4914 |
|
/^(?=a(*:M))aZ/K |
4915 |
|
aZbc |
4916 |
|
|
4917 |
|
/^(?!(*:M)b)aZ/K |
4918 |
|
aZbc |
4919 |
|
|
4920 |
|
/(?(DEFINE)(a))?b(?1)/ |
4921 |
|
backgammon |
4922 |
|
|
4923 |
|
/^\N+/ |
4924 |
|
abc\ndef |
4925 |
|
|
4926 |
|
/^\N{1,}/ |
4927 |
|
abc\ndef |
4928 |
|
|
4929 |
|
/(?(R)a+|(?R)b)/ |
4930 |
|
aaaabcde |
4931 |
|
|
4932 |
|
/(?(R)a+|((?R))b)/ |
4933 |
|
aaaabcde |
4934 |
|
|
4935 |
|
/((?(R)a+|(?1)b))/ |
4936 |
|
aaaabcde |
4937 |
|
|
4938 |
|
/((?(R1)a+|(?1)b))/ |
4939 |
|
aaaabcde |
4940 |
|
|
4941 |
|
/a(*:any |
4942 |
|
name)/K |
4943 |
|
abc |
4944 |
|
|
4945 |
|
/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/ |
4946 |
|
a |
4947 |
|
ba |
4948 |
|
bba |
4949 |
|
|
4950 |
|
/--- Checking revised (*THEN) handling ---/ |
4951 |
|
|
4952 |
|
/--- Capture ---/ |
4953 |
|
|
4954 |
|
/^.*? (a(*THEN)b) c/x |
4955 |
|
aabc |
4956 |
|
|
4957 |
|
/^.*? (a(*THEN)b|(*F)) c/x |
4958 |
|
aabc |
4959 |
|
|
4960 |
|
/^.*? ( (a(*THEN)b) | (*F) ) c/x |
4961 |
|
aabc |
4962 |
|
|
4963 |
|
/^.*? ( (a(*THEN)b) ) c/x |
4964 |
|
aabc |
4965 |
|
|
4966 |
|
/--- Non-capture ---/ |
4967 |
|
|
4968 |
|
/^.*? (?:a(*THEN)b) c/x |
4969 |
|
aabc |
4970 |
|
|
4971 |
|
/^.*? (?:a(*THEN)b|(*F)) c/x |
4972 |
|
aabc |
4973 |
|
|
4974 |
|
/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x |
4975 |
|
aabc |
4976 |
|
|
4977 |
|
/^.*? (?: (?:a(*THEN)b) ) c/x |
4978 |
|
aabc |
4979 |
|
|
4980 |
|
/--- Atomic ---/ |
4981 |
|
|
4982 |
|
/^.*? (?>a(*THEN)b) c/x |
4983 |
|
aabc |
4984 |
|
|
4985 |
|
/^.*? (?>a(*THEN)b|(*F)) c/x |
4986 |
|
aabc |
4987 |
|
|
4988 |
|
/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x |
4989 |
|
aabc |
4990 |
|
|
4991 |
|
/^.*? (?> (?>a(*THEN)b) ) c/x |
4992 |
|
aabc |
4993 |
|
|
4994 |
|
/--- Possessive capture ---/ |
4995 |
|
|
4996 |
|
/^.*? (a(*THEN)b)++ c/x |
4997 |
|
aabc |
4998 |
|
|
4999 |
|
/^.*? (a(*THEN)b|(*F))++ c/x |
5000 |
|
aabc |
5001 |
|
|
5002 |
|
/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x |
5003 |
|
aabc |
5004 |
|
|
5005 |
|
/^.*? ( (a(*THEN)b)++ )++ c/x |
5006 |
|
aabc |
5007 |
|
|
5008 |
|
/--- Possessive non-capture ---/ |
5009 |
|
|
5010 |
|
/^.*? (?:a(*THEN)b)++ c/x |
5011 |
|
aabc |
5012 |
|
|
5013 |
|
/^.*? (?:a(*THEN)b|(*F))++ c/x |
5014 |
|
aabc |
5015 |
|
|
5016 |
|
/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x |
5017 |
|
aabc |
5018 |
|
|
5019 |
|
/^.*? (?: (?:a(*THEN)b)++ )++ c/x |
5020 |
|
aabc |
5021 |
|
|
5022 |
|
/--- Condition assertion ---/ |
5023 |
|
|
5024 |
|
/^(?(?=a(*THEN)b)ab|ac)/ |
5025 |
|
ac |
5026 |
|
|
5027 |
|
/--- Condition ---/ |
5028 |
|
|
5029 |
|
/^.*?(?(?=a)a|b(*THEN)c)/ |
5030 |
|
ba |
5031 |
|
|
5032 |
|
/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/ |
5033 |
|
ba |
5034 |
|
|
5035 |
|
/^.*?(?(?=a)a(*THEN)b|c)/ |
5036 |
|
ac |
5037 |
|
|
5038 |
|
/--- Assertion ---/ |
5039 |
|
|
5040 |
|
/^.*(?=a(*THEN)b)/ |
5041 |
|
aabc |
5042 |
|
|
5043 |
|
/------------------------------/ |
5044 |
|
|
5045 |
|
/(?>a(*:m))/imsxSK |
5046 |
|
a |
5047 |
|
|
5048 |
|
/(?>(a)(*:m))/imsxSK |
5049 |
|
a |
5050 |
|
|
5051 |
|
/(?<=a(*ACCEPT)b)c/ |
5052 |
|
xacd |
5053 |
|
|
5054 |
|
/(?<=(a(*ACCEPT)b))c/ |
5055 |
|
xacd |
5056 |
|
|
5057 |
|
/(?<=(a(*COMMIT)b))c/ |
5058 |
|
xabcd |
5059 |
|
** Failers |
5060 |
|
xacd |
5061 |
|
|
5062 |
|
/(?<!a(*FAIL)b)c/ |
5063 |
|
xcd |
5064 |
|
acd |
5065 |
|
|
5066 |
|
/(?<=a(*:N)b)c/K |
5067 |
|
xabcd |
5068 |
|
|
5069 |
|
/(?<=a(*PRUNE)b)c/ |
5070 |
|
xabcd |
5071 |
|
|
5072 |
|
/(?<=a(*SKIP)b)c/ |
5073 |
|
xabcd |
5074 |
|
|
5075 |
|
/(?<=a(*THEN)b)c/ |
5076 |
|
xabcd |
5077 |
|
|
5078 |
|
/(a)(?2){2}(.)/ |
5079 |
|
abcd |
5080 |
|
|
5081 |
|
/(*MARK:A)(*PRUNE:B)(C|X)/KS |
5082 |
|
C |
5083 |
|
D |
5084 |
|
|
5085 |
|
/(*MARK:A)(*PRUNE:B)(C|X)/KSS |
5086 |
|
C |
5087 |
|
D |
5088 |
|
|
5089 |
|
/(*MARK:A)(*THEN:B)(C|X)/KS |
5090 |
|
C |
5091 |
|
D |
5092 |
|
|
5093 |
|
/(*MARK:A)(*THEN:B)(C|X)/KSY |
5094 |
|
C |
5095 |
|
D |
5096 |
|
|
5097 |
|
/(*MARK:A)(*THEN:B)(C|X)/KSS |
5098 |
|
C |
5099 |
|
D |
5100 |
|
|
5101 |
|
/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/ |
5102 |
|
|
5103 |
|
/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK |
5104 |
|
AAAC |
5105 |
|
|
5106 |
|
/--- Same --/ |
5107 |
|
|
5108 |
|
/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK |
5109 |
|
AAAC |
5110 |
|
|
5111 |
|
/A(*:A)A+(*SKIP)(B|Z) | AC/xK |
5112 |
|
AAAC |
5113 |
|
|
5114 |
|
/--- This should fail, as a null name is the same as no name ---/ |
5115 |
|
|
5116 |
|
/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK |
5117 |
|
AAAC |
5118 |
|
|
5119 |
|
/--- A check on what happens after hitting a mark and them bumping along to |
5120 |
|
something that does not even start. Perl reports tags after the failures here, |
5121 |
|
though it does not when the individual letters are made into something |
5122 |
|
more complicated. ---/ |
5123 |
|
|
5124 |
|
/A(*:A)B|XX(*:B)Y/K |
5125 |
|
AABC |
5126 |
|
XXYZ |
5127 |
|
** Failers |
5128 |
|
XAQQ |
5129 |
|
XAQQXZZ |
5130 |
|
AXQQQ |
5131 |
|
AXXQQQ |
5132 |
|
|
5133 |
|
/^(A(*THEN:A)B|C(*THEN:B)D)/K |
5134 |
|
AB |
5135 |
|
CD |
5136 |
|
** Failers |
5137 |
|
AC |
5138 |
|
CB |
5139 |
|
|
5140 |
|
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K |
5141 |
|
AB |
5142 |
|
CD |
5143 |
|
** Failers |
5144 |
|
AC |
5145 |
|
CB |
5146 |
|
|
5147 |
|
/--- An empty name does not pass back an empty string. It is the same as if no |
5148 |
|
name were given. ---/ |
5149 |
|
|
5150 |
|
/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K |
5151 |
|
AB |
5152 |
|
CD |
5153 |
|
|
5154 |
|
/--- PRUNE goes to next bumpalong; COMMIT does not. ---/ |
5155 |
|
|
5156 |
|
/A(*PRUNE:A)B/K |
5157 |
|
ACAB |
5158 |
|
|
5159 |
|
/--- Mark names can be duplicated ---/ |
5160 |
|
|
5161 |
|
/A(*:A)B|X(*:A)Y/K |
5162 |
|
AABC |
5163 |
|
XXYZ |
5164 |
|
|
5165 |
|
/b(*:m)f|a(*:n)w/K |
5166 |
|
aw |
5167 |
|
** Failers |
5168 |
|
abc |
5169 |
|
|
5170 |
|
/b(*:m)f|aw/K |
5171 |
|
abaw |
5172 |
|
** Failers |
5173 |
|
abc |
5174 |
|
abax |
5175 |
|
|
5176 |
|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK |
5177 |
|
AAAC |
5178 |
|
|
5179 |
|
/a(*PRUNE:X)bc|qq/KY |
5180 |
|
** Failers |
5181 |
|
axy |
5182 |
|
|
5183 |
|
/a(*THEN:X)bc|qq/KY |
5184 |
|
** Failers |
5185 |
|
axy |
5186 |
|
|
5187 |
|
/(?=a(*MARK:A)b)..x/K |
5188 |
|
abxy |
5189 |
|
** Failers |
5190 |
|
abpq |
5191 |
|
|
5192 |
|
/(?=a(*MARK:A)b)..(*:Y)x/K |
5193 |
|
abxy |
5194 |
|
** Failers |
5195 |
|
abpq |
5196 |
|
|
5197 |
|
/(?=a(*PRUNE:A)b)..x/K |
5198 |
|
abxy |
5199 |
|
** Failers |
5200 |
|
abpq |
5201 |
|
|
5202 |
|
/(?=a(*PRUNE:A)b)..(*:Y)x/K |
5203 |
|
abxy |
5204 |
|
** Failers |
5205 |
|
abpq |
5206 |
|
|
5207 |
|
/(?=a(*THEN:A)b)..x/K |
5208 |
|
abxy |
5209 |
|
** Failers |
5210 |
|
abpq |
5211 |
|
|
5212 |
|
/(?=a(*THEN:A)b)..(*:Y)x/K |
5213 |
|
abxy |
5214 |
|
** Failers |
5215 |
|
abpq |
5216 |
|
|
5217 |
|
/(another)?(\1?)test/ |
5218 |
|
hello world test |
5219 |
|
|
5220 |
|
/(another)?(\1+)test/ |
5221 |
|
hello world test |
5222 |
|
|
5223 |
|
/(a(*COMMIT)b){0}a(?1)|aac/ |
5224 |
|
aac |
5225 |
|
|
5226 |
|
/((?:a?)*)*c/ |
5227 |
|
aac |
5228 |
|
|
5229 |
|
/((?>a?)*)*c/ |
5230 |
|
aac |
5231 |
|
|
5232 |
|
/(?>.*?a)(?<=ba)/ |
5233 |
|
aba |
5234 |
|
|
5235 |
|
/(?:.*?a)(?<=ba)/ |
5236 |
|
aba |
5237 |
|
|
5238 |
|
/.*?a(*PRUNE)b/ |
5239 |
|
aab |
5240 |
|
|
5241 |
|
/.*?a(*PRUNE)b/s |
5242 |
|
aab |
5243 |
|
|
5244 |
|
/^a(*PRUNE)b/s |
5245 |
|
aab |
5246 |
|
|
5247 |
|
/.*?a(*SKIP)b/ |
5248 |
|
aab |
5249 |
|
|
5250 |
|
/(?>.*?a)b/s |
5251 |
|
aab |
5252 |
|
|
5253 |
|
/(?>.*?a)b/ |
5254 |
|
aab |
5255 |
|
|
5256 |
|
/(?>^a)b/s |
5257 |
|
aab |
5258 |
|
|
5259 |
|
/(?>.*?)(?<=(abcd)|(wxyz))/ |
5260 |
|
alphabetabcd |
5261 |
|
endingwxyz |
5262 |
|
|
5263 |
|
/(?>.*)(?<=(abcd)|(wxyz))/ |
5264 |
|
alphabetabcd |
5265 |
|
endingwxyz |
5266 |
|
|
5267 |
|
"(?>.*)foo" |
5268 |
|
abcdfooxyz |
5269 |
|
|
5270 |
|
"(?>.*?)foo" |
5271 |
|
abcdfooxyz |
5272 |
|
|
5273 |
|
/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/ |
5274 |
|
ac |
5275 |
|
|
5276 |
|
/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/ |
5277 |
|
ac |
5278 |
|
|
5279 |
|
/(?<=(*SKIP)ac)a/ |
5280 |
|
aa |
5281 |
|
|
5282 |
|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK |
5283 |
|
AAAC |
5284 |
|
|
5285 |
|
/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K |
5286 |
|
acacd |
5287 |
|
|
5288 |
|
/A(*SKIP:m)x|A(*SKIP:n)x|AB/K |
5289 |
|
AB |
5290 |
|
|
5291 |
|
/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K |
5292 |
|
acacd |
5293 |
|
|
5294 |
|
/-- Tests that try to figure out how Perl works. My hypothesis is that the |
5295 |
|
first verb that is backtracked onto is the one that acts. This seems to be |
5296 |
|
the case almost all the time, but there is one exception that is perhaps a |
5297 |
|
bug. --/ |
5298 |
|
|
5299 |
|
/-- This matches "aaaac"; each PRUNE advances one character until the subject |
5300 |
|
no longer starts with 5 'a's. --/ |
5301 |
|
|
5302 |
|
/aaaaa(*PRUNE)b|a+c/ |
5303 |
|
aaaaaac |
5304 |
|
|
5305 |
|
/-- Putting SKIP in front of PRUNE makes no difference, as it is never |
5306 |
|
backtracked onto, whether or not it has a label. --/ |
5307 |
|
|
5308 |
|
/aaaaa(*SKIP)(*PRUNE)b|a+c/ |
5309 |
|
aaaaaac |
5310 |
|
|
5311 |
|
/aaaaa(*SKIP:N)(*PRUNE)b|a+c/ |
5312 |
|
aaaaaac |
5313 |
|
|
5314 |
|
/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/ |
5315 |
|
aaaaaac |
5316 |
|
|
5317 |
|
/-- Putting THEN in front makes no difference. */ |
5318 |
|
|
5319 |
|
/aaaaa(*THEN)(*PRUNE)b|a+c/ |
5320 |
|
aaaaaac |
5321 |
|
|
5322 |
|
/-- However, putting COMMIT in front of the prune changes it to "no match". I |
5323 |
|
think this is inconsistent and possibly a bug. For the moment, running this |
5324 |
|
test is moved out of the Perl-compatible file. --/ |
5325 |
|
|
5326 |
|
/aaaaa(*COMMIT)(*PRUNE)b|a+c/ |
5327 |
|
|
5328 |
|
|
5329 |
|
/---- OK, lets play the same game again using SKIP instead of PRUNE. ----/ |
5330 |
|
|
5331 |
|
/-- This matches "ac" because SKIP forces the next match to start on the |
5332 |
|
sixth "a". --/ |
5333 |
|
|
5334 |
|
/aaaaa(*SKIP)b|a+c/ |
5335 |
|
aaaaaac |
5336 |
|
|
5337 |
|
/-- Putting PRUNE in front makes no difference. --/ |
5338 |
|
|
5339 |
|
/aaaaa(*PRUNE)(*SKIP)b|a+c/ |
5340 |
|
aaaaaac |
5341 |
|
|
5342 |
|
/-- Putting THEN in front makes no difference. --/ |
5343 |
|
|
5344 |
|
/aaaaa(*THEN)(*SKIP)b|a+c/ |
5345 |
|
aaaaaac |
5346 |
|
|
5347 |
|
/-- In this case, neither does COMMIT. This still matches "ac". --/ |
5348 |
|
|
5349 |
|
/aaaaa(*COMMIT)(*SKIP)b|a+c/ |
5350 |
|
aaaaaac |
5351 |
|
|
5352 |
|
/-- This gives "no match", as expected. --/ |
5353 |
|
|
5354 |
|
/aaaaa(*COMMIT)b|a+c/ |
5355 |
|
aaaaaac |
5356 |
|
|
5357 |
|
|
5358 |
|
/------ Tests using THEN ------/ |
5359 |
|
|
5360 |
|
/-- This matches "aaaaaac", as expected. --/ |
5361 |
|
|
5362 |
|
/aaaaa(*THEN)b|a+c/ |
5363 |
|
aaaaaac |
5364 |
|
|
5365 |
|
/-- Putting SKIP in front makes no difference. --/ |
5366 |
|
|
5367 |
|
/aaaaa(*SKIP)(*THEN)b|a+c/ |
5368 |
|
aaaaaac |
5369 |
|
|
5370 |
|
/-- Putting PRUNE in front makes no difference. --/ |
5371 |
|
|
5372 |
|
/aaaaa(*PRUNE)(*THEN)b|a+c/ |
5373 |
|
aaaaaac |
5374 |
|
|
5375 |
|
/-- Putting COMMIT in front makes no difference. --/ |
5376 |
|
|
5377 |
|
/aaaaa(*COMMIT)(*THEN)b|a+c/ |
5378 |
|
aaaaaac |
5379 |
|
|
5380 |
|
/-- End of "priority" tests --/ |
5381 |
|
|
5382 |
|
/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/ |
5383 |
|
aaaaaa |
5384 |
|
|
5385 |
|
/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/ |
5386 |
|
aaaaaa |
5387 |
|
|
5388 |
|
/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/ |
5389 |
|
aaaaaa |
5390 |
|
|
5391 |
|
/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/ |
5392 |
|
aaaaaa |
5393 |
|
|
5394 |
|
/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/ |
5395 |
|
aaaac |
5396 |
|
|
5397 |
|
/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/ |
5398 |
|
aaaac |
5399 |
|
|
5400 |
|
/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/ |
5401 |
|
aaaac |
5402 |
|
|
5403 |
|
/aaa(*MARK:A)a(*SKIP:A)b|a+c/ |
5404 |
|
aaaac |
5405 |
|
|
5406 |
|
/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K |
5407 |
|
aaaaaac |
5408 |
|
|
5409 |
|
/.?(a|b(*THEN)c)/ |
5410 |
|
ba |
5411 |
|
|
5412 |
|
/(a(*COMMIT)b)c|abd/ |
5413 |
|
abc |
5414 |
|
abd |
5415 |
|
|
5416 |
|
/(?=a(*COMMIT)b)abc|abd/ |
5417 |
|
abc |
5418 |
|
abd |
5419 |
|
|
5420 |
|
/(?>a(*COMMIT)b)c|abd/ |
5421 |
|
abc |
5422 |
|
abd |
5423 |
|
|
5424 |
|
/a(?=b(*COMMIT)c)[^d]|abd/ |
5425 |
|
abd |
5426 |
|
abc |
5427 |
|
|
5428 |
|
/a(?=bc).|abd/ |
5429 |
|
abd |
5430 |
|
abc |
5431 |
|
|
5432 |
|
/a(?>b(*COMMIT)c)d|abd/ |
5433 |
|
abceabd |
5434 |
|
|
5435 |
|
/a(?>bc)d|abd/ |
5436 |
|
abceabd |
5437 |
|
|
5438 |
|
/(?>a(*COMMIT)b)c|abd/ |
5439 |
|
abd |
5440 |
|
|
5441 |
|
/(?>a(*COMMIT)c)d|abd/ |
5442 |
|
abd |
5443 |
|
|
5444 |
|
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/ |
5445 |
|
ac |
5446 |
|
|
5447 |
|
/-- These tests were formerly in test 2, but changes in PCRE and Perl have |
5448 |
|
made them compatible. --/ |
5449 |
|
|
5450 |
|
/^(a)?(?(1)a|b)+$/ |
5451 |
|
*** Failers |
5452 |
|
a |
5453 |
|
|
5454 |
|
/(?=a\Kb)ab/ |
5455 |
|
ab |
5456 |
|
|
5457 |
|
/(?!a\Kb)ac/ |
5458 |
|
ac |
5459 |
|
|
5460 |
|
/^abc(?<=b\Kc)d/ |
5461 |
|
abcd |
5462 |
|
|
5463 |
|
/^abc(?<!b\Kq)d/ |
5464 |
|
abcd |
5465 |
|
|
5466 |
|
|
5467 |
|
/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK |
5468 |
|
AAAC |
5469 |
|
|
5470 |
|
/^((abc|abcx)(*THEN)y|abcd)/ |
5471 |
|
abcd |
5472 |
|
*** Failers |
5473 |
|
abcxy |
5474 |
|
|
5475 |
|
/^((yes|no)(*THEN)(*F))?/ |
5476 |
|
yes |
5477 |
|
|
5478 |
|
/(A (.*) C? (*THEN) | A D) (*FAIL)/x |
5479 |
|
AbcdCBefgBhiBqz |
5480 |
|
|
5481 |
|
/(A (.*) C? (*THEN) | A D) z/x |
5482 |
|
AbcdCBefgBhiBqz |
5483 |
|
|
5484 |
|
/(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x |
5485 |
|
AbcdCBefgBhiBqz |
5486 |
|
|
5487 |
|
/(A (.*) C? (*THEN) | A D) \s* z/x |
5488 |
|
AbcdCBefgBhiBqz |
5489 |
|
|
5490 |
|
/(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x |
5491 |
|
AbcdCBefgBhiBqz |
5492 |
|
|
5493 |
|
/(A (.*) (?:C|) (*THEN) | A D) z/x |
5494 |
|
AbcdCBefgBhiBqz |
5495 |
|
|
5496 |
|
/(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x |
5497 |
|
AbcdCBefgBhiBqz |
5498 |
|
|
5499 |
|
/(A (.*) C{0,6} (*THEN) | A D) z/x |
5500 |
|
AbcdCBefgBhiBqz |
5501 |
|
|
5502 |
|
/(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x |
5503 |
|
AbcdCEBefgBhiBqz |
5504 |
|
|
5505 |
|
/(A (.*) (CE){0,6} (*THEN) | A D) z/x |
5506 |
|
AbcdCEBefgBhiBqz |
5507 |
|
|
5508 |
|
/(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x |
5509 |
|
AbcdCBefgBhiBqz |
5510 |
|
|
5511 |
|
/(A (.*) (CE*){0,6} (*THEN) | A D) z/x |
5512 |
|
AbcdCBefgBhiBqz |
5513 |
|
|
5514 |
|
/(?=a(*COMMIT)b|ac)ac|ac/ |
5515 |
|
ac |
5516 |
|
|
5517 |
|
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x |
5518 |
|
ac |
5519 |
|
|
5520 |
|
/--------/ |
5521 |
|
|
5522 |
|
/(?(?!b(*THEN)a)bn|bnn)/ |
5523 |
|
bnn |
5524 |
|
|
5525 |
|
/(?!b(*SKIP)a)bn|bnn/ |
5526 |
|
bnn |
5527 |
|
|
5528 |
|
/(?(?!b(*SKIP)a)bn|bnn)/ |
5529 |
|
bnn |
5530 |
|
|
5531 |
|
/(?!b(*PRUNE)a)bn|bnn/ |
5532 |
|
bnn |
5533 |
|
|
5534 |
|
/(?(?!b(*PRUNE)a)bn|bnn)/ |
5535 |
|
bnn |
5536 |
|
|
5537 |
|
/(?!b(*COMMIT)a)bn|bnn/ |
5538 |
|
bnn |
5539 |
|
|
5540 |
|
/(?(?!b(*COMMIT)a)bn|bnn)/ |
5541 |
|
bnn |
5542 |
|
|
5543 |
|
/(?=b(*SKIP)a)bn|bnn/ |
5544 |
|
bnn |
5545 |
|
|
5546 |
|
/(?=b(*THEN)a)bn|bnn/ |
5547 |
|
bnn |
5548 |
|
|
5549 |
|
/^(?!a(*SKIP)b)/ |
5550 |
|
ac |
5551 |
|
|
5552 |
|
/^(?!a(*SKIP)b)../ |
5553 |
|
acd |
5554 |
|
|
5555 |
|
/(?!a(*SKIP)b)../ |
5556 |
|
acd |
5557 |
|
|
5558 |
|
/^(?(?!a(*SKIP)b))/ |
5559 |
|
ac |
5560 |
|
|
5561 |
|
/^(?!a(*PRUNE)b)../ |
5562 |
|
acd |
5563 |
|
|
5564 |
|
/(?!a(*PRUNE)b)../ |
5565 |
|
acd |
5566 |
|
|
5567 |
|
/(?!a(*COMMIT)b)ac|cd/ |
5568 |
|
ac |
5569 |
|
|
5570 |
|
/\A.*?(?:a|bc)/ |
5571 |
|
ba |
5572 |
|
|
5573 |
|
/^(A(*THEN)B|C(*THEN)D)/ |
5574 |
|
CD |
5575 |
|
|
5576 |
|
/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K |
5577 |
|
abc |
5578 |
|
|
5579 |
|
/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K |
5580 |
|
abc |
5581 |
|
|
5582 |
|
/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K |
5583 |
|
abc |
5584 |
|
|
5585 |
|
/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K |
5586 |
|
abc |
5587 |
|
|
5588 |
|
/^\d*\w{4}/ |
5589 |
|
1234 |
5590 |
|
123 |
5591 |
|
|
5592 |
|
/^[^b]*\w{4}/ |
5593 |
|
aaaa |
5594 |
|
aaa |
5595 |
|
|
5596 |
|
/^[^b]*\w{4}/i |
5597 |
|
aaaa |
5598 |
|
aaa |
5599 |
|
|
5600 |
|
/^a*\w{4}/ |
5601 |
|
aaaa |
5602 |
|
aaa |
5603 |
|
|
5604 |
|
/^a*\w{4}/i |
5605 |
|
aaaa |
5606 |
|
aaa |
5607 |
|
|
5608 |
|
/(?(?=ab)ab)/+ |
5609 |
|
ca |
5610 |
|
cd |
5611 |
|
|
5612 |
/-- End of testinput1 --/ |
/-- End of testinput1 --/ |