Changes to pcre2test single-letter modifiers.

This commit is contained in:
Philip.Hazel 2014-08-03 18:15:32 +00:00
parent 8792477279
commit e2076960d4
10 changed files with 1454 additions and 1459 deletions

View File

@ -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[=<number>] 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=<n> 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

View File

@ -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;

528
testdata/testinput2 vendored
View File

@ -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+)/?>(.)*</(\1)>"Igms
<!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>\=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)(?<element><[^m][^>]>[^<])(?<word>\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

556
testdata/testinput5 vendored
View File

@ -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

250
testdata/testinput6 vendored
View File

@ -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

96
testdata/testinput7 vendored
View File

@ -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

528
testdata/testoutput2 vendored

File diff suppressed because it is too large Load Diff

556
testdata/testoutput5 vendored
View File

@ -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

250
testdata/testoutput6 vendored
View File

@ -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

96
testdata/testoutput7 vendored
View File

@ -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