From e2076960d402226f9d4c82d838aa85d0e7a22ccb Mon Sep 17 00:00:00 2001 From: "Philip.Hazel" Date: Sun, 3 Aug 2014 18:15:32 +0000 Subject: [PATCH] Changes to pcre2test single-letter modifiers. --- doc/pcre2test.1 | 31 +-- src/pcre2test.c | 22 +- testdata/testinput2 | 528 ++++++++++++++++++++-------------------- testdata/testinput5 | 556 +++++++++++++++++++++---------------------- testdata/testinput6 | 250 +++++++++---------- testdata/testinput7 | 96 ++++---- testdata/testoutput2 | 528 ++++++++++++++++++++-------------------- testdata/testoutput5 | 556 +++++++++++++++++++++---------------------- testdata/testoutput6 | 250 +++++++++---------- testdata/testoutput7 | 96 ++++---- 10 files changed, 1454 insertions(+), 1459 deletions(-) diff --git a/doc/pcre2test.1 b/doc/pcre2test.1 index 11a287a..dd7190f 100644 --- a/doc/pcre2test.1 +++ b/doc/pcre2test.1 @@ -1,4 +1,4 @@ -.TH PCRE2TEST 1 "22 July 2014" "PCRE 10.00" +.TH PCRE2TEST 1 "03 August 2014" "PCRE 10.00" .SH NAME pcre2test - a program for testing Perl-compatible regular expressions. .SH SYNOPSIS @@ -270,12 +270,12 @@ them must be followed by an equals sign and a value, for example, "offset=12". Modifiers that do not take values may be preceded by a minus sign to turn off a previous default setting. .P -A few of the more common modifiers can also be specified as single or double -letters, for example "i" for "caseless". In documentation, following the Perl -convention, these are written with a slash ("the /i modifier") for clarity. -Abbreviated modifiers must all be concatenated in the first item of a modifier -list. If the first item is not recognized as a long modifier name, it is -interpreted as a sequence of these abbreviations. For example: +A few of the more common modifiers can also be specified as single letters, for +example "i" for "caseless". In documentation, following the Perl convention, +these are written with a slash ("the /i modifier") for clarity. Abbreviated +modifiers must all be concatenated in the first item of a modifier list. If the +first item is not recognized as a long modifier name, it is interpreted as a +sequence of these abbreviations. For example: .sp /abc/ig,newline=cr,jit=3 .sp @@ -433,9 +433,9 @@ about the pattern: .sp bsr=[anycrlf|unicode] specify \eR handling /B bincode show binary code without lengths - /D debug same as /DBB + /D debug same as info,fullbincode flipbytes flip endianness - /BB fullbincode show binary code with lengths + fullbincode show binary code with lengths /I info show info about compiled pattern hex pattern is coded in hexadecimal jit[=] use JIT @@ -652,7 +652,6 @@ not affect the compilation process. aftertext show text after match allaftertext show text after captures allcaptures show all captures - /gg altglobal alternative global matching /g global global matching jitverify verify JIT usage mark show mark values @@ -687,15 +686,19 @@ for a description of their effects. notempty set PCRE2_NOTEMPTY notempty_atstart set PCRE2_NOTEMPTY_ATSTART noteol set PCRE2_NOTEOL - /PP partial_hard set PCRE2_PARTIAL_HARD - /P partial_soft set PCRE2_PARTIAL_SOFT + partial_hard (or ph) set PCRE2_PARTIAL_HARD + partial_soft (or ps) set PCRE2_PARTIAL_SOFT .sp +The partial matching modifiers are provided with abbreviations because they +appear frequently in tests. +.P If the \fB/posix\fP modifier was present on the pattern, causing the POSIX wrapper API to be used, the only option-setting modifiers that have any effect are \fBnotbol\fP, \fBnotempty\fP, and \fBnoteol\fP, causing REG_NOTBOL, REG_NOTEMPTY, and REG_NOTEOL, respectively, to be passed to \fBregexec()\fP. Any other modifiers cause an error. . +. .SS "Setting match controls" .rs .sp @@ -707,7 +710,7 @@ pattern. aftertext show text after match allaftertext show text after captures allcaptures show all captures - /gg altglobal alternative global matching + altglobal alternative global matching bsr=[anycrlf|unicode] specify \eR handling callout_capture show captures at callout time callout_data= set a value to pass via callouts @@ -1229,6 +1232,6 @@ Cambridge CB2 3QH, England. .rs .sp .nf -Last updated: 22 July 2014 +Last updated: 03 August 2014 Copyright (c) 1997-2014 University of Cambridge. .fi diff --git a/src/pcre2test.c b/src/pcre2test.c index e0e89a6..f0a09cf 100644 --- a/src/pcre2test.c +++ b/src/pcre2test.c @@ -470,7 +470,9 @@ static modstruct modlist[] = { { "parens_nest_limit", MOD_CTC, MOD_INT, 0, CO(parens_nest_limit) }, { "partial_hard", MOD_DAT, MOD_OPT, PCRE2_PARTIAL_HARD, DO(options) }, { "partial_soft", MOD_DAT, MOD_OPT, PCRE2_PARTIAL_SOFT, DO(options) }, + { "ph", MOD_DAT, MOD_OPT, PCRE2_PARTIAL_HARD, DO(options) }, { "posix", MOD_PAT, MOD_CTL, CTL_POSIX, PO(control) }, + { "ps", MOD_DAT, MOD_OPT, PCRE2_PARTIAL_SOFT, DO(options) }, { "recursion_limit", MOD_CTM, MOD_INT, 0, MO(recursion_limit) }, { "save", MOD_PAT, MOD_STR, 0, PO(save) }, { "stackguard", MOD_PAT, MOD_INT, 0, PO(stackguard_test) }, @@ -497,11 +499,11 @@ static modstruct modlist[] = { #define POSIX_SUPPORTED_MATCH_CONTROLS ( 0 ) -/* Table of single-character and doubled-character abbreviated modifiers. The -index field is initialized to -1, but the first time the modifier is -encountered, it is filled in with the index of the full entry in modlist, to -save repeated searching when processing multiple test items. This short list is -searched serially, so its order does not matter. */ +/* Table of single-character abbreviated modifiers. The index field is +initialized to -1, but the first time the modifier is encountered, it is filled +in with the index of the full entry in modlist, to save repeated searching when +processing multiple test items. This short list is searched serially, so its +order does not matter. */ typedef struct c1modstruct { const char *fullname; @@ -511,13 +513,9 @@ typedef struct c1modstruct { static c1modstruct c1modlist[] = { { "bincode", 'B', -1 }, - { "fullbincode", ('B'<<8)|'B', -1 }, { "debug", 'D', -1 }, { "info", 'I', -1 }, - { "partial_soft", 'P', -1 }, - { "partial_hard", ('P'<<8)|'P', -1 }, { "global", 'g', -1 }, - { "altglobal", ('g'<<8)|'g', -1 }, { "caseless", 'i', -1 }, { "multiline", 'm', -1 }, { "dotall", 's', -1 }, @@ -2577,12 +2575,6 @@ for (;;) for (cc = *p; cc != ',' && cc != '\n' && cc != 0; cc = *(++p)) { - if (p[1] == cc) /* Handle doubled characters */ - { - cc = (cc << 8) | cc; - p++; - } - for (i = 0; i < C1MODLISTCOUNT; i++) if (cc == c1modlist[i].onechar) break; diff --git a/testdata/testinput2 b/testdata/testinput2 index b87cff6..1c0bf90 100644 --- a/testdata/testinput2 +++ b/testdata/testinput2 @@ -1316,35 +1316,35 @@ Xbcd12345 /abcde/I - ab\=P - abc\=P - abcd\=P - abcde\=P - the quick brown abc\=P - ** Failers\=P - the quick brown abxyz fox\=P + ab\=ps + abc\=ps + abcd\=ps + abcde\=ps + the quick brown abc\=ps + ** Failers\=ps + the quick brown abxyz fox\=ps "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I - 13/05/04\=P - 13/5/2004\=P - 02/05/09\=P - 1\=P - 1/2\=P - 1/2/0\=P - 1/2/04\=P - 0\=P - 02/\=P - 02/0\=P - 02/1\=P - ** Failers\=P - \=P - 123\=P - 33/4/04\=P - 3/13/04\=P - 0/1/2003\=P - 0/\=P - 02/0/\=P - 02/13\=P + 13/05/04\=ps + 13/5/2004\=ps + 02/05/09\=ps + 1\=ps + 1/2\=ps + 1/2/0\=ps + 1/2/04\=ps + 0\=ps + 02/\=ps + 02/0\=ps + 02/1\=ps + ** Failers\=ps + \=ps + 123\=ps + 33/4/04\=ps + 3/13/04\=ps + 0/1/2003\=ps + 0/\=ps + 02/0/\=ps + 02/13\=ps /0{0,2}ABC/I @@ -1355,24 +1355,24 @@ /[abc]+DE/I /[abc]?123/I - 123\=P - a\=P - b\=P - c\=P - c12\=P - c123\=P + 123\=ps + a\=ps + b\=ps + c\=ps + c12\=ps + c123\=ps /^(?:\d){3,5}X/I - 1\=P - 123\=P + 1\=ps + 123\=ps 123X - 1234\=P + 1234\=ps 1234X - 12345\=P + 12345\=ps 12345X *** Failers 1X - 123456\=P + 123456\=ps "<(\w+)/?>(.)*"Igms \n\n\nPartner der LCO\nde\nPartner der LINEAS Consulting\nGmbH\nLINEAS Consulting GmbH Hamburg\nPartnerfirmen\n30 days\nindex,follow\n\nja\n3\nPartner\n\n\nLCO\nLINEAS Consulting\n15.10.2003\n\n\n\n\nDie Partnerfirmen der LINEAS Consulting\nGmbH\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\=jitstack=1024 @@ -2505,182 +2505,182 @@ a random value. /Ix XYabcdY /Xa{2,4}b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /Xa{2,4}?b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /Xa{2,4}+b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\d{2,4}b/ - X\=P - X3\=P - X33\=P - X333\=P - X3333\=P + X\=ps + X3\=ps + X33\=ps + X333\=ps + X3333\=ps /X\d{2,4}?b/ - X\=P - X3\=P - X33\=P - X333\=P - X3333\=P + X\=ps + X3\=ps + X33\=ps + X333\=ps + X3333\=ps /X\d{2,4}+b/ - X\=P - X3\=P - X33\=P - X333\=P - X3333\=P + X\=ps + X3\=ps + X33\=ps + X333\=ps + X3333\=ps /X\D{2,4}b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\D{2,4}?b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\D{2,4}+b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[abc]{2,4}b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[abc]{2,4}?b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[abc]{2,4}+b/ - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[^a]{2,4}b/ - X\=P - Xz\=P - Xzz\=P - Xzzz\=P - Xzzzz\=P + X\=ps + Xz\=ps + Xzz\=ps + Xzzz\=ps + Xzzzz\=ps /X[^a]{2,4}?b/ - X\=P - Xz\=P - Xzz\=P - Xzzz\=P - Xzzzz\=P + X\=ps + Xz\=ps + Xzz\=ps + Xzzz\=ps + Xzzzz\=ps /X[^a]{2,4}+b/ - X\=P - Xz\=P - Xzz\=P - Xzzz\=P - Xzzzz\=P + X\=ps + Xz\=ps + Xzz\=ps + Xzzz\=ps + Xzzzz\=ps /(Y)X\1{2,4}b/ - YX\=P - YXY\=P - YXYY\=P - YXYYY\=P - YXYYYY\=P + YX\=ps + YXY\=ps + YXYY\=ps + YXYYY\=ps + YXYYYY\=ps /(Y)X\1{2,4}?b/ - YX\=P - YXY\=P - YXYY\=P - YXYYY\=P - YXYYYY\=P + YX\=ps + YXY\=ps + YXYY\=ps + YXYYY\=ps + YXYYYY\=ps /(Y)X\1{2,4}+b/ - YX\=P - YXY\=P - YXYY\=P - YXYYY\=P - YXYYYY\=P + YX\=ps + YXY\=ps + YXYY\=ps + YXYYY\=ps + YXYYYY\=ps /\++\KZ|\d+X|9+Y/ - ++++123999\=P - ++++123999Y\=P - ++++Z1234\=P + ++++123999\=ps + ++++123999Y\=ps + ++++Z1234\=ps /Z(*F)/ - Z\=P - ZA\=P + Z\=ps + ZA\=ps /Z(?!)/ - Z\=P - ZA\=P + Z\=ps + ZA\=ps /dog(sbody)?/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /dog(sbody)??/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /dog|dogsbody/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /dogsbody|dog/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /\bthe cat\b/ - the cat\=P - the cat\=PP + the cat\=ps + the cat\=ph /abc/ - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\K123/ xyzabc123pqr - xyzabc12\=P - xyzabc12\=PP + xyzabc12\=ps + xyzabc12\=ph /(?<=abc)123/ xyzabc123pqr - xyzabc12\=P - xyzabc12\=PP + xyzabc12\=ps + xyzabc12\=ph /\babc\b/ +++abc+++ - +++ab\=P - +++ab\=PP + +++ab\=ps + +++ab\=ph /(?&word)(?&element)(?(DEFINE)(?<[^m][^>]>[^<])(?\w*+))/B @@ -2864,26 +2864,26 @@ a random value. /Ix abcdde /abcd*/ - xxxxabcd\=P - xxxxabcd\=PP + xxxxabcd\=ps + xxxxabcd\=ph /abcd*/i - xxxxabcd\=P - xxxxabcd\=PP - XXXXABCD\=P - XXXXABCD\=PP + xxxxabcd\=ps + xxxxabcd\=ph + XXXXABCD\=ps + XXXXABCD\=ph /abc\d*/ - xxxxabc1\=P - xxxxabc1\=PP + xxxxabc1\=ps + xxxxabc1\=ph /(a)bc\1*/ - xxxxabca\=P - xxxxabca\=PP + xxxxabca\=ps + xxxxabca\=ph /abc[de]*/ - xxxxabcde\=P - xxxxabcde\=PP + xxxxabcde\=ps + xxxxabcde\=ph # This is not in the Perl-compatible test because Perl seems currently to be # broken and not behaving as specified in that it *does* bumpalong after @@ -3046,40 +3046,40 @@ a random value. /Ix X\x0d\x0a /(?<=abc)def/ - abc\=PP + abc\=ph /abc$/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc$/m abc abc\n - abc\=PP - abc\n\=PP - abc\=P - abc\n\=P + abc\=ph + abc\n\=ph + abc\=ps + abc\n\=ps /abc\z/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\Z/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\b/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\B/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /.+/ abc\=offset=0 @@ -3337,7 +3337,7 @@ a random value. /Ix aeqwerty /.(*F)/ - abc\=PP + abc\=ph /\btype\b\W*?\btext\b\W*?\bjavascript\b/I @@ -3469,7 +3469,7 @@ a random value. /Ix # After a partial match, the behaviour is as for a failure. /^a(*:X)bcde/mark - abc\=P + abc\=ps # These are here because Perl doesn't return a mark, except for the first. @@ -3492,58 +3492,58 @@ a random value. /Ix ab /(..)\1/ - ab\=P - aba\=P - abab\=P + ab\=ps + aba\=ps + abab\=ps /(..)\1/i - ab\=P - abA\=P - aBAb\=P + ab\=ps + abA\=ps + aBAb\=ps /(..)\1{2,}/ - ab\=P - aba\=P - abab\=P - ababa\=P - ababab\=P - ababab\=PP - abababa\=P - abababa\=PP + ab\=ps + aba\=ps + abab\=ps + ababa\=ps + ababab\=ps + ababab\=ph + abababa\=ps + abababa\=ph /(..)\1{2,}/i - ab\=P - aBa\=P - aBAb\=P - AbaBA\=P - abABAb\=P - aBAbaB\=PP - abABabA\=P - abaBABa\=PP + ab\=ps + aBa\=ps + aBAb\=ps + AbaBA\=ps + abABAb\=ps + aBAbaB\=ph + abABabA\=ps + abaBABa\=ph /(..)\1{2,}?x/i - ab\=P - abA\=P - aBAb\=P - abaBA\=P - abAbaB\=P - abaBabA\=P - abAbABaBx\=P + ab\=ps + abA\=ps + aBAb\=ps + abaBA\=ps + abAbaB\=ps + abaBabA\=ps + abAbABaBx\=ps /^(..)\1/ - aba\=P + aba\=ps /^(..)\1{2,3}x/ - aba\=P - ababa\=P - ababa\=PP + aba\=ps + ababa\=ps + ababa\=ph abababx ababababx /^(..)\1{2,3}?x/ - aba\=P - ababa\=P - ababa\=PP + aba\=ps + ababa\=ps + ababa\=ph abababx ababababx @@ -3551,77 +3551,77 @@ a random value. /Ix abababab /^\R/ - \r\=P - \r\=PP + \r\=ps + \r\=ph /^\R{2,3}x/ - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph \r\rx \r\r\rx /^\R{2,3}?x/ - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph \r\rx \r\r\rx /^\R?x/ - \r\=P - \r\=PP + \r\=ps + \r\=ph x \rx /^\R+x/ - \r\=P - \r\=PP - \r\n\=P - \r\n\=PP + \r\=ps + \r\=ph + \r\n\=ps + \r\n\=ph \rx /^a$/newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /^a$/m,newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /^(a$|a\r)/newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /^(a$|a\r)/m,newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /./newline=crlf - \r\=P - \r\=PP + \r\=ps + \r\=ph /.{2,3}/newline=crlf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph /.{2,3}?/newline=crlf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph "AB(C(D))(E(F))?(?(?=\2)(?=\4))" ABCDGHI\=ovector=01 @@ -3685,12 +3685,12 @@ a random value. /Ix ab\=ovector=1 /(?<=123)(*MARK:xx)abc/mark - xxxx123a\=PP - xxxx123a\=P + xxxx123a\=ph + xxxx123a\=ps /123\Kabc/ - xxxx123a\=PP - xxxx123a\=P + xxxx123a\=ph + xxxx123a\=ps /^(?(?=a)aa|bb)/auto_callout bb diff --git a/testdata/testinput5 b/testdata/testinput5 index 4955bcc..d34b019 100644 --- a/testdata/testinput5 +++ b/testdata/testinput5 @@ -293,285 +293,285 @@ A\x{1ec5}ABCXYZ /Xa{2,4}b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /Xa{2,4}?b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /Xa{2,4}+b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\x{123}{2,4}b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X\x{123}{2,4}?b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X\x{123}{2,4}+b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X\x{123}{2,4}b/utf - Xx\=P - X\x{123}x\=P - X\x{123}\x{123}x\=P - X\x{123}\x{123}\x{123}x\=P - X\x{123}\x{123}\x{123}\x{123}x\=P + Xx\=ps + X\x{123}x\=ps + X\x{123}\x{123}x\=ps + X\x{123}\x{123}\x{123}x\=ps + X\x{123}\x{123}\x{123}\x{123}x\=ps /X\x{123}{2,4}?b/utf - Xx\=P - X\x{123}x\=P - X\x{123}\x{123}x\=P - X\x{123}\x{123}\x{123}x\=P - X\x{123}\x{123}\x{123}\x{123}x\=P + Xx\=ps + X\x{123}x\=ps + X\x{123}\x{123}x\=ps + X\x{123}\x{123}\x{123}x\=ps + X\x{123}\x{123}\x{123}\x{123}x\=ps /X\x{123}{2,4}+b/utf - Xx\=P - X\x{123}x\=P - X\x{123}\x{123}x\=P - X\x{123}\x{123}\x{123}x\=P - X\x{123}\x{123}\x{123}\x{123}x\=P + Xx\=ps + X\x{123}x\=ps + X\x{123}\x{123}x\=ps + X\x{123}\x{123}\x{123}x\=ps + X\x{123}\x{123}\x{123}\x{123}x\=ps /X\d{2,4}b/utf - X\=P - X3\=P - X33\=P - X333\=P - X3333\=P + X\=ps + X3\=ps + X33\=ps + X333\=ps + X3333\=ps /X\d{2,4}?b/utf - X\=P - X3\=P - X33\=P - X333\=P - X3333\=P + X\=ps + X3\=ps + X33\=ps + X333\=ps + X3333\=ps /X\d{2,4}+b/utf - X\=P - X3\=P - X33\=P - X333\=P - X3333\=P + X\=ps + X3\=ps + X33\=ps + X333\=ps + X3333\=ps /X\D{2,4}b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\D{2,4}?b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\D{2,4}+b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X\D{2,4}b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X\D{2,4}?b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X\D{2,4}+b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X[abc]{2,4}b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[abc]{2,4}?b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[abc]{2,4}+b/utf - X\=P - Xa\=P - Xaa\=P - Xaaa\=P - Xaaaa\=P + X\=ps + Xa\=ps + Xaa\=ps + Xaaa\=ps + Xaaaa\=ps /X[abc\x{123}]{2,4}b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X[abc\x{123}]{2,4}?b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X[abc\x{123}]{2,4}+b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X[^a]{2,4}b/utf - X\=P - Xz\=P - Xzz\=P - Xzzz\=P - Xzzzz\=P + X\=ps + Xz\=ps + Xzz\=ps + Xzzz\=ps + Xzzzz\=ps /X[^a]{2,4}?b/utf - X\=P - Xz\=P - Xzz\=P - Xzzz\=P - Xzzzz\=P + X\=ps + Xz\=ps + Xzz\=ps + Xzzz\=ps + Xzzzz\=ps /X[^a]{2,4}+b/utf - X\=P - Xz\=P - Xzz\=P - Xzzz\=P - Xzzzz\=P + X\=ps + Xz\=ps + Xzz\=ps + Xzzz\=ps + Xzzzz\=ps /X[^a]{2,4}b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X[^a]{2,4}?b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /X[^a]{2,4}+b/utf - X\=P - X\x{123}\=P - X\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\=P - X\x{123}\x{123}\x{123}\x{123}\=P + X\=ps + X\x{123}\=ps + X\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\=ps + X\x{123}\x{123}\x{123}\x{123}\=ps /(Y)X\1{2,4}b/utf - YX\=P - YXY\=P - YXYY\=P - YXYYY\=P - YXYYYY\=P + YX\=ps + YXY\=ps + YXYY\=ps + YXYYY\=ps + YXYYYY\=ps /(Y)X\1{2,4}?b/utf - YX\=P - YXY\=P - YXYY\=P - YXYYY\=P - YXYYYY\=P + YX\=ps + YXY\=ps + YXYY\=ps + YXYYY\=ps + YXYYYY\=ps /(Y)X\1{2,4}+b/utf - YX\=P - YXY\=P - YXYY\=P - YXYYY\=P - YXYYYY\=P + YX\=ps + YXY\=ps + YXYY\=ps + YXYYY\=ps + YXYYYY\=ps /(\x{123})X\1{2,4}b/utf - \x{123}X\=P - \x{123}X\x{123}\=P - \x{123}X\x{123}\x{123}\=P - \x{123}X\x{123}\x{123}\x{123}\=P - \x{123}X\x{123}\x{123}\x{123}\x{123}\=P + \x{123}X\=ps + \x{123}X\x{123}\=ps + \x{123}X\x{123}\x{123}\=ps + \x{123}X\x{123}\x{123}\x{123}\=ps + \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps /(\x{123})X\1{2,4}?b/utf - \x{123}X\=P - \x{123}X\x{123}\=P - \x{123}X\x{123}\x{123}\=P - \x{123}X\x{123}\x{123}\x{123}\=P - \x{123}X\x{123}\x{123}\x{123}\x{123}\=P + \x{123}X\=ps + \x{123}X\x{123}\=ps + \x{123}X\x{123}\x{123}\=ps + \x{123}X\x{123}\x{123}\x{123}\=ps + \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps /(\x{123})X\1{2,4}+b/utf - \x{123}X\=P - \x{123}X\x{123}\=P - \x{123}X\x{123}\x{123}\=P - \x{123}X\x{123}\x{123}\x{123}\=P - \x{123}X\x{123}\x{123}\x{123}\x{123}\=P + \x{123}X\=ps + \x{123}X\x{123}\=ps + \x{123}X\x{123}\x{123}\=ps + \x{123}X\x{123}\x{123}\x{123}\=ps + \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps /\bthe cat\b/utf - the cat\=P - the cat\=PP + the cat\=ps + the cat\=ph /abcd*/utf - xxxxabcd\=P - xxxxabcd\=PP + xxxxabcd\=ps + xxxxabcd\=ph /abcd*/i,utf - xxxxabcd\=P - xxxxabcd\=PP - XXXXABCD\=P - XXXXABCD\=PP + xxxxabcd\=ps + xxxxabcd\=ph + XXXXABCD\=ps + XXXXABCD\=ph /abc\d*/utf - xxxxabc1\=P - xxxxabc1\=PP + xxxxabc1\=ps + xxxxabc1\=ph /(a)bc\1*/utf - xxxxabca\=P - xxxxabca\=PP + xxxxabca\=ps + xxxxabca\=ph /abc[de]*/utf - xxxxabcde\=P - xxxxabcde\=PP + xxxxabcde\=ps + xxxxabcde\=ph /X\W{3}X/utf - X\=P + X\=ps /\sxxx\s/utf,tables=1 AB\x{85}xxx\x{a0}XYZ @@ -616,16 +616,16 @@ /[^\x{1234}]{2}/Ii,utf /f.*/ - for\=PP + for\=ph /f.*/s - for\=PP + for\=ph /f.*/utf - for\=PP + for\=ph /f.*/s,utf - for\=PP + for\=ph /\x{d7ff}\x{e000}/utf @@ -674,63 +674,63 @@ \x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d /(..)\1/utf - ab\=P - aba\=P - abab\=P + ab\=ps + aba\=ps + abab\=ps /(..)\1/i,utf - ab\=P - abA\=P - aBAb\=P + ab\=ps + abA\=ps + aBAb\=ps /(..)\1{2,}/utf - ab\=P - aba\=P - abab\=P - ababa\=P - ababab\=P - ababab\=PP - abababa\=P - abababa\=PP + ab\=ps + aba\=ps + abab\=ps + ababa\=ps + ababab\=ps + ababab\=ph + abababa\=ps + abababa\=ph /(..)\1{2,}/i,utf - ab\=P - aBa\=P - aBAb\=P - AbaBA\=P - abABAb\=P - aBAbaB\=PP - abABabA\=P - abaBABa\=PP + ab\=ps + aBa\=ps + aBAb\=ps + AbaBA\=ps + abABAb\=ps + aBAbaB\=ph + abABabA\=ps + abaBABa\=ph /(..)\1{2,}?x/i,utf - ab\=P - abA\=P - aBAb\=P - abaBA\=P - abAbaB\=P - abaBabA\=P - abAbABaBx\=P + ab\=ps + abA\=ps + aBAb\=ps + abaBA\=ps + abAbaB\=ps + abaBabA\=ps + abAbABaBx\=ps /./utf,newline=crlf - \r\=P - \r\=PP + \r\=ps + \r\=ph /.{2,3}/utf,newline=crlf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph /.{2,3}?/utf,newline=crlf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf @@ -1305,28 +1305,28 @@ /(?<=ab\Cde)X/utf /\X/ - a\=P - a\=PP + a\=ps + a\=ph /\Xa/ - aa\=P - aa\=PP + aa\=ps + aa\=ph /\X{2}/ - aa\=P - aa\=PP + aa\=ps + aa\=ph /\X+a/ - a\=P - aa\=P - aa\=PP + a\=ps + aa\=ps + aa\=ph /\X+?a/ - a\=P - ab\=P - aa\=P - aa\=PP - aba\=P + a\=ps + ab\=ps + aa\=ps + aa\=ph + aba\=ps # These Unicode 6.1.0 scripts are not known to Perl. @@ -1337,36 +1337,36 @@ \x{11680}\x{116c0} /^\X/utf - A\=P - A\=PP - A\x{300}\x{301}\=P - A\x{300}\x{301}\=PP - A\x{301}\=P - A\x{301}\=PP + A\=ps + A\=ph + A\x{300}\x{301}\=ps + A\x{300}\x{301}\=ph + A\x{301}\=ps + A\x{301}\=ph /^\X{2,3}/utf - A\=P - A\=PP - AA\=P - AA\=PP - A\x{300}\x{301}\=P - A\x{300}\x{301}\=PP - A\x{300}\x{301}A\x{300}\x{301}\=P - A\x{300}\x{301}A\x{300}\x{301}\=PP + A\=ps + A\=ph + AA\=ps + AA\=ph + A\x{300}\x{301}\=ps + A\x{300}\x{301}\=ph + A\x{300}\x{301}A\x{300}\x{301}\=ps + A\x{300}\x{301}A\x{300}\x{301}\=ph /^\X{2}/utf - AA\=P - AA\=PP - A\x{300}\x{301}A\x{300}\x{301}\=P - A\x{300}\x{301}A\x{300}\x{301}\=PP + AA\=ps + AA\=ph + A\x{300}\x{301}A\x{300}\x{301}\=ps + A\x{300}\x{301}A\x{300}\x{301}\=ph /^\X+/utf - AA\=P - AA\=PP + AA\=ps + AA\=ph /^\X+?Z/utf - AA\=P - AA\=PP + AA\=ps + AA\=ph /A\x{3a3}B/IBi,utf diff --git a/testdata/testinput6 b/testdata/testinput6 index 20c5cdd..10df1a1 100644 --- a/testdata/testinput6 +++ b/testdata/testinput6 @@ -464,46 +464,46 @@ defabcxyz /^abcdef/ - ab\=P - abcde\=P - abcdef\=P + ab\=ps + abcde\=ps + abcdef\=ps *** Failers - abx\=P + abx\=ps /^a{2,4}\d+z/ - a\=P - aa\=P - aa2\=P - aaa\=P - aaa23\=P - aaaa12345\=P - aa0z\=P - aaaa4444444444444z\=P + a\=ps + aa\=ps + aa2\=ps + aaa\=ps + aaa23\=ps + aaaa12345\=ps + aa0z\=ps + aaaa4444444444444z\=ps *** Failers - az\=P - aaaaa\=P - a56\=P + az\=ps + aaaaa\=ps + a56\=ps /^abcdef/ - abc\=P + abc\=ps def\=dfa_restart /(?<=foo)bar/ - xyzfo\=P - foob\=P,offset=2 - foobar...\=P,dfa_restart,offset=4 - xyzfo\=P + xyzfo\=ps + foob\=ps,offset=2 + foobar...\=ps,dfa_restart,offset=4 + xyzfo\=ps foobar\=offset=2 *** Failers - xyzfo\=P + xyzfo\=ps obar\=dfa_restart /(ab*(cd|ef))+X/ - adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=P,noteol - lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=P,notbol,noteol - cdabbbbbbbb\=P,notbol,dfa_restart,noteol - efabbbbbbbbbbbbbbbb\=P,notbol,dfa_restart,noteol - bbbbbbbbbbbbcdXyasdfadf\=P,notbol,dfa_restart,noteol + adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=ps,noteol + lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=ps,notbol,noteol + cdabbbbbbbb\=ps,notbol,dfa_restart,noteol + efabbbbbbbbbbbbbbbb\=ps,notbol,dfa_restart,noteol + bbbbbbbbbbbbcdXyasdfadf\=ps,notbol,dfa_restart,noteol /the quick brown fox/ the quick brown fox @@ -3961,12 +3961,12 @@ line one\nthis is a line\nbreak in the second line /1234/ - 123\=P - a4\=P,dfa_restart + 123\=ps + a4\=ps,dfa_restart /1234/ - 123\=P - 4\=P,dfa_restart + 123\=ps + 4\=ps,dfa_restart /^/gm a\nb\nc\n @@ -4372,66 +4372,66 @@ "ab"\=callout_none /\d+X|9+Y/ - ++++123999\=P - ++++123999Y\=P + ++++123999\=ps + ++++123999Y\=ps /Z(*F)/ - Z\=P - ZA\=P + Z\=ps + ZA\=ps /Z(?!)/ - Z\=P - ZA\=P + Z\=ps + ZA\=ps /dog(sbody)?/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /dog(sbody)??/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /dog|dogsbody/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /dogsbody|dog/ - dogs\=P - dogs\=PP + dogs\=ps + dogs\=ph /Z(*F)Q|ZXY/ - Z\=P - ZA\=P - X\=P + Z\=ps + ZA\=ps + X\=ps /\bthe cat\b/ - the cat\=P - the cat\=PP + the cat\=ps + the cat\=ph /dog(sbody)?/ - dogs\=P + dogs\=ps body\=dfa_restart /dog(sbody)?/ - dogs\=PP + dogs\=ph body\=dfa_restart /abc/ - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\K123/ xyzabc123pqr /(?<=abc)123/ xyzabc123pqr - xyzabc12\=P - xyzabc12\=PP + xyzabc12\=ps + xyzabc12\=ph /\babc\b/ +++abc+++ - +++ab\=P - +++ab\=PP + +++ab\=ps + +++ab\=ph /(?=C)/g,aftertext ABCDECBA @@ -4455,25 +4455,25 @@ thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd\=no_start_optimize /abcd*/aftertext - xxxxabcd\=P - xxxxabcd\=PP + xxxxabcd\=ps + xxxxabcd\=ph dddxxx\=dfa_restart - xxxxabcd\=PP + xxxxabcd\=ph xxx\=dfa_restart /abcd*/i - xxxxabcd\=P - xxxxabcd\=PP - XXXXABCD\=P - XXXXABCD\=PP + xxxxabcd\=ps + xxxxabcd\=ph + XXXXABCD\=ps + XXXXABCD\=ph /abc\d*/ - xxxxabc1\=P - xxxxabc1\=PP + xxxxabc1\=ps + xxxxabc1\=ph /abc[de]*/ - xxxxabcde\=P - xxxxabcde\=PP + xxxxabcde\=ps + xxxxabcde\=ph /(?:(?1)|B)(A(*F)|C)/ ABCD @@ -4508,40 +4508,40 @@ ac /(?<=abc)def/ - abc\=PP + abc\=ph /abc$/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc$/m abc abc\n - abc\=PP - abc\n\=PP - abc\=P - abc\n\=P + abc\=ph + abc\n\=ph + abc\=ps + abc\n\=ps /abc\z/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\Z/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\b/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /abc\B/ abc - abc\=P - abc\=PP + abc\=ps + abc\=ph /.+/ abc\=offset=0 @@ -4654,77 +4654,77 @@ abZdeX /^\R/ - \r\=P - \r\=PP + \r\=ps + \r\=ph /^\R{2,3}x/ - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph \r\rx \r\r\rx /^\R{2,3}?x/ - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph \r\rx \r\r\rx /^\R?x/ - \r\=P - \r\=PP + \r\=ps + \r\=ph x \rx /^\R+x/ - \r\=P - \r\=PP - \r\n\=P - \r\n\=PP + \r\=ps + \r\=ph + \r\n\=ps + \r\n\=ph \rx /^a$/newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /^a$/m,newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /^(a$|a\r)/newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /^(a$|a\r)/m,newline=crlf - a\r\=P - a\r\=PP + a\r\=ps + a\r\=ph /./newline=crlf - \r\=P - \r\=PP + \r\=ps + \r\=ph /.{2,3}/newline=crlf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph /.{2,3}?/newline=crlf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph # Test simple validity check for restarts diff --git a/testdata/testinput7 b/testdata/testinput7 index c50a05c..01d55cb 100644 --- a/testdata/testinput7 +++ b/testdata/testinput7 @@ -664,26 +664,26 @@ A\x{1ec5}ABCXYZ /abcd*/utf - xxxxabcd\=P - xxxxabcd\=PP + xxxxabcd\=ps + xxxxabcd\=ph /abcd*/i,utf - xxxxabcd\=P - xxxxabcd\=PP - XXXXABCD\=P - XXXXABCD\=PP + xxxxabcd\=ps + xxxxabcd\=ph + XXXXABCD\=ps + XXXXABCD\=ph /abc\d*/utf - xxxxabc1\=P - xxxxabc1\=PP + xxxxabc1\=ps + xxxxabc1\=ph /abc[de]*/utf - xxxxabcde\=P - xxxxabcde\=PP + xxxxabcde\=ps + xxxxabcde\=ph /\bthe cat\b/utf - the cat\=P - the cat\=PP + the cat\=ps + the cat\=ph /ab\Cde/utf abXde @@ -691,24 +691,24 @@ /(?<=ab\Cde)X/utf /./newline=crlf,utf - \r\=P - \r\=PP + \r\=ps + \r\=ph /.{2,3}/newline=crlf,utf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph /.{2,3}?/newline=crlf,utf - \r\=P - \r\=PP - \r\r\=P - \r\r\=PP - \r\r\r\=P - \r\r\r\=PP + \r\=ps + \r\=ph + \r\r\=ps + \r\r\=ph + \r\r\r\=ps + \r\r\r\=ph /[^\x{100}]/utf \x{100}\x{101}X @@ -1714,36 +1714,36 @@ \x{100}\x{101}XX /^\X/utf - A\=P - A\=PP - A\x{300}\x{301}\=P - A\x{300}\x{301}\=PP - A\x{301}\=P - A\x{301}\=PP + A\=ps + A\=ph + A\x{300}\x{301}\=ps + A\x{300}\x{301}\=ph + A\x{301}\=ps + A\x{301}\=ph /^\X{2,3}/utf - A\=P - A\=PP - AA\=P - AA\=PP - A\x{300}\x{301}\=P - A\x{300}\x{301}\=PP - A\x{300}\x{301}A\x{300}\x{301}\=P - A\x{300}\x{301}A\x{300}\x{301}\=PP + A\=ps + A\=ph + AA\=ps + AA\=ph + A\x{300}\x{301}\=ps + A\x{300}\x{301}\=ph + A\x{300}\x{301}A\x{300}\x{301}\=ps + A\x{300}\x{301}A\x{300}\x{301}\=ph /^\X{2}/utf - AA\=P - AA\=PP - A\x{300}\x{301}A\x{300}\x{301}\=P - A\x{300}\x{301}A\x{300}\x{301}\=PP + AA\=ps + AA\=ph + A\x{300}\x{301}A\x{300}\x{301}\=ps + A\x{300}\x{301}A\x{300}\x{301}\=ph /^\X+/utf - AA\=P - AA\=PP + AA\=ps + AA\=ph /^\X+?Z/utf - AA\=P - AA\=PP + AA\=ps + AA\=ph # These are tests for extended grapheme clusters diff --git a/testdata/testoutput2 b/testdata/testoutput2 index a5e91e9..599e0ce 100644 --- a/testdata/testoutput2 +++ b/testdata/testoutput2 @@ -5683,19 +5683,19 @@ No options First code unit = 'a' Last code unit = 'e' Subject length lower bound = 5 - ab\=P + ab\=ps Partial match: ab - abc\=P + abc\=ps Partial match: abc - abcd\=P + abcd\=ps Partial match: abcd - abcde\=P + abcde\=ps 0: abcde - the quick brown abc\=P + the quick brown abc\=ps Partial match: abc - ** Failers\=P + ** Failers\=ps No match - the quick brown abxyz fox\=P + the quick brown abxyz fox\=ps No match "^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(20)?\d\d$"I @@ -5705,54 +5705,54 @@ Overall options: anchored No first code unit Last code unit = '/' Subject length lower bound = 6 - 13/05/04\=P + 13/05/04\=ps 0: 13/05/04 1: 13 2: 05 - 13/5/2004\=P + 13/5/2004\=ps 0: 13/5/2004 1: 13 2: 5 3: 20 - 02/05/09\=P + 02/05/09\=ps 0: 02/05/09 1: 02 2: 05 - 1\=P + 1\=ps Partial match: 1 - 1/2\=P + 1/2\=ps Partial match: 1/2 - 1/2/0\=P + 1/2/0\=ps Partial match: 1/2/0 - 1/2/04\=P + 1/2/04\=ps 0: 1/2/04 1: 1 2: 2 - 0\=P + 0\=ps Partial match: 0 - 02/\=P + 02/\=ps Partial match: 02/ - 02/0\=P + 02/0\=ps Partial match: 02/0 - 02/1\=P + 02/1\=ps Partial match: 02/1 - ** Failers\=P + ** Failers\=ps No match - \=P + \=ps No match - 123\=P + 123\=ps No match - 33/4/04\=P + 33/4/04\=ps No match - 3/13/04\=P + 3/13/04\=ps No match - 0/1/2003\=P + 0/1/2003\=ps No match - 0/\=P + 0/\=ps No match - 02/0/\=P + 02/0/\=ps No match - 02/13\=P + 02/13\=ps No match /0{0,2}ABC/I @@ -5789,17 +5789,17 @@ No options Starting code units: 1 a b c Last code unit = '3' Subject length lower bound = 3 - 123\=P + 123\=ps 0: 123 - a\=P + a\=ps Partial match: a - b\=P + b\=ps Partial match: b - c\=P + c\=ps Partial match: c - c12\=P + c12\=ps Partial match: c12 - c123\=P + c123\=ps 0: c123 /^(?:\d){3,5}X/I @@ -5809,17 +5809,17 @@ Overall options: anchored No first code unit Last code unit = 'X' Subject length lower bound = 4 - 1\=P + 1\=ps Partial match: 1 - 123\=P + 123\=ps Partial match: 123 123X 0: 123X - 1234\=P + 1234\=ps Partial match: 1234 1234X 0: 1234X - 12345\=P + 12345\=ps Partial match: 12345 12345X 0: 12345X @@ -5827,7 +5827,7 @@ Partial match: 12345 No match 1X No match - 123456\=P + 123456\=ps No match "<(\w+)/?>(.)*"Igms @@ -9648,299 +9648,299 @@ Failed: error 115 at offset 5: reference to non-existent subpattern 5: Y /Xa{2,4}b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /Xa{2,4}?b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /Xa{2,4}+b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\d{2,4}b/ - X\=P + X\=ps Partial match: X - X3\=P + X3\=ps Partial match: X3 - X33\=P + X33\=ps Partial match: X33 - X333\=P + X333\=ps Partial match: X333 - X3333\=P + X3333\=ps Partial match: X3333 /X\d{2,4}?b/ - X\=P + X\=ps Partial match: X - X3\=P + X3\=ps Partial match: X3 - X33\=P + X33\=ps Partial match: X33 - X333\=P + X333\=ps Partial match: X333 - X3333\=P + X3333\=ps Partial match: X3333 /X\d{2,4}+b/ - X\=P + X\=ps Partial match: X - X3\=P + X3\=ps Partial match: X3 - X33\=P + X33\=ps Partial match: X33 - X333\=P + X333\=ps Partial match: X333 - X3333\=P + X3333\=ps Partial match: X3333 /X\D{2,4}b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\D{2,4}?b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\D{2,4}+b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[abc]{2,4}b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[abc]{2,4}?b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[abc]{2,4}+b/ - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[^a]{2,4}b/ - X\=P + X\=ps Partial match: X - Xz\=P + Xz\=ps Partial match: Xz - Xzz\=P + Xzz\=ps Partial match: Xzz - Xzzz\=P + Xzzz\=ps Partial match: Xzzz - Xzzzz\=P + Xzzzz\=ps Partial match: Xzzzz /X[^a]{2,4}?b/ - X\=P + X\=ps Partial match: X - Xz\=P + Xz\=ps Partial match: Xz - Xzz\=P + Xzz\=ps Partial match: Xzz - Xzzz\=P + Xzzz\=ps Partial match: Xzzz - Xzzzz\=P + Xzzzz\=ps Partial match: Xzzzz /X[^a]{2,4}+b/ - X\=P + X\=ps Partial match: X - Xz\=P + Xz\=ps Partial match: Xz - Xzz\=P + Xzz\=ps Partial match: Xzz - Xzzz\=P + Xzzz\=ps Partial match: Xzzz - Xzzzz\=P + Xzzzz\=ps Partial match: Xzzzz /(Y)X\1{2,4}b/ - YX\=P + YX\=ps Partial match: YX - YXY\=P + YXY\=ps Partial match: YXY - YXYY\=P + YXYY\=ps Partial match: YXYY - YXYYY\=P + YXYYY\=ps Partial match: YXYYY - YXYYYY\=P + YXYYYY\=ps Partial match: YXYYYY /(Y)X\1{2,4}?b/ - YX\=P + YX\=ps Partial match: YX - YXY\=P + YXY\=ps Partial match: YXY - YXYY\=P + YXYY\=ps Partial match: YXYY - YXYYY\=P + YXYYY\=ps Partial match: YXYYY - YXYYYY\=P + YXYYYY\=ps Partial match: YXYYYY /(Y)X\1{2,4}+b/ - YX\=P + YX\=ps Partial match: YX - YXY\=P + YXY\=ps Partial match: YXY - YXYY\=P + YXYY\=ps Partial match: YXYY - YXYYY\=P + YXYYY\=ps Partial match: YXYYY - YXYYYY\=P + YXYYYY\=ps Partial match: YXYYYY /\++\KZ|\d+X|9+Y/ - ++++123999\=P + ++++123999\=ps Partial match: 123999 - ++++123999Y\=P + ++++123999Y\=ps 0: 999Y - ++++Z1234\=P + ++++Z1234\=ps 0: Z /Z(*F)/ - Z\=P + Z\=ps No match - ZA\=P + ZA\=ps No match /Z(?!)/ - Z\=P + Z\=ps No match - ZA\=P + ZA\=ps No match /dog(sbody)?/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph Partial match: dogs /dog(sbody)??/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph 0: dog /dog|dogsbody/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph 0: dog /dogsbody|dog/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph Partial match: dogs /\bthe cat\b/ - the cat\=P + the cat\=ps 0: the cat - the cat\=PP + the cat\=ph Partial match: the cat /abc/ - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph 0: abc /abc\K123/ xyzabc123pqr 0: 123 - xyzabc12\=P + xyzabc12\=ps Partial match: abc12 - xyzabc12\=PP + xyzabc12\=ph Partial match: abc12 /(?<=abc)123/ xyzabc123pqr 0: 123 - xyzabc12\=P + xyzabc12\=ps Partial match at offset 6: abc12 - xyzabc12\=PP + xyzabc12\=ph Partial match at offset 6: abc12 /\babc\b/ +++abc+++ 0: abc - +++ab\=P + +++ab\=ps Partial match at offset 3: +ab - +++ab\=PP + +++ab\=ph Partial match at offset 3: +ab /(?&word)(?&element)(?(DEFINE)(?<[^m][^>]>[^<])(?\w*+))/B @@ -10522,38 +10522,38 @@ No match No match /abcd*/ - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd /abcd*/i - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd - XXXXABCD\=P + XXXXABCD\=ps 0: ABCD - XXXXABCD\=PP + XXXXABCD\=ph Partial match: ABCD /abc\d*/ - xxxxabc1\=P + xxxxabc1\=ps 0: abc1 - xxxxabc1\=PP + xxxxabc1\=ph Partial match: abc1 /(a)bc\1*/ - xxxxabca\=P + xxxxabca\=ps 0: abca 1: a - xxxxabca\=PP + xxxxabca\=ph Partial match: abca /abc[de]*/ - xxxxabcde\=P + xxxxabcde\=ps 0: abcde - xxxxabcde\=PP + xxxxabcde\=ph Partial match: abcde # This is not in the Perl-compatible test because Perl seems currently to be @@ -10999,15 +10999,15 @@ No match No match /(?<=abc)def/ - abc\=PP + abc\=ph Partial match at offset 3: abc /abc$/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc$/m @@ -11015,45 +11015,45 @@ Partial match: abc 0: abc abc\n 0: abc - abc\=PP + abc\=ph Partial match: abc - abc\n\=PP + abc\n\=ph 0: abc - abc\=P + abc\=ps 0: abc - abc\n\=P + abc\n\=ps 0: abc /abc\z/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc\Z/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc\b/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc\B/ abc No match - abc\=P + abc\=ps Partial match: abc - abc\=PP + abc\=ph Partial match: abc /.+/ @@ -11870,7 +11870,7 @@ Latest Mark: B 1: aeq /.(*F)/ - abc\=PP + abc\=ph No match /\btype\b\W*?\btext\b\W*?\bjavascript\b/I @@ -12197,7 +12197,7 @@ No match, mark = m # After a partial match, the behaviour is as for a failure. /^a(*:X)bcde/mark - abc\=P + abc\=ps Partial match, mark=X: abc # These are here because Perl doesn't return a mark, except for the first. @@ -12241,90 +12241,90 @@ MK: x MK: x /(..)\1/ - ab\=P + ab\=ps Partial match: ab - aba\=P + aba\=ps Partial match: aba - abab\=P + abab\=ps 0: abab 1: ab /(..)\1/i - ab\=P + ab\=ps Partial match: ab - abA\=P + abA\=ps Partial match: abA - aBAb\=P + aBAb\=ps 0: aBAb 1: aB /(..)\1{2,}/ - ab\=P + ab\=ps Partial match: ab - aba\=P + aba\=ps Partial match: aba - abab\=P + abab\=ps Partial match: abab - ababa\=P + ababa\=ps Partial match: ababa - ababab\=P + ababab\=ps 0: ababab 1: ab - ababab\=PP + ababab\=ph Partial match: ababab - abababa\=P + abababa\=ps 0: ababab 1: ab - abababa\=PP + abababa\=ph Partial match: abababa /(..)\1{2,}/i - ab\=P + ab\=ps Partial match: ab - aBa\=P + aBa\=ps Partial match: aBa - aBAb\=P + aBAb\=ps Partial match: aBAb - AbaBA\=P + AbaBA\=ps Partial match: AbaBA - abABAb\=P + abABAb\=ps 0: abABAb 1: ab - aBAbaB\=PP + aBAbaB\=ph Partial match: aBAbaB - abABabA\=P + abABabA\=ps 0: abABab 1: ab - abaBABa\=PP + abaBABa\=ph Partial match: abaBABa /(..)\1{2,}?x/i - ab\=P + ab\=ps Partial match: ab - abA\=P + abA\=ps Partial match: abA - aBAb\=P + aBAb\=ps Partial match: aBAb - abaBA\=P + abaBA\=ps Partial match: abaBA - abAbaB\=P + abAbaB\=ps Partial match: abAbaB - abaBabA\=P + abaBabA\=ps Partial match: abaBabA - abAbABaBx\=P + abAbABaBx\=ps 0: abAbABaBx 1: ab /^(..)\1/ - aba\=P + aba\=ps Partial match: aba /^(..)\1{2,3}x/ - aba\=P + aba\=ps Partial match: aba - ababa\=P + ababa\=ps Partial match: ababa - ababa\=PP + ababa\=ph Partial match: ababa abababx 0: abababx @@ -12334,11 +12334,11 @@ Partial match: ababa 1: ab /^(..)\1{2,3}?x/ - aba\=P + aba\=ps Partial match: aba - ababa\=P + ababa\=ps Partial match: ababa - ababa\=PP + ababa\=ph Partial match: ababa abababx 0: abababx @@ -12354,23 +12354,23 @@ Partial match: ababa 2: abab /^\R/ - \r\=P + \r\=ps 0: \x0d - \r\=PP + \r\=ph Partial match: \x0d /^\R{2,3}x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps Partial match: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps Partial match: \x0d\x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d \r\rx 0: \x0d\x0dx @@ -12378,17 +12378,17 @@ Partial match: \x0d\x0d\x0d 0: \x0d\x0d\x0dx /^\R{2,3}?x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps Partial match: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps Partial match: \x0d\x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d \r\rx 0: \x0d\x0dx @@ -12396,9 +12396,9 @@ Partial match: \x0d\x0d\x0d 0: \x0d\x0d\x0dx /^\R?x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d x 0: x @@ -12406,75 +12406,75 @@ Partial match: \x0d 0: \x0dx /^\R+x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\n\=P + \r\n\=ps Partial match: \x0d\x0a - \r\n\=PP + \r\n\=ph Partial match: \x0d\x0a \rx 0: \x0dx /^a$/newline=crlf - a\r\=P + a\r\=ps Partial match: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /^a$/m,newline=crlf - a\r\=P + a\r\=ps Partial match: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /^(a$|a\r)/newline=crlf - a\r\=P + a\r\=ps 0: a\x0d 1: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /^(a$|a\r)/m,newline=crlf - a\r\=P + a\r\=ps 0: a\x0d 1: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /./newline=crlf - \r\=P + \r\=ps 0: \x0d - \r\=PP + \r\=ph Partial match: \x0d /.{2,3}/newline=crlf - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps 0: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps 0: \x0d\x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d /.{2,3}?/newline=crlf - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps 0: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps 0: \x0d\x0d - \r\r\r\=PP + \r\r\r\=ph 0: \x0d\x0d "AB(C(D))(E(F))?(?(?=\2)(?=\4))" @@ -12718,15 +12718,15 @@ Matched, but too many substrings 0: ab /(?<=123)(*MARK:xx)abc/mark - xxxx123a\=PP + xxxx123a\=ph Partial match at offset 7, mark=xx: 123a - xxxx123a\=P + xxxx123a\=ps Partial match at offset 7, mark=xx: 123a /123\Kabc/ - xxxx123a\=PP + xxxx123a\=ph Partial match: 123a - xxxx123a\=P + xxxx123a\=ps Partial match: 123a /^(?(?=a)aa|bb)/auto_callout diff --git a/testdata/testoutput5 b/testdata/testoutput5 index c7621c5..a7862f2 100644 --- a/testdata/testoutput5 +++ b/testdata/testoutput5 @@ -805,480 +805,480 @@ No match 0: X /Xa{2,4}b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /Xa{2,4}?b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /Xa{2,4}+b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\x{123}{2,4}b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X\x{123}{2,4}?b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X\x{123}{2,4}+b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X\x{123}{2,4}b/utf - Xx\=P + Xx\=ps No match - X\x{123}x\=P + X\x{123}x\=ps No match - X\x{123}\x{123}x\=P + X\x{123}\x{123}x\=ps No match - X\x{123}\x{123}\x{123}x\=P + X\x{123}\x{123}\x{123}x\=ps No match - X\x{123}\x{123}\x{123}\x{123}x\=P + X\x{123}\x{123}\x{123}\x{123}x\=ps No match /X\x{123}{2,4}?b/utf - Xx\=P + Xx\=ps No match - X\x{123}x\=P + X\x{123}x\=ps No match - X\x{123}\x{123}x\=P + X\x{123}\x{123}x\=ps No match - X\x{123}\x{123}\x{123}x\=P + X\x{123}\x{123}\x{123}x\=ps No match - X\x{123}\x{123}\x{123}\x{123}x\=P + X\x{123}\x{123}\x{123}\x{123}x\=ps No match /X\x{123}{2,4}+b/utf - Xx\=P + Xx\=ps No match - X\x{123}x\=P + X\x{123}x\=ps No match - X\x{123}\x{123}x\=P + X\x{123}\x{123}x\=ps No match - X\x{123}\x{123}\x{123}x\=P + X\x{123}\x{123}\x{123}x\=ps No match - X\x{123}\x{123}\x{123}\x{123}x\=P + X\x{123}\x{123}\x{123}\x{123}x\=ps No match /X\d{2,4}b/utf - X\=P + X\=ps Partial match: X - X3\=P + X3\=ps Partial match: X3 - X33\=P + X33\=ps Partial match: X33 - X333\=P + X333\=ps Partial match: X333 - X3333\=P + X3333\=ps Partial match: X3333 /X\d{2,4}?b/utf - X\=P + X\=ps Partial match: X - X3\=P + X3\=ps Partial match: X3 - X33\=P + X33\=ps Partial match: X33 - X333\=P + X333\=ps Partial match: X333 - X3333\=P + X3333\=ps Partial match: X3333 /X\d{2,4}+b/utf - X\=P + X\=ps Partial match: X - X3\=P + X3\=ps Partial match: X3 - X33\=P + X33\=ps Partial match: X33 - X333\=P + X333\=ps Partial match: X333 - X3333\=P + X3333\=ps Partial match: X3333 /X\D{2,4}b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\D{2,4}?b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\D{2,4}+b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X\D{2,4}b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X\D{2,4}?b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X\D{2,4}+b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X[abc]{2,4}b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[abc]{2,4}?b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[abc]{2,4}+b/utf - X\=P + X\=ps Partial match: X - Xa\=P + Xa\=ps Partial match: Xa - Xaa\=P + Xaa\=ps Partial match: Xaa - Xaaa\=P + Xaaa\=ps Partial match: Xaaa - Xaaaa\=P + Xaaaa\=ps Partial match: Xaaaa /X[abc\x{123}]{2,4}b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X[abc\x{123}]{2,4}?b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X[abc\x{123}]{2,4}+b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X[^a]{2,4}b/utf - X\=P + X\=ps Partial match: X - Xz\=P + Xz\=ps Partial match: Xz - Xzz\=P + Xzz\=ps Partial match: Xzz - Xzzz\=P + Xzzz\=ps Partial match: Xzzz - Xzzzz\=P + Xzzzz\=ps Partial match: Xzzzz /X[^a]{2,4}?b/utf - X\=P + X\=ps Partial match: X - Xz\=P + Xz\=ps Partial match: Xz - Xzz\=P + Xzz\=ps Partial match: Xzz - Xzzz\=P + Xzzz\=ps Partial match: Xzzz - Xzzzz\=P + Xzzzz\=ps Partial match: Xzzzz /X[^a]{2,4}+b/utf - X\=P + X\=ps Partial match: X - Xz\=P + Xz\=ps Partial match: Xz - Xzz\=P + Xzz\=ps Partial match: Xzz - Xzzz\=P + Xzzz\=ps Partial match: Xzzz - Xzzzz\=P + Xzzzz\=ps Partial match: Xzzzz /X[^a]{2,4}b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X[^a]{2,4}?b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /X[^a]{2,4}+b/utf - X\=P + X\=ps Partial match: X - X\x{123}\=P + X\x{123}\=ps Partial match: X\x{123} - X\x{123}\x{123}\=P + X\x{123}\x{123}\=ps Partial match: X\x{123}\x{123} - X\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123} - X\x{123}\x{123}\x{123}\x{123}\=P + X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: X\x{123}\x{123}\x{123}\x{123} /(Y)X\1{2,4}b/utf - YX\=P + YX\=ps Partial match: YX - YXY\=P + YXY\=ps Partial match: YXY - YXYY\=P + YXYY\=ps Partial match: YXYY - YXYYY\=P + YXYYY\=ps Partial match: YXYYY - YXYYYY\=P + YXYYYY\=ps Partial match: YXYYYY /(Y)X\1{2,4}?b/utf - YX\=P + YX\=ps Partial match: YX - YXY\=P + YXY\=ps Partial match: YXY - YXYY\=P + YXYY\=ps Partial match: YXYY - YXYYY\=P + YXYYY\=ps Partial match: YXYYY - YXYYYY\=P + YXYYYY\=ps Partial match: YXYYYY /(Y)X\1{2,4}+b/utf - YX\=P + YX\=ps Partial match: YX - YXY\=P + YXY\=ps Partial match: YXY - YXYY\=P + YXYY\=ps Partial match: YXYY - YXYYY\=P + YXYYY\=ps Partial match: YXYYY - YXYYYY\=P + YXYYYY\=ps Partial match: YXYYYY /(\x{123})X\1{2,4}b/utf - \x{123}X\=P + \x{123}X\=ps Partial match: \x{123}X - \x{123}X\x{123}\=P + \x{123}X\x{123}\=ps Partial match: \x{123}X\x{123} - \x{123}X\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123} - \x{123}X\x{123}\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123}\x{123} - \x{123}X\x{123}\x{123}\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123} /(\x{123})X\1{2,4}?b/utf - \x{123}X\=P + \x{123}X\=ps Partial match: \x{123}X - \x{123}X\x{123}\=P + \x{123}X\x{123}\=ps Partial match: \x{123}X\x{123} - \x{123}X\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123} - \x{123}X\x{123}\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123}\x{123} - \x{123}X\x{123}\x{123}\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123} /(\x{123})X\1{2,4}+b/utf - \x{123}X\=P + \x{123}X\=ps Partial match: \x{123}X - \x{123}X\x{123}\=P + \x{123}X\x{123}\=ps Partial match: \x{123}X\x{123} - \x{123}X\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123} - \x{123}X\x{123}\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123}\x{123} - \x{123}X\x{123}\x{123}\x{123}\x{123}\=P + \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123} /\bthe cat\b/utf - the cat\=P + the cat\=ps 0: the cat - the cat\=PP + the cat\=ph Partial match: the cat /abcd*/utf - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd /abcd*/i,utf - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd - XXXXABCD\=P + XXXXABCD\=ps 0: ABCD - XXXXABCD\=PP + XXXXABCD\=ph Partial match: ABCD /abc\d*/utf - xxxxabc1\=P + xxxxabc1\=ps 0: abc1 - xxxxabc1\=PP + xxxxabc1\=ph Partial match: abc1 /(a)bc\1*/utf - xxxxabca\=P + xxxxabca\=ps 0: abca 1: a - xxxxabca\=PP + xxxxabca\=ph Partial match: abca /abc[de]*/utf - xxxxabcde\=P + xxxxabcde\=ps 0: abcde - xxxxabcde\=PP + xxxxabcde\=ph Partial match: abcde /X\W{3}X/utf - X\=P + X\=ps Partial match: X /\sxxx\s/utf,tables=1 @@ -1412,19 +1412,19 @@ No last code unit Subject length lower bound = 2 /f.*/ - for\=PP + for\=ph Partial match: for /f.*/s - for\=PP + for\=ph Partial match: for /f.*/utf - for\=PP + for\=ph Partial match: for /f.*/s,utf - for\=PP + for\=ph Partial match: for /\x{d7ff}\x{e000}/utf @@ -1522,112 +1522,112 @@ Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0x 0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d} /(..)\1/utf - ab\=P + ab\=ps Partial match: ab - aba\=P + aba\=ps Partial match: aba - abab\=P + abab\=ps 0: abab 1: ab /(..)\1/i,utf - ab\=P + ab\=ps Partial match: ab - abA\=P + abA\=ps Partial match: abA - aBAb\=P + aBAb\=ps 0: aBAb 1: aB /(..)\1{2,}/utf - ab\=P + ab\=ps Partial match: ab - aba\=P + aba\=ps Partial match: aba - abab\=P + abab\=ps Partial match: abab - ababa\=P + ababa\=ps Partial match: ababa - ababab\=P + ababab\=ps 0: ababab 1: ab - ababab\=PP + ababab\=ph Partial match: ababab - abababa\=P + abababa\=ps 0: ababab 1: ab - abababa\=PP + abababa\=ph Partial match: abababa /(..)\1{2,}/i,utf - ab\=P + ab\=ps Partial match: ab - aBa\=P + aBa\=ps Partial match: aBa - aBAb\=P + aBAb\=ps Partial match: aBAb - AbaBA\=P + AbaBA\=ps Partial match: AbaBA - abABAb\=P + abABAb\=ps 0: abABAb 1: ab - aBAbaB\=PP + aBAbaB\=ph Partial match: aBAbaB - abABabA\=P + abABabA\=ps 0: abABab 1: ab - abaBABa\=PP + abaBABa\=ph Partial match: abaBABa /(..)\1{2,}?x/i,utf - ab\=P + ab\=ps Partial match: ab - abA\=P + abA\=ps Partial match: abA - aBAb\=P + aBAb\=ps Partial match: aBAb - abaBA\=P + abaBA\=ps Partial match: abaBA - abAbaB\=P + abAbaB\=ps Partial match: abAbaB - abaBabA\=P + abaBabA\=ps Partial match: abaBabA - abAbABaBx\=P + abAbABaBx\=ps 0: abAbABaBx 1: ab /./utf,newline=crlf - \r\=P + \r\=ps 0: \x{0d} - \r\=PP + \r\=ph Partial match: \x{0d} /.{2,3}/utf,newline=crlf - \r\=P + \r\=ps Partial match: \x{0d} - \r\=PP + \r\=ph Partial match: \x{0d} - \r\r\=P + \r\r\=ps 0: \x{0d}\x{0d} - \r\r\=PP + \r\r\=ph Partial match: \x{0d}\x{0d} - \r\r\r\=P + \r\r\r\=ps 0: \x{0d}\x{0d}\x{0d} - \r\r\r\=PP + \r\r\r\=ph Partial match: \x{0d}\x{0d}\x{0d} /.{2,3}?/utf,newline=crlf - \r\=P + \r\=ps Partial match: \x{0d} - \r\=PP + \r\=ph Partial match: \x{0d} - \r\r\=P + \r\r\=ps 0: \x{0d}\x{0d} - \r\r\=PP + \r\r\=ph Partial match: \x{0d}\x{0d} - \r\r\r\=P + \r\r\r\=ps 0: \x{0d}\x{0d} - \r\r\r\=PP + \r\r\r\=ph 0: \x{0d}\x{0d} /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf @@ -2915,41 +2915,41 @@ No match Failed: error 136 at offset 10: \C is not allowed in a lookbehind assertion /\X/ - a\=P + a\=ps 0: a - a\=PP + a\=ph Partial match: a /\Xa/ - aa\=P + aa\=ps 0: aa - aa\=PP + aa\=ph 0: aa /\X{2}/ - aa\=P + aa\=ps 0: aa - aa\=PP + aa\=ph Partial match: aa /\X+a/ - a\=P + a\=ps Partial match: a - aa\=P + aa\=ps 0: aa - aa\=PP + aa\=ph Partial match: aa /\X+?a/ - a\=P + a\=ps Partial match: a - ab\=P + ab\=ps Partial match: ab - aa\=P + aa\=ps 0: aa - aa\=PP + aa\=ph 0: aa - aba\=P + aba\=ps 0: aba # These Unicode 6.1.0 scripts are not known to Perl. @@ -2963,57 +2963,57 @@ Partial match: ab 0: \x{11680}\x{116c0} /^\X/utf - A\=P + A\=ps 0: A - A\=PP + A\=ph Partial match: A - A\x{300}\x{301}\=P + A\x{300}\x{301}\=ps 0: A\x{300}\x{301} - A\x{300}\x{301}\=PP + A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301} - A\x{301}\=P + A\x{301}\=ps 0: A\x{301} - A\x{301}\=PP + A\x{301}\=ph Partial match: A\x{301} /^\X{2,3}/utf - A\=P + A\=ps Partial match: A - A\=PP + A\=ph Partial match: A - AA\=P + AA\=ps 0: AA - AA\=PP + AA\=ph Partial match: AA - A\x{300}\x{301}\=P + A\x{300}\x{301}\=ps Partial match: A\x{300}\x{301} - A\x{300}\x{301}\=PP + A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301} - A\x{300}\x{301}A\x{300}\x{301}\=P + A\x{300}\x{301}A\x{300}\x{301}\=ps 0: A\x{300}\x{301}A\x{300}\x{301} - A\x{300}\x{301}A\x{300}\x{301}\=PP + A\x{300}\x{301}A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301}A\x{300}\x{301} /^\X{2}/utf - AA\=P + AA\=ps 0: AA - AA\=PP + AA\=ph Partial match: AA - A\x{300}\x{301}A\x{300}\x{301}\=P + A\x{300}\x{301}A\x{300}\x{301}\=ps 0: A\x{300}\x{301}A\x{300}\x{301} - A\x{300}\x{301}A\x{300}\x{301}\=PP + A\x{300}\x{301}A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301}A\x{300}\x{301} /^\X+/utf - AA\=P + AA\=ps 0: AA - AA\=PP + AA\=ph Partial match: AA /^\X+?Z/utf - AA\=P + AA\=ps Partial match: AA - AA\=PP + AA\=ph Partial match: AA /A\x{3a3}B/IBi,utf diff --git a/testdata/testoutput6 b/testdata/testoutput6 index 520e734..7400d94 100644 --- a/testdata/testoutput6 +++ b/testdata/testoutput6 @@ -900,77 +900,77 @@ No match No match /^abcdef/ - ab\=P + ab\=ps Partial match: ab - abcde\=P + abcde\=ps Partial match: abcde - abcdef\=P + abcdef\=ps 0: abcdef *** Failers No match - abx\=P + abx\=ps No match /^a{2,4}\d+z/ - a\=P + a\=ps Partial match: a - aa\=P + aa\=ps Partial match: aa - aa2\=P + aa2\=ps Partial match: aa2 - aaa\=P + aaa\=ps Partial match: aaa - aaa23\=P + aaa23\=ps Partial match: aaa23 - aaaa12345\=P + aaaa12345\=ps Partial match: aaaa12345 - aa0z\=P + aa0z\=ps 0: aa0z - aaaa4444444444444z\=P + aaaa4444444444444z\=ps 0: aaaa4444444444444z *** Failers No match - az\=P + az\=ps No match - aaaaa\=P + aaaaa\=ps No match - a56\=P + a56\=ps No match /^abcdef/ - abc\=P + abc\=ps Partial match: abc def\=dfa_restart 0: def /(?<=foo)bar/ - xyzfo\=P + xyzfo\=ps No match - foob\=P,offset=2 + foob\=ps,offset=2 Partial match at offset 3: foob - foobar...\=P,dfa_restart,offset=4 + foobar...\=ps,dfa_restart,offset=4 0: ar - xyzfo\=P + xyzfo\=ps No match foobar\=offset=2 0: bar *** Failers No match - xyzfo\=P + xyzfo\=ps No match obar\=dfa_restart No match /(ab*(cd|ef))+X/ - adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=P,noteol + adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=ps,noteol No match - lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=P,notbol,noteol + lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=ps,notbol,noteol Partial match: abbbbbbcdaefabbbbbbbefa - cdabbbbbbbb\=P,notbol,dfa_restart,noteol + cdabbbbbbbb\=ps,notbol,dfa_restart,noteol Partial match: cdabbbbbbbb - efabbbbbbbbbbbbbbbb\=P,notbol,dfa_restart,noteol + efabbbbbbbbbbbbbbbb\=ps,notbol,dfa_restart,noteol Partial match: efabbbbbbbbbbbbbbbb - bbbbbbbbbbbbcdXyasdfadf\=P,notbol,dfa_restart,noteol + bbbbbbbbbbbbcdXyasdfadf\=ps,notbol,dfa_restart,noteol 0: bbbbbbbbbbbbcdX /the quick brown fox/ @@ -6163,15 +6163,15 @@ No match No match /1234/ - 123\=P + 123\=ps Partial match: 123 - a4\=P,dfa_restart + a4\=ps,dfa_restart No match /1234/ - 123\=P + 123\=ps Partial match: 123 - 4\=P,dfa_restart + 4\=ps,dfa_restart 0: 4 /^/gm @@ -6987,77 +6987,77 @@ No match 0: "ab" /\d+X|9+Y/ - ++++123999\=P + ++++123999\=ps Partial match: 123999 - ++++123999Y\=P + ++++123999Y\=ps 0: 999Y /Z(*F)/ - Z\=P + Z\=ps No match - ZA\=P + ZA\=ps No match /Z(?!)/ - Z\=P + Z\=ps No match - ZA\=P + ZA\=ps No match /dog(sbody)?/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph Partial match: dogs /dog(sbody)??/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph Partial match: dogs /dog|dogsbody/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph Partial match: dogs /dogsbody|dog/ - dogs\=P + dogs\=ps 0: dog - dogs\=PP + dogs\=ph Partial match: dogs /Z(*F)Q|ZXY/ - Z\=P + Z\=ps Partial match: Z - ZA\=P + ZA\=ps No match - X\=P + X\=ps No match /\bthe cat\b/ - the cat\=P + the cat\=ps 0: the cat - the cat\=PP + the cat\=ph Partial match: the cat /dog(sbody)?/ - dogs\=P + dogs\=ps 0: dog body\=dfa_restart 0: body /dog(sbody)?/ - dogs\=PP + dogs\=ph Partial match: dogs body\=dfa_restart 0: body /abc/ - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph 0: abc /abc\K123/ @@ -7067,17 +7067,17 @@ Failed: error -41: item unsupported for DFA matching /(?<=abc)123/ xyzabc123pqr 0: 123 - xyzabc12\=P + xyzabc12\=ps Partial match at offset 6: abc12 - xyzabc12\=PP + xyzabc12\=ph Partial match at offset 6: abc12 /\babc\b/ +++abc+++ 0: abc - +++ab\=P + +++ab\=ps Partial match at offset 3: +ab - +++ab\=PP + +++ab\=ph Partial match at offset 3: +ab /(?=C)/g,aftertext @@ -7130,40 +7130,40 @@ No match No match /abcd*/aftertext - xxxxabcd\=P + xxxxabcd\=ps 0: abcd 0+ - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd dddxxx\=dfa_restart 0: ddd 0+ xxx - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd xxx\=dfa_restart 0: 0+ xxx /abcd*/i - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd - XXXXABCD\=P + XXXXABCD\=ps 0: ABCD - XXXXABCD\=PP + XXXXABCD\=ph Partial match: ABCD /abc\d*/ - xxxxabc1\=P + xxxxabc1\=ps 0: abc1 - xxxxabc1\=PP + xxxxabc1\=ph Partial match: abc1 /abc[de]*/ - xxxxabcde\=P + xxxxabcde\=ps 0: abcde - xxxxabcde\=PP + xxxxabcde\=ph Partial match: abcde /(?:(?1)|B)(A(*F)|C)/ @@ -7217,15 +7217,15 @@ Failed: error -41: item unsupported for DFA matching Failed: error -41: item unsupported for DFA matching /(?<=abc)def/ - abc\=PP + abc\=ph Partial match at offset 3: abc /abc$/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc$/m @@ -7233,45 +7233,45 @@ Partial match: abc 0: abc abc\n 0: abc - abc\=PP + abc\=ph Partial match: abc - abc\n\=PP + abc\n\=ph 0: abc - abc\=P + abc\=ps 0: abc - abc\n\=P + abc\n\=ps 0: abc /abc\z/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc\Z/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc\b/ abc 0: abc - abc\=P + abc\=ps 0: abc - abc\=PP + abc\=ph Partial match: abc /abc\B/ abc No match - abc\=P + abc\=ps Partial match: abc - abc\=PP + abc\=ph Partial match: abc /.+/ @@ -7453,23 +7453,23 @@ Matched, but offsets vector is too small to show all matches 0: X /^\R/ - \r\=P + \r\=ps 0: \x0d - \r\=PP + \r\=ph Partial match: \x0d /^\R{2,3}x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps Partial match: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps Partial match: \x0d\x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d \r\rx 0: \x0d\x0dx @@ -7477,17 +7477,17 @@ Partial match: \x0d\x0d\x0d 0: \x0d\x0d\x0dx /^\R{2,3}?x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps Partial match: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps Partial match: \x0d\x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d \r\rx 0: \x0d\x0dx @@ -7495,9 +7495,9 @@ Partial match: \x0d\x0d\x0d 0: \x0d\x0d\x0dx /^\R?x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d x 0: x @@ -7505,74 +7505,74 @@ Partial match: \x0d 0: \x0dx /^\R+x/ - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\n\=P + \r\n\=ps Partial match: \x0d\x0a - \r\n\=PP + \r\n\=ph Partial match: \x0d\x0a \rx 0: \x0dx /^a$/newline=crlf - a\r\=P + a\r\=ps Partial match: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /^a$/m,newline=crlf - a\r\=P + a\r\=ps Partial match: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /^(a$|a\r)/newline=crlf - a\r\=P + a\r\=ps 0: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /^(a$|a\r)/m,newline=crlf - a\r\=P + a\r\=ps 0: a\x0d - a\r\=PP + a\r\=ph Partial match: a\x0d /./newline=crlf - \r\=P + \r\=ps 0: \x0d - \r\=PP + \r\=ph Partial match: \x0d /.{2,3}/newline=crlf - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps 0: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps 0: \x0d\x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d /.{2,3}?/newline=crlf - \r\=P + \r\=ps Partial match: \x0d - \r\=PP + \r\=ph Partial match: \x0d - \r\r\=P + \r\r\=ps 0: \x0d\x0d - \r\r\=PP + \r\r\=ph Partial match: \x0d\x0d - \r\r\r\=P + \r\r\r\=ps 0: \x0d\x0d\x0d 1: \x0d\x0d - \r\r\r\=PP + \r\r\r\=ph Partial match: \x0d\x0d\x0d # Test simple validity check for restarts diff --git a/testdata/testoutput7 b/testdata/testoutput7 index b58d7c1..a9511bc 100644 --- a/testdata/testoutput7 +++ b/testdata/testoutput7 @@ -1193,37 +1193,37 @@ No match 0: X /abcd*/utf - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd /abcd*/i,utf - xxxxabcd\=P + xxxxabcd\=ps 0: abcd - xxxxabcd\=PP + xxxxabcd\=ph Partial match: abcd - XXXXABCD\=P + XXXXABCD\=ps 0: ABCD - XXXXABCD\=PP + XXXXABCD\=ph Partial match: ABCD /abc\d*/utf - xxxxabc1\=P + xxxxabc1\=ps 0: abc1 - xxxxabc1\=PP + xxxxabc1\=ph Partial match: abc1 /abc[de]*/utf - xxxxabcde\=P + xxxxabcde\=ps 0: abcde - xxxxabcde\=PP + xxxxabcde\=ph Partial match: abcde /\bthe cat\b/utf - the cat\=P + the cat\=ps 0: the cat - the cat\=PP + the cat\=ph Partial match: the cat /ab\Cde/utf @@ -1234,38 +1234,38 @@ Failed: error -41: item unsupported for DFA matching Failed: error 136 at offset 10: \C is not allowed in a lookbehind assertion /./newline=crlf,utf - \r\=P + \r\=ps 0: \x{0d} - \r\=PP + \r\=ph Partial match: \x{0d} /.{2,3}/newline=crlf,utf - \r\=P + \r\=ps Partial match: \x{0d} - \r\=PP + \r\=ph Partial match: \x{0d} - \r\r\=P + \r\r\=ps 0: \x{0d}\x{0d} - \r\r\=PP + \r\r\=ph Partial match: \x{0d}\x{0d} - \r\r\r\=P + \r\r\r\=ps 0: \x{0d}\x{0d}\x{0d} - \r\r\r\=PP + \r\r\r\=ph Partial match: \x{0d}\x{0d}\x{0d} /.{2,3}?/newline=crlf,utf - \r\=P + \r\=ps Partial match: \x{0d} - \r\=PP + \r\=ph Partial match: \x{0d} - \r\r\=P + \r\r\=ps 0: \x{0d}\x{0d} - \r\r\=PP + \r\r\=ph Partial match: \x{0d}\x{0d} - \r\r\r\=P + \r\r\r\=ps 0: \x{0d}\x{0d}\x{0d} 1: \x{0d}\x{0d} - \r\r\r\=PP + \r\r\r\=ph Partial match: \x{0d}\x{0d}\x{0d} /[^\x{100}]/utf @@ -3106,57 +3106,57 @@ No match 0: XX /^\X/utf - A\=P + A\=ps 0: A - A\=PP + A\=ph Partial match: A - A\x{300}\x{301}\=P + A\x{300}\x{301}\=ps 0: A\x{300}\x{301} - A\x{300}\x{301}\=PP + A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301} - A\x{301}\=P + A\x{301}\=ps 0: A\x{301} - A\x{301}\=PP + A\x{301}\=ph Partial match: A\x{301} /^\X{2,3}/utf - A\=P + A\=ps Partial match: A - A\=PP + A\=ph Partial match: A - AA\=P + AA\=ps 0: AA - AA\=PP + AA\=ph Partial match: AA - A\x{300}\x{301}\=P + A\x{300}\x{301}\=ps Partial match: A\x{300}\x{301} - A\x{300}\x{301}\=PP + A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301} - A\x{300}\x{301}A\x{300}\x{301}\=P + A\x{300}\x{301}A\x{300}\x{301}\=ps 0: A\x{300}\x{301}A\x{300}\x{301} - A\x{300}\x{301}A\x{300}\x{301}\=PP + A\x{300}\x{301}A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301}A\x{300}\x{301} /^\X{2}/utf - AA\=P + AA\=ps 0: AA - AA\=PP + AA\=ph Partial match: AA - A\x{300}\x{301}A\x{300}\x{301}\=P + A\x{300}\x{301}A\x{300}\x{301}\=ps 0: A\x{300}\x{301}A\x{300}\x{301} - A\x{300}\x{301}A\x{300}\x{301}\=PP + A\x{300}\x{301}A\x{300}\x{301}\=ph Partial match: A\x{300}\x{301}A\x{300}\x{301} /^\X+/utf - AA\=P + AA\=ps 0: AA - AA\=PP + AA\=ph Partial match: AA /^\X+?Z/utf - AA\=P + AA\=ps Partial match: AA - AA\=PP + AA\=ph Partial match: AA # These are tests for extended grapheme clusters