Initial commit

This commit is contained in:
Hakase
2018-02-14 15:05:29 +09:00
commit 20f797d2f6
8093 changed files with 1360150 additions and 0 deletions
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
testdata/grepinputv
testdata/grepinputx
+611
View File
@@ -0,0 +1,611 @@
This is a file of miscellaneous text that is used as test data for checking
that the pcregrep command is working correctly. The file must be more than 24K
long so that it needs more than a single read() call to process it. New
features should be added at the end, because some of the tests involve the
output of line numbers, and we don't want these to change.
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
This pattern is in lower case.
Here follows a whole lot of stuff that makes the file over 24K long.
-------------------------------------------------------------------------------
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox
jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick
brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-------------------------------------------------------------------------------
aaaaa0
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbb
cccccccccccccccccccccccccccccccccccccccccc
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
eeeee
aaaaa2
ffffffffff
This is a line before the binary zero.
This line contains a binary zero here >< for testing.
This is a line after the binary zero.
ABOVE the elephant
ABOVE
ABOVE theatre
AB.VE
AB.VE the turtle
010203040506
PUT NEW DATA ABOVE THIS LINE.
=============================
Check up on PATTERN near the end.
This is the last line of this file.
+15
View File
@@ -0,0 +1,15 @@
triple: t1_txt s1_tag s_txt p_tag p_txt o_tag o_txt
triple: t2_txt s1_tag s_txt p_tag p_txt o_tag
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
triple: t3_txt s2_tag s_txt p_tag p_txt o_tag o_txt
triple: t4_txt s1_tag s_txt p_tag p_txt o_tag o_txt
triple: t5_txt s1_tag s_txt p_tag p_txt o_tag
o_txt
triple: t6_txt s2_tag s_txt p_tag p_txt o_tag o_txt
triple: t7_txt s1_tag s_txt p_tag p_txt o_tag o_txt
+11
View File
@@ -0,0 +1,11 @@
X one
X two X three X four␍X five
X six
X seven…X eightX nineX ten
Before 111
Before 222Before 333…Match
After 111
After 222After 333
And so on and so on
And so on and so on
+4
View File
@@ -0,0 +1,4 @@
The quick brown
fox jumps
over the lazy dog.
This time it jumps and jumps and jumps.
+43
View File
@@ -0,0 +1,43 @@
This is a second file of input for the pcregrep tests.
Here is the pattern again.
Pattern
That time it was on a line by itself.
To pat or not to pat, that is the question.
complete pair
of lines
That was a complete pair
of lines all by themselves.
complete pair
of lines
And there they were again, to check line numbers.
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
This line contains pattern not on a line by itself.
This is the last line of this file.
+7
View File
@@ -0,0 +1,7 @@
This is a file of patterns for testing the -f option. Don't include any blank
lines because they will match everything! This is no longer true, so have one.
pattern
line by itself
End of the list of patterns.
+757
View File
@@ -0,0 +1,757 @@
---------------------------- Test 1 ------------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
Check up on PATTERN near the end.
RC=0
---------------------------- Test 2 ------------------------------
PATTERN at the start of a line.
RC=0
---------------------------- Test 3 ------------------------------
7:PATTERN at the start of a line.
8:In the middle of a line, PATTERN appears.
10:This pattern is in lower case.
610:Check up on PATTERN near the end.
RC=0
---------------------------- Test 4 ------------------------------
4
RC=0
---------------------------- Test 5 ------------------------------
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput:10:This pattern is in lower case.
./testdata/grepinput:610:Check up on PATTERN near the end.
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx:5:Pattern
./testdata/grepinputx:42:This line contains pattern not on a line by itself.
RC=0
---------------------------- Test 6 ------------------------------
7:PATTERN at the start of a line.
8:In the middle of a line, PATTERN appears.
10:This pattern is in lower case.
610:Check up on PATTERN near the end.
3:Here is the pattern again.
5:Pattern
42:This line contains pattern not on a line by itself.
RC=0
---------------------------- Test 7 ------------------------------
./testdata/grepinput
./testdata/grepinputx
RC=0
---------------------------- Test 8 ------------------------------
./testdata/grepinput
RC=0
---------------------------- Test 9 ------------------------------
RC=0
---------------------------- Test 10 -----------------------------
RC=1
---------------------------- Test 11 -----------------------------
1:This is a second file of input for the pcregrep tests.
2:
4:
5:Pattern
6:That time it was on a line by itself.
7:
8:To pat or not to pat, that is the question.
9:
10:complete pair
11:of lines
12:
13:That was a complete pair
14:of lines all by themselves.
15:
16:complete pair
17:of lines
18:
19:And there they were again, to check line numbers.
20:
21:one
22:two
23:three
24:four
25:five
26:six
27:seven
28:eight
29:nine
30:ten
31:eleven
32:twelve
33:thirteen
34:fourteen
35:fifteen
36:sixteen
37:seventeen
38:eighteen
39:nineteen
40:twenty
41:
43:This is the last line of this file.
RC=0
---------------------------- Test 12 -----------------------------
Pattern
RC=0
---------------------------- Test 13 -----------------------------
Here is the pattern again.
That time it was on a line by itself.
seventeen
This line contains pattern not on a line by itself.
RC=0
---------------------------- Test 14 -----------------------------
./testdata/grepinputx:To pat or not to pat, that is the question.
RC=0
---------------------------- Test 15 -----------------------------
pcregrep: Error in command-line regex at offset 4: nothing to repeat
RC=2
---------------------------- Test 16 -----------------------------
pcregrep: Failed to open ./testdata/nonexistfile: No such file or directory
RC=2
---------------------------- Test 17 -----------------------------
features should be added at the end, because some of the tests involve the
output of line numbers, and we don't want these to change.
RC=0
---------------------------- Test 18 -----------------------------
4:features should be added at the end, because some of the tests involve the
output of line numbers, and we don't want these to change.
583:brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.
-------------------------------------------------------------------------------
RC=0
---------------------------- Test 19 -----------------------------
Pattern
RC=0
---------------------------- Test 20 -----------------------------
10:complete pair
of lines
16:complete pair
of lines
RC=0
---------------------------- Test 21 -----------------------------
24:four
25-five
26-six
27-seven
--
34:fourteen
35-fifteen
36-sixteen
37-seventeen
RC=0
---------------------------- Test 22 -----------------------------
21-one
22-two
23-three
24:four
--
31-eleven
32-twelve
33-thirteen
34:fourteen
RC=0
---------------------------- Test 23 -----------------------------
one
two
three
four
five
six
seven
--
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
RC=0
---------------------------- Test 24 -----------------------------
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
This line contains pattern not on a line by itself.
This is the last line of this file.
RC=0
---------------------------- Test 25 -----------------------------
15-
16-complete pair
17-of lines
18-
19-And there they were again, to check line numbers.
20-
21-one
22-two
23-three
24:four
25-five
26-six
27-seven
28-eight
29-nine
30-ten
31-eleven
32-twelve
33-thirteen
34:fourteen
RC=0
---------------------------- Test 26 -----------------------------
complete pair
of lines
And there they were again, to check line numbers.
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
This line contains pattern not on a line by itself.
This is the last line of this file.
RC=0
---------------------------- Test 27 -----------------------------
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
This line contains pattern not on a line by itself.
This is the last line of this file.
RC=0
---------------------------- Test 28 -----------------------------
14-of lines all by themselves.
15-
16-complete pair
17-of lines
18-
19-And there they were again, to check line numbers.
20-
21-one
22-two
23-three
24:four
25-five
26-six
27-seven
28-eight
29-nine
30-ten
31-eleven
32-twelve
33-thirteen
34:fourteen
RC=0
---------------------------- Test 29 -----------------------------
of lines all by themselves.
complete pair
of lines
And there they were again, to check line numbers.
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
This line contains pattern not on a line by itself.
This is the last line of this file.
RC=0
---------------------------- Test 30 -----------------------------
./testdata/grepinput-4-features should be added at the end, because some of the tests involve the
./testdata/grepinput-5-output of line numbers, and we don't want these to change.
./testdata/grepinput-6-
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput-9-
./testdata/grepinput:10:This pattern is in lower case.
--
./testdata/grepinput-607-PUT NEW DATA ABOVE THIS LINE.
./testdata/grepinput-608-=============================
./testdata/grepinput-609-
./testdata/grepinput:610:Check up on PATTERN near the end.
--
./testdata/grepinputx-1-This is a second file of input for the pcregrep tests.
./testdata/grepinputx-2-
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx-4-
./testdata/grepinputx:5:Pattern
--
./testdata/grepinputx-39-nineteen
./testdata/grepinputx-40-twenty
./testdata/grepinputx-41-
./testdata/grepinputx:42:This line contains pattern not on a line by itself.
RC=0
---------------------------- Test 31 -----------------------------
./testdata/grepinput:7:PATTERN at the start of a line.
./testdata/grepinput:8:In the middle of a line, PATTERN appears.
./testdata/grepinput-9-
./testdata/grepinput:10:This pattern is in lower case.
./testdata/grepinput-11-
./testdata/grepinput-12-Here follows a whole lot of stuff that makes the file over 24K long.
./testdata/grepinput-13-
--
./testdata/grepinput:610:Check up on PATTERN near the end.
./testdata/grepinput-611-This is the last line of this file.
--
./testdata/grepinputx:3:Here is the pattern again.
./testdata/grepinputx-4-
./testdata/grepinputx:5:Pattern
./testdata/grepinputx-6-That time it was on a line by itself.
./testdata/grepinputx-7-
./testdata/grepinputx-8-To pat or not to pat, that is the question.
--
./testdata/grepinputx:42:This line contains pattern not on a line by itself.
./testdata/grepinputx-43-This is the last line of this file.
RC=0
---------------------------- Test 32 -----------------------------
./testdata/grepinputx
RC=0
---------------------------- Test 33 -----------------------------
pcregrep: Failed to open ./testdata/grepnonexist: No such file or directory
RC=2
---------------------------- Test 34 -----------------------------
RC=2
---------------------------- Test 35 -----------------------------
./testdata/grepinput8
./testdata/grepinputx
RC=0
---------------------------- Test 36 -----------------------------
./testdata/grepinput3
./testdata/grepinputx
RC=0
---------------------------- Test 37 -----------------------------
aaaaa0
aaaaa2
010203040506
RC=0
======== STDERR ========
pcregrep: pcre_exec() gave error -8 while matching this text:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
pcregrep: pcre_exec() gave error -8 while matching this text:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
pcregrep: Error -8, -21 or -27 means that a resource limit was exceeded.
pcregrep: Check your regex for nested unlimited loops.
---------------------------- Test 38 ------------------------------
This line contains a binary zero here >< for testing.
RC=0
---------------------------- Test 39 ------------------------------
This is a line before the binary zero.
This line contains a binary zero here >< for testing.
RC=0
---------------------------- Test 40 ------------------------------
This line contains a binary zero here >< for testing.
This is a line after the binary zero.
RC=0
---------------------------- Test 41 ------------------------------
before the binary zero
after the binary zero
RC=0
---------------------------- Test 42 ------------------------------
./testdata/grepinput:595:before the binary zero
./testdata/grepinput:597:after the binary zero
RC=0
---------------------------- Test 43 ------------------------------
595:before
595:zero
596:zero
597:after
597:zero
RC=0
---------------------------- Test 44 ------------------------------
595:before
595:zero
596:zero
597:zero
RC=0
---------------------------- Test 45 ------------------------------
10:pattern
595:binary
596:binary
597:binary
RC=0
---------------------------- Test 46 ------------------------------
pcregrep: Error in 2nd command-line regex at offset 9: missing )
RC=2
---------------------------- Test 47 ------------------------------
AB.VE
RC=0
---------------------------- Test 48 ------------------------------
ABOVE the elephant
AB.VE
AB.VE the turtle
RC=0
---------------------------- Test 49 ------------------------------
ABOVE the elephant
AB.VE
AB.VE the turtle
PUT NEW DATA ABOVE THIS LINE.
RC=0
---------------------------- Test 50 ------------------------------
RC=1
---------------------------- Test 51 ------------------------------
over the lazy dog.
This time it jumps and jumps and jumps.
RC=0
---------------------------- Test 52 ------------------------------
fox jumps
This time it jumps and jumps and jumps.
RC=0
---------------------------- Test 53 ------------------------------
36972,6
36990,4
37024,4
37066,5
37083,4
RC=0
---------------------------- Test 54 ------------------------------
595:15,6
595:33,4
596:28,4
597:15,5
597:32,4
RC=0
---------------------------- Test 55 -----------------------------
Here is the pattern again.
That time it was on a line by itself.
This line contains pattern not on a line by itself.
RC=0
---------------------------- Test 56 -----------------------------
./testdata/grepinput:456
./testdata/grepinput3:0
./testdata/grepinput8:0
./testdata/grepinputv:1
./testdata/grepinputx:0
RC=0
---------------------------- Test 57 -----------------------------
./testdata/grepinput:456
./testdata/grepinputv:1
RC=0
---------------------------- Test 58 -----------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
Check up on PATTERN near the end.
RC=0
---------------------------- Test 59 -----------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
Check up on PATTERN near the end.
RC=0
---------------------------- Test 60 -----------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
Check up on PATTERN near the end.
RC=0
---------------------------- Test 61 -----------------------------
PATTERN at the start of a line.
In the middle of a line, PATTERN appears.
Check up on PATTERN near the end.
RC=0
---------------------------- Test 62 -----------------------------
pcregrep: pcre_exec() gave error -8 while matching text that starts:
This is a file of miscellaneous text that is used as test data for checking
that the pcregrep command is working correctly. The file must be more than 24K
long so that it needs more than a single read
pcregrep: Error -8, -21 or -27 means that a resource limit was exceeded.
pcregrep: Check your regex for nested unlimited loops.
RC=1
---------------------------- Test 63 -----------------------------
pcregrep: pcre_exec() gave error -21 while matching text that starts:
This is a file of miscellaneous text that is used as test data for checking
that the pcregrep command is working correctly. The file must be more than 24K
long so that it needs more than a single read
pcregrep: Error -8, -21 or -27 means that a resource limit was exceeded.
pcregrep: Check your regex for nested unlimited loops.
RC=1
---------------------------- Test 64 ------------------------------
appears
RC=0
---------------------------- Test 65 ------------------------------
pear
RC=0
---------------------------- Test 66 ------------------------------
RC=0
---------------------------- Test 67 ------------------------------
RC=0
---------------------------- Test 68 ------------------------------
pear
RC=0
---------------------------- Test 69 -----------------------------
1:This is a second file of input for the pcregrep tests.
2:
4:
5:Pattern
6:That time it was on a line by itself.
7:
8:To pat or not to pat, that is the question.
9:
10:complete pair
11:of lines
12:
13:That was a complete pair
14:of lines all by themselves.
15:
16:complete pair
17:of lines
18:
19:And there they were again, to check line numbers.
20:
21:one
22:two
23:three
24:four
25:five
26:six
27:seven
28:eight
29:nine
30:ten
31:eleven
32:twelve
33:thirteen
34:fourteen
35:fifteen
36:sixteen
37:seventeen
38:eighteen
39:nineteen
40:twenty
41:
43:This is the last line of this file.
RC=0
---------------------------- Test 70 -----------------------------
triple: t1_txt s1_tag s_txt p_tag p_txt o_tag o_txt
triple: t3_txt s2_tag s_txt p_tag p_txt o_tag o_txt
triple: t4_txt s1_tag s_txt p_tag p_txt o_tag o_txt
triple: t6_txt s2_tag s_txt p_tag p_txt o_tag o_txt
RC=0
---------------------------- Test 71 -----------------------------
01
RC=0
---------------------------- Test 72 -----------------------------
010203040506
RC=0
---------------------------- Test 73 -----------------------------
01
RC=0
---------------------------- Test 74 -----------------------------
01
02
RC=0
---------------------------- Test 75 -----------------------------
010203040506
RC=0
---------------------------- Test 76 -----------------------------
01
02
RC=0
---------------------------- Test 77 -----------------------------
01
03
RC=0
---------------------------- Test 78 -----------------------------
010203040506
RC=0
---------------------------- Test 79 -----------------------------
01
03
RC=0
---------------------------- Test 80 -----------------------------
01
RC=0
---------------------------- Test 81 -----------------------------
010203040506
RC=0
---------------------------- Test 82 -----------------------------
01
RC=0
---------------------------- Test 83 -----------------------------
pcregrep: line 4 of file ./testdata/grepinput3 is too long for the internal buffer
pcregrep: check the --buffer-size option
RC=2
---------------------------- Test 84 -----------------------------
testdata/grepinputv:fox jumps
testdata/grepinputx:complete pair
testdata/grepinputx:That was a complete pair
testdata/grepinputx:complete pair
testdata/grepinput3:triple: t7_txt s1_tag s_txt p_tag p_txt o_tag o_txt
RC=0
---------------------------- Test 85 -----------------------------
./testdata/grepinput3:Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
RC=0
---------------------------- Test 86 -----------------------------
Binary file ./testdata/grepbinary matches
RC=0
---------------------------- Test 87 -----------------------------
RC=1
---------------------------- Test 88 -----------------------------
Binary file ./testdata/grepbinary matches
RC=0
---------------------------- Test 89 -----------------------------
RC=1
---------------------------- Test 90 -----------------------------
RC=1
---------------------------- Test 91 -----------------------------
The quick brown fx jumps over the lazy dog.
RC=0
---------------------------- Test 92 -----------------------------
The quick brown fx jumps over the lazy dog.
RC=0
---------------------------- Test 93 -----------------------------
The quick brown fx jumps over the lazy dog.
RC=0
---------------------------- Test 94 -----------------------------
./testdata/grepinput8
./testdata/grepinputx
RC=0
---------------------------- Test 95 -----------------------------
testdata/grepinputx:complete pair
testdata/grepinputx:That was a complete pair
testdata/grepinputx:complete pair
RC=0
---------------------------- Test 96 -----------------------------
./testdata/grepinput3
./testdata/grepinput8
./testdata/grepinputx
RC=0
---------------------------- Test 97 -----------------------------
./testdata/grepinput3
./testdata/grepinputx
RC=0
---------------------------- Test 98 -----------------------------
./testdata/grepinputx
RC=0
---------------------------- Test 99 -----------------------------
./testdata/grepinput3
./testdata/grepinputx
RC=0
---------------------------- Test 100 ------------------------------
./testdata/grepinput:zerothe.
./testdata/grepinput:zeroa
./testdata/grepinput:zerothe.
RC=0
---------------------------- Test 101 ------------------------------
./testdata/grepinput:.|zero|the|.
./testdata/grepinput:zero|a
./testdata/grepinput:.|zero|the|.
RC=0
---------------------------- Test 102 -----------------------------
2:
5:
7:
9:
12:
14:
RC=0
---------------------------- Test 103 -----------------------------
RC=0
---------------------------- Test 104 -----------------------------
2:
5:
7:
9:
12:
14:
RC=0
---------------------------- Test 105 -----------------------------
triple: t1_txt s1_tag s_txt p_tag p_txt o_tag o_txt

triple: t2_txt s1_tag s_txt p_tag p_txt o_tag
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

triple: t3_txt s2_tag s_txt p_tag p_txt o_tag o_txt

triple: t4_txt s1_tag s_txt p_tag p_txt o_tag o_txt

triple: t5_txt s1_tag s_txt p_tag p_txt o_tag
o_txt

triple: t6_txt s2_tag s_txt p_tag p_txt o_tag o_txt

triple: t7_txt s1_tag s_txt p_tag p_txt o_tag o_txt
RC=0
---------------------------- Test 106 -----------------------------
a
RC=0
---------------------------- Test 107 -----------------------------
1:0,1
2:0,1
2:1,1
2:2,1
2:3,1
2:4,1
RC=0
---------------------------- Test 108 ------------------------------
RC=0
---------------------------- Test 109 -----------------------------
RC=0
+12
View File
@@ -0,0 +1,12 @@
---------------------------- Test U1 ------------------------------
1:X one
2:X two 3:X three 4:X four␍5:X five
6:X six
7:X seven…8:X eight9:X nine10:X ten
RC=0
---------------------------- Test U2 ------------------------------
12-Before 111
13-Before 22214-Before 333…15:Match
16-After 111
17-After 22218-After 333
RC=0
+16
View File
@@ -0,0 +1,16 @@
---------------------------- Test N1 ------------------------------
1:abc␍2:def␍---------------------------- Test N2 ------------------------------
1:abc␍def
2:ghi
jkl---------------------------- Test N3 ------------------------------
2:def␍3:
ghi
jkl---------------------------- Test N4 ------------------------------
2:ghi
jkl---------------------------- Test N5 ------------------------------
1:abc␍2:def
3:ghi
4:jkl---------------------------- Test N6 ------------------------------
1:abc␍2:def
3:ghi
4:jkl
+2
View File
@@ -0,0 +1,2 @@
xxx
jkl
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+5745
View File
@@ -0,0 +1,5745 @@
/-- This set of tests is for features that are compatible with all versions of
Perl >= 5.10, in non-UTF-8 mode. It should run clean for the 8-bit, 16-bit,
and 32-bit PCRE libraries. --/
< forbid 89?=ABCDEFfGILMNPTUWXZ<
/the quick brown fox/
the quick brown fox
The quick brown FOX
What do you know about the quick brown fox?
What do you know about THE QUICK BROWN FOX?
/The quick brown fox/i
the quick brown fox
The quick brown FOX
What do you know about the quick brown fox?
What do you know about THE QUICK BROWN FOX?
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
abcd\t\n\r\f\a\e9;\$\\?caxyz
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
abxyzpqrrrabbxyyyypqAzz
abxyzpqrrrabbxyyyypqAzz
aabxyzpqrrrabbxyyyypqAzz
aaabxyzpqrrrabbxyyyypqAzz
aaaabxyzpqrrrabbxyyyypqAzz
abcxyzpqrrrabbxyyyypqAzz
aabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypAzz
aaabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypqqAzz
aaabcxyzpqrrrabbxyyyypqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqqAzz
aaaabcxyzpqrrrabbxyyyypqAzz
abxyzzpqrrrabbxyyyypqAzz
aabxyzzzpqrrrabbxyyyypqAzz
aaabxyzzzzpqrrrabbxyyyypqAzz
aaaabxyzzzzpqrrrabbxyyyypqAzz
abcxyzzpqrrrabbxyyyypqAzz
aabcxyzzzpqrrrabbxyyyypqAzz
aaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
aaabcxyzpqrrrabbxyyyypABzz
aaabcxyzpqrrrabbxyyyypABBzz
>>>aaabxyzpqrrrabbxyyyypqAzz
>aaaabxyzpqrrrabbxyyyypqAzz
>>>>abcxyzpqrrrabbxyyyypqAzz
*** Failers
abxyzpqrrabbxyyyypqAzz
abxyzpqrrrrabbxyyyypqAzz
abxyzpqrrrabxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyypqAzz
aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
/^(abc){1,2}zz/
abczz
abcabczz
*** Failers
zz
abcabcabczz
>>abczz
/^(b+?|a){1,2}?c/
bc
bbc
bbbc
bac
bbac
aac
abbbbbbbbbbbc
bbbbbbbbbbbac
*** Failers
aaac
abbbbbbbbbbbac
/^(b+|a){1,2}c/
bc
bbc
bbbc
bac
bbac
aac
abbbbbbbbbbbc
bbbbbbbbbbbac
*** Failers
aaac
abbbbbbbbbbbac
/^(b+|a){1,2}?bc/
bbc
/^(b*|ba){1,2}?bc/
babc
bbabc
bababc
*** Failers
bababbc
babababc
/^(ba|b*){1,2}?bc/
babc
bbabc
bababc
*** Failers
bababbc
babababc
/^\ca\cA\c[;\c:/
\x01\x01\e;z
/^[ab\]cde]/
athing
bthing
]thing
cthing
dthing
ething
*** Failers
fthing
[thing
\\thing
/^[]cde]/
]thing
cthing
dthing
ething
*** Failers
athing
fthing
/^[^ab\]cde]/
fthing
[thing
\\thing
*** Failers
athing
bthing
]thing
cthing
dthing
ething
/^[^]cde]/
athing
fthing
*** Failers
]thing
cthing
dthing
ething
/^\/
/^ÿ/
ÿ
/^[0-9]+$/
0
1
2
3
4
5
6
7
8
9
10
100
*** Failers
abc
/^.*nter/
enter
inter
uponter
/^xxx[0-9]+$/
xxx0
xxx1234
*** Failers
xxx
/^.+[0-9][0-9][0-9]$/
x123
xx123
123456
*** Failers
123
x1234
/^.+?[0-9][0-9][0-9]$/
x123
xx123
123456
*** Failers
123
x1234
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
abc!pqr=apquxz.ixr.zzz.ac.uk
*** Failers
!pqr=apquxz.ixr.zzz.ac.uk
abc!=apquxz.ixr.zzz.ac.uk
abc!pqr=apquxz:ixr.zzz.ac.uk
abc!pqr=apquxz.ixr.zzz.ac.ukk
/:/
Well, we need a colon: somewhere
*** Fail if we don't
/([\da-f:]+)$/i
0abc
abc
fed
E
::
5f03:12C0::932e
fed def
Any old stuff
*** Failers
0zzz
gzzz
fed\x20
Any old rubbish
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
.1.2.3
A.12.123.0
*** Failers
.1.2.3333
1.2.3
1234.2.3
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1 IN SOA non-sp1 non-sp2(
1 IN SOA non-sp1 non-sp2 (
*** Failers
1IN SOA non-sp1 non-sp2(
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
a.
Z.
2.
ab-c.pq-r.
sxk.zzz.ac.uk.
x-.y-.
*** Failers
-abc.peq.
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
*.a
*.b0-a
*.c3-b.c
*.c-a.b-c
*** Failers
*.0
*.a-
*.a-b.c-
*.c-a.0-c
/^(?=ab(de))(abd)(e)/
abde
/^(?!(ab)de|x)(abd)(f)/
abdf
/^(?=(ab(cd)))(ab)/
abcd
/^[\da-f](\.[\da-f])*$/i
a.b.c.d
A.B.C.D
a.b.c.1.2.3.C
/^\".*\"\s*(;.*)?$/
\"1234\"
\"abcd\" ;
\"\" ; rhubarb
*** Failers
\"1234\" : things
/^$/
\
*** Failers
/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
ab c
*** Failers
abc
ab cde
/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
ab c
*** Failers
abc
ab cde
/^ a\ b[c ]d $/x
a bcd
a b d
*** Failers
abcd
ab d
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
abcdefhijklm
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
abcdefhijklm
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
a+ Z0+\x08\n\x1d\x12
/^[.^$|()*+?{,}]+/
.^\$(*+)|{?,?}
/^a*\w/
z
az
aaaz
a
aa
aaaa
a+
aa+
/^a*?\w/
z
az
aaaz
a
aa
aaaa
a+
aa+
/^a+\w/
az
aaaz
aa
aaaa
aa+
/^a+?\w/
az
aaaz
aa
aaaa
aa+
/^\d{8}\w{2,}/
1234567890
12345678ab
12345678__
*** Failers
1234567
/^[aeiou\d]{4,5}$/
uoie
1234
12345
aaaaa
*** Failers
123456
/^[aeiou\d]{4,5}?/
uoie
1234
12345
aaaaa
123456
/\A(abc|def)=(\1){2,3}\Z/
abc=abcabc
def=defdefdef
*** Failers
abc=defdef
/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
abcdefghijkcda2
abcdefghijkkkkcda2
/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
cataract cataract23
catatonic catatonic23
caterpillar caterpillar23
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
From abcd Mon Sep 01 12:33:02 1997
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
From abcd Mon Sep 01 12:33:02 1997
From abcd Mon Sep 1 12:33:02 1997
*** Failers
From abcd Sep 01 12:33:02 1997
/^12.34/s
12\n34
12\r34
/\w+(?=\t)/
the quick brown\t fox
/foo(?!bar)(.*)/
foobar is foolish see?
/(?:(?!foo)...|^.{0,2})bar(.*)/
foobar crowbar etc
barrel
2barrel
A barrel
/^(\D*)(?=\d)(?!123)/
abc456
*** Failers
abc123
/^1234(?# test newlines
inside)/
1234
/^1234 #comment in extended re
/x
1234
/#rhubarb
abcd/x
abcd
/^abcd#rhubarb/x
abcd
/^(a)\1{2,3}(.)/
aaab
aaaab
aaaaab
aaaaaab
/(?!^)abc/
the abc
*** Failers
abc
/(?=^)abc/
abc
*** Failers
the abc
/^[ab]{1,3}(ab*|b)/
aabbbbb
/^[ab]{1,3}?(ab*|b)/
aabbbbb
/^[ab]{1,3}?(ab*?|b)/
aabbbbb
/^[ab]{1,3}(ab*?|b)/
aabbbbb
/ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # one word, optionally followed by....
(?:
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
\(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) | # comments, or...
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
# quoted strings
)*
< (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # leading <
(?: @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* , (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
)* # further okay, if led by comma
: # closing colon
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* )? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
/x
Alan Other <user\@dom.ain>
<user\@dom.ain>
user\@dom.ain
\"A. Other\" <user.1234\@dom.ain> (a comment)
A. Other <user.1234\@dom.ain> (a comment)
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
A missing angle <user\@some.where
*** Failers
The quick brown fox
/[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional leading comment
(?:
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
# leading word
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
(?:
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
|
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
) # "special" comment or quoted string
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
)*
<
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# <
(?:
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
(?: ,
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
)* # additional domains
:
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address spec
> # >
# name and address
)
/x
Alan Other <user\@dom.ain>
<user\@dom.ain>
user\@dom.ain
\"A. Other\" <user.1234\@dom.ain> (a comment)
A. Other <user.1234\@dom.ain> (a comment)
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
A missing angle <user\@some.where
*** Failers
The quick brown fox
/abc\0def\00pqr\000xyz\0000AB/
abc\0def\00pqr\000xyz\0000AB
abc456 abc\0def\00pqr\000xyz\0000ABCDE
/abc\x0def\x00pqr\x000xyz\x0000AB/
abc\x0def\x00pqr\x000xyz\x0000AB
abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
/^[\000-\037]/
\0A
\01B
\037C
/\0*/
\0\0\0\0
/A\x0{2,3}Z/
The A\x0\x0Z
An A\0\x0\0Z
*** Failers
A\0Z
A\0\x0\0\x0Z
/^(cow|)\1(bell)/
cowcowbell
bell
*** Failers
cowbell
/^\s/
\040abc
\x0cabc
\nabc
\rabc
\tabc
*** Failers
abc
/^a b
c/x
abc
/^(a|)\1*b/
ab
aaaab
b
*** Failers
acb
/^(a|)\1+b/
aab
aaaab
b
*** Failers
ab
/^(a|)\1?b/
ab
aab
b
*** Failers
acb
/^(a|)\1{2}b/
aaab
b
*** Failers
ab
aab
aaaab
/^(a|)\1{2,3}b/
aaab
aaaab
b
*** Failers
ab
aab
aaaaab
/ab{1,3}bc/
abbbbc
abbbc
abbc
*** Failers
abc
abbbbbc
/([^.]*)\.([^:]*):[T ]+(.*)/
track1.title:TBlah blah blah
/([^.]*)\.([^:]*):[T ]+(.*)/i
track1.title:TBlah blah blah
/([^.]*)\.([^:]*):[t ]+(.*)/i
track1.title:TBlah blah blah
/^[W-c]+$/
WXY_^abc
*** Failers
wxy
/^[W-c]+$/i
WXY_^abc
wxy_^ABC
/^[\x3f-\x5F]+$/i
WXY_^abc
wxy_^ABC
/^abc$/m
abc
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
/^abc$/
abc
*** Failers
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
/\Aabc\Z/m
abc
abc\n
*** Failers
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
/\A(.)*\Z/s
abc\ndef
/\A(.)*\Z/m
*** Failers
abc\ndef
/(?:b)|(?::+)/
b::c
c::b
/[-az]+/
az-
*** Failers
b
/[az-]+/
za-
*** Failers
b
/[a\-z]+/
a-z
*** Failers
b
/[a-z]+/
abcdxyz
/[\d-]+/
12-34
*** Failers
aaa
/[\d-z]+/
12-34z
*** Failers
aaa
/\x5c/
\\
/\x20Z/
the Zoo
*** Failers
Zulu
/(abc)\1/i
abcabc
ABCabc
abcABC
/ab{3cd/
ab{3cd
/ab{3,cd/
ab{3,cd
/ab{3,4a}cd/
ab{3,4a}cd
/{4,5a}bc/
{4,5a}bc
/abc$/
abc
abc\n
*** Failers
abc\ndef
/(abc)\123/
abc\x53
/(abc)\223/
abc\x93
/(abc)\323/
abc\xd3
/(abc)\100/
abc\x40
abc\100
/(abc)\1000/
abc\x400
abc\x40\x30
abc\1000
abc\100\x30
abc\100\060
abc\100\60
/^A\8B\9C$/
A8B9C
*** Failers
A\08B\09C
/^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
ABCDEFGHIHI
/^[A\8B\9C]+$/
A8B9C
*** Failers
A8B9C\x00
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
abcdefghijkllS
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
abcdefghijk\12S
/ab\idef/
abidef
/a{0}bc/
bc
/(a|(bc)){0,0}?xyz/
xyz
/abc[\10]de/
abc\010de
/abc[\1]de/
abc\1de
/(abc)[\1]de/
abc\1de
/(?s)a.b/
a\nb
/^([^a])([^\b])([^c]*)([^d]{3,4})/
baNOTccccd
baNOTcccd
baNOTccd
bacccd
*** Failers
anything
b\bc
baccd
/[^a]/
Abc
/[^a]/i
Abc
/[^a]+/
AAAaAbc
/[^a]+/i
AAAaAbc
/[^a]+/
bbb\nccc
/[^k]$/
abc
*** Failers
abk
/[^k]{2,3}$/
abc
kbc
kabc
*** Failers
abk
akb
akk
/^\d{8,}\@.+[^k]$/
12345678\@a.b.c.d
123456789\@x.y.z
*** Failers
12345678\@x.y.uk
1234567\@a.b.c.d
/(a)\1{8,}/
aaaaaaaaa
aaaaaaaaaa
*** Failers
aaaaaaa
/[^a]/
aaaabcd
aaAabcd
/[^a]/i
aaaabcd
aaAabcd
/[^az]/
aaaabcd
aaAabcd
/[^az]/i
aaaabcd
aaAabcd
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
/P[^*]TAIRE[^*]{1,6}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
/P[^*]TAIRE[^*]{1,}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
/(\.\d\d[1-9]?)\d+/
1.230003938
1.875000282
1.235
/(\.\d\d((?=0)|\d(?=\d)))/
1.230003938
1.875000282
*** Failers
1.235
/a(?)b/
ab
/\b(foo)\s+(\w+)/i
Food is on the foo table
/foo(.*)bar/
The food is under the bar in the barn.
/foo(.*?)bar/
The food is under the bar in the barn.
/(.*)(\d*)/
I have 2 numbers: 53147
/(.*)(\d+)/
I have 2 numbers: 53147
/(.*?)(\d*)/
I have 2 numbers: 53147
/(.*?)(\d+)/
I have 2 numbers: 53147
/(.*)(\d+)$/
I have 2 numbers: 53147
/(.*?)(\d+)$/
I have 2 numbers: 53147
/(.*)\b(\d+)$/
I have 2 numbers: 53147
/(.*\D)(\d+)$/
I have 2 numbers: 53147
/^\D*(?!123)/
ABC123
/^(\D*)(?=\d)(?!123)/
ABC445
*** Failers
ABC123
/^[W-]46]/
W46]789
-46]789
*** Failers
Wall
Zebra
42
[abcd]
]abcd[
/^[W-\]46]/
W46]789
Wall
Zebra
Xylophone
42
[abcd]
]abcd[
\\backslash
*** Failers
-46]789
well
/\d\d\/\d\d\/\d\d\d\d/
01/01/2000
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
/^(a){0,0}/
bcd
abc
aab
/^(a){0,1}/
bcd
abc
aab
/^(a){0,2}/
bcd
abc
aab
/^(a){0,3}/
bcd
abc
aab
aaa
/^(a){0,}/
bcd
abc
aab
aaa
aaaaaaaa
/^(a){1,1}/
bcd
abc
aab
/^(a){1,2}/
bcd
abc
aab
/^(a){1,3}/
bcd
abc
aab
aaa
/^(a){1,}/
bcd
abc
aab
aaa
aaaaaaaa
/.*\.gif/
borfle\nbib.gif\nno
/.{0,}\.gif/
borfle\nbib.gif\nno
/.*\.gif/m
borfle\nbib.gif\nno
/.*\.gif/s
borfle\nbib.gif\nno
/.*\.gif/ms
borfle\nbib.gif\nno
/.*$/
borfle\nbib.gif\nno
/.*$/m
borfle\nbib.gif\nno
/.*$/s
borfle\nbib.gif\nno
/.*$/ms
borfle\nbib.gif\nno
/.*$/
borfle\nbib.gif\nno\n
/.*$/m
borfle\nbib.gif\nno\n
/.*$/s
borfle\nbib.gif\nno\n
/.*$/ms
borfle\nbib.gif\nno\n
/(.*X|^B)/
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/(.*X|^B)/m
abcde\n1234Xyz
BarFoo
abcde\nBar
/(.*X|^B)/s
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/(.*X|^B)/ms
abcde\n1234Xyz
BarFoo
abcde\nBar
/(?s)(.*X|^B)/
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/(?s:.*X|^B)/
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/^.*B/
**** Failers
abc\nB
/(?s)^.*B/
abc\nB
/(?m)^.*B/
abc\nB
/(?ms)^.*B/
abc\nB
/(?ms)^B/
abc\nB
/(?s)B$/
B\n
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
123456654321
/^\d\d\d\d\d\d\d\d\d\d\d\d/
123456654321
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
123456654321
/^[abc]{12}/
abcabcabcabc
/^[a-c]{12}/
abcabcabcabc
/^(a|b|c){12}/
abcabcabcabc
/^[abcdefghijklmnopqrstuvwxy0123456789]/
n
*** Failers
z
/abcde{0,0}/
abcd
*** Failers
abce
/ab[cd]{0,0}e/
abe
*** Failers
abcde
/ab(c){0,0}d/
abd
*** Failers
abcd
/a(b*)/
a
ab
abbbb
*** Failers
bbbbb
/ab\d{0}e/
abe
*** Failers
ab1e
/"([^\\"]+|\\.)*"/
the \"quick\" brown fox
\"the \\\"quick\\\" brown fox\"
/.*?/g+
abc
/\b/g+
abc
/\b/+g
abc
//g
abc
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
/a[^a]b/
acb
a\nb
/a.b/
acb
*** Failers
a\nb
/a[^a]b/s
acb
a\nb
/a.b/s
acb
a\nb
/^(b+?|a){1,2}?c/
bac
bbac
bbbac
bbbbac
bbbbbac
/^(b+|a){1,2}?c/
bac
bbac
bbbac
bbbbac
bbbbbac
/(?!\A)x/m
x\nb\n
a\bx\n
/\x0{ab}/
\0{ab}
/(A|B)*?CD/
CD
/(A|B)*CD/
CD
/(AB)*?\1/
ABABAB
/(AB)*\1/
ABABAB
/(?<!bar)foo/
foo
catfood
arfootle
rfoosh
*** Failers
barfoo
towbarfoo
/\w{3}(?<!bar)foo/
catfood
*** Failers
foo
barfoo
towbarfoo
/(?<=(foo)a)bar/
fooabar
*** Failers
bar
foobbar
/\Aabc\z/m
abc
*** Failers
abc\n
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
/(?>(\.\d\d[1-9]?))\d+/
1.230003938
1.875000282
*** Failers
1.235
/^((?>\w+)|(?>\s+))*$/
now is the time for all good men to come to the aid of the party
*** Failers
this is not a line with only words and spaces!
/(\d+)(\w)/
12345a
12345+
/((?>\d+))(\w)/
12345a
*** Failers
12345+
/(?>a+)b/
aaab
/((?>a+)b)/
aaab
/(?>(a+))b/
aaab
/(?>b)+/
aaabbbccc
/(?>a+|b+|c+)*c/
aaabbbbccccd
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
/\(((?>[^()]+)|\([^()]+\))+\)/
(abc)
(abc(def)xyz)
*** Failers
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/a(?-i)b/i
ab
Ab
*** Failers
aB
AB
/(a (?x)b c)d e/
a bcd e
*** Failers
a b cd e
abcd e
a bcde
/(a b(?x)c d (?-x)e f)/
a bcde f
*** Failers
abcdef
/(a(?i)b)c/
abc
aBc
*** Failers
abC
aBC
Abc
ABc
ABC
AbC
/a(?i:b)c/
abc
aBc
*** Failers
ABC
abC
aBC
/a(?i:b)*c/
aBc
aBBc
*** Failers
aBC
aBBC
/a(?=b(?i)c)\w\wd/
abcd
abCd
*** Failers
aBCd
abcD
/(?s-i:more.*than).*million/i
more than million
more than MILLION
more \n than Million
*** Failers
MORE THAN MILLION
more \n than \n million
/(?:(?s-i)more.*than).*million/i
more than million
more than MILLION
more \n than Million
*** Failers
MORE THAN MILLION
more \n than \n million
/(?>a(?i)b+)+c/
abc
aBbc
aBBc
*** Failers
Abc
abAb
abbC
/(?=a(?i)b)\w\wc/
abc
aBc
*** Failers
Ab
abC
aBC
/(?<=a(?i)b)(\w\w)c/
abxxc
aBxxc
*** Failers
Abxxc
ABxxc
abxxC
/(?:(a)|b)(?(1)A|B)/
aA
bB
*** Failers
aB
bA
/^(a)?(?(1)a|b)+$/
aa
b
bb
*** Failers
ab
/^(?(?=abc)\w{3}:|\d\d)$/
abc:
12
*** Failers
123
xyz
/^(?(?!abc)\d\d|\w{3}:)$/
abc:
12
*** Failers
123
xyz
/(?(?<=foo)bar|cat)/
foobar
cat
fcat
focat
*** Failers
foocat
/(?(?<!foo)cat|bar)/
foobar
cat
fcat
focat
*** Failers
foocat
/( \( )? [^()]+ (?(1) \) |) /x
abcd
(abcd)
the quick (abcd) fox
(abcd
/( \( )? [^()]+ (?(1) \) ) /x
abcd
(abcd)
the quick (abcd) fox
(abcd
/^(?(2)a|(1)(2))+$/
12
12a
12aa
*** Failers
1234
/((?i)blah)\s+\1/
blah blah
BLAH BLAH
Blah Blah
blaH blaH
*** Failers
blah BLAH
Blah blah
blaH blah
/((?i)blah)\s+(?i:\1)/
blah blah
BLAH BLAH
Blah Blah
blaH blaH
blah BLAH
Blah blah
blaH blah
/(?>a*)*/
a
aa
aaaa
/(abc|)+/
abc
abcabc
abcabcabc
xyz
/([a]*)*/
a
aaaaa
/([ab]*)*/
a
b
ababab
aaaabcde
bbbb
/([^a]*)*/
b
bbbb
aaa
/([^ab]*)*/
cccc
abab
/([a]*?)*/
a
aaaa
/([ab]*?)*/
a
b
abab
baba
/([^a]*?)*/
b
bbbb
aaa
/([^ab]*?)*/
c
cccc
baba
/(?>a*)*/
a
aaabcde
/((?>a*))*/
aaaaa
aabbaa
/((?>a*?))*/
aaaaa
aabbaa
/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
12-sep-98
12-09-98
*** Failers
sep-12-98
/(?<=(foo))bar\1/
foobarfoo
foobarfootling
*** Failers
foobar
barfoo
/(?i:saturday|sunday)/
saturday
sunday
Saturday
Sunday
SATURDAY
SUNDAY
SunDay
/(a(?i)bc|BB)x/
abcx
aBCx
bbx
BBx
*** Failers
abcX
aBCX
bbX
BBX
/^([ab](?i)[cd]|[ef])/
ac
aC
bD
elephant
Europe
frog
France
*** Failers
Africa
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
ab
aBd
xy
xY
zebra
Zambesi
*** Failers
aCD
XY
/(?<=foo\n)^bar/m
foo\nbar
*** Failers
bar
baz\nbar
/(?<=(?<!foo)bar)baz/
barbaz
barbarbaz
koobarbaz
*** Failers
baz
foobarbaz
/The cases of aaaa and aaaaaa are missed out below because Perl does things/
/differently. We know that odd, and maybe incorrect, things happen with/
/recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
/^(a\1?){4}$/
a
aa
aaa
aaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
/^(a\1?)(a\1?)(a\2?)(a\3?)$/
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
/The following tests are taken from the Perl 5.005 test suite; some of them/
/are compatible with 5.004, but I'd rather not have to sort them out./
/abc/
abc
xabcy
ababc
*** Failers
xbc
axc
abx
/ab*c/
abc
/ab*bc/
abc
abbc
abbbbc
/.{1}/
abbbbc
/.{3,4}/
abbbbc
/ab{0,}bc/
abbbbc
/ab+bc/
abbc
*** Failers
abc
abq
/ab{1,}bc/
/ab+bc/
abbbbc
/ab{1,}bc/
abbbbc
/ab{1,3}bc/
abbbbc
/ab{3,4}bc/
abbbbc
/ab{4,5}bc/
*** Failers
abq
abbbbc
/ab?bc/
abbc
abc
/ab{0,1}bc/
abc
/ab?bc/
/ab?c/
abc
/ab{0,1}c/
abc
/^abc$/
abc
*** Failers
abbbbc
abcc
/^abc/
abcc
/^abc$/
/abc$/
aabc
*** Failers
aabc
aabcd
/^/
abc
/$/
abc
/a.c/
abc
axc
/a.*c/
axyzc
/a[bc]d/
abd
*** Failers
axyzd
abc
/a[b-d]e/
ace
/a[b-d]/
aac
/a[-b]/
a-
/a[b-]/
a-
/a]/
a]
/a[]]b/
a]b
/a[^bc]d/
aed
*** Failers
abd
abd
/a[^-b]c/
adc
/a[^]b]c/
adc
*** Failers
a-c
a]c
/\ba\b/
a-
-a
-a-
/\by\b/
*** Failers
xy
yz
xyz
/\Ba\B/
*** Failers
a-
-a
-a-
/\By\b/
xy
/\by\B/
yz
/\By\B/
xyz
/\w/
a
/\W/
-
*** Failers
-
a
/a\sb/
a b
/a\Sb/
a-b
*** Failers
a-b
a b
/\d/
1
/\D/
-
*** Failers
-
1
/[\w]/
a
/[\W]/
-
*** Failers
-
a
/a[\s]b/
a b
/a[\S]b/
a-b
*** Failers
a-b
a b
/[\d]/
1
/[\D]/
-
*** Failers
-
1
/ab|cd/
abc
abcd
/()ef/
def
/$b/
/a\(b/
a(b
/a\(*b/
ab
a((b
/a\\b/
a\b
/((a))/
abc
/(a)b(c)/
abc
/a+b+c/
aabbabc
/a{1,}b{1,}c/
aabbabc
/a.+?c/
abcabc
/(a+|b)*/
ab
/(a+|b){0,}/
ab
/(a+|b)+/
ab
/(a+|b){1,}/
ab
/(a+|b)?/
ab
/(a+|b){0,1}/
ab
/[^ab]*/
cde
/abc/
*** Failers
b
/a*/
/([abc])*d/
abbbcd
/([abc])*bcd/
abcd
/a|b|c|d|e/
e
/(a|b|c|d|e)f/
ef
/abcd*efg/
abcdefg
/ab*/
xabyabbbz
xayabbbz
/(ab|cd)e/
abcde
/[abhgefdc]ij/
hij
/^(ab|cd)e/
/(abc|)ef/
abcdef
/(a|b)c*d/
abcd
/(ab|ab*)bc/
abc
/a([bc]*)c*/
abc
/a([bc]*)(c*d)/
abcd
/a([bc]+)(c*d)/
abcd
/a([bc]*)(c+d)/
abcd
/a[bcd]*dcdcde/
adcdcde
/a[bcd]+dcdcde/
*** Failers
abcde
adcdcde
/(ab|a)b*c/
abc
/((a)(b)c)(d)/
abcd
/[a-zA-Z_][a-zA-Z0-9_]*/
alpha
/^a(bc+|b[eh])g|.h$/
abh
/(bc+d$|ef*g.|h?i(j|k))/
effgz
ij
reffgz
*** Failers
effg
bcdd
/((((((((((a))))))))))/
a
/((((((((((a))))))))))\10/
aa
/(((((((((a)))))))))/
a
/multiple words of text/
*** Failers
aa
uh-uh
/multiple words/
multiple words, yeah
/(.*)c(.*)/
abcde
/\((.*), (.*)\)/
(a, b)
/[k]/
/abcd/
abcd
/a(bc)d/
abcd
/a[-]?c/
ac
/(abc)\1/
abcabc
/([a-c]*)\1/
abcabc
/(a)|\1/
a
*** Failers
ab
x
/(([a-c])b*?\2)*/
ababbbcbc
/(([a-c])b*?\2){3}/
ababbbcbc
/((\3|b)\2(a)x)+/
aaaxabaxbaaxbbax
/((\3|b)\2(a)){2,}/
bbaababbabaaaaabbaaaabba
/abc/i
ABC
XABCY
ABABC
*** Failers
aaxabxbaxbbx
XBC
AXC
ABX
/ab*c/i
ABC
/ab*bc/i
ABC
ABBC
/ab*?bc/i
ABBBBC
/ab{0,}?bc/i
ABBBBC
/ab+?bc/i
ABBC
/ab+bc/i
*** Failers
ABC
ABQ
/ab{1,}bc/i
/ab+bc/i
ABBBBC
/ab{1,}?bc/i
ABBBBC
/ab{1,3}?bc/i
ABBBBC
/ab{3,4}?bc/i
ABBBBC
/ab{4,5}?bc/i
*** Failers
ABQ
ABBBBC
/ab??bc/i
ABBC
ABC
/ab{0,1}?bc/i
ABC
/ab??bc/i
/ab??c/i
ABC
/ab{0,1}?c/i
ABC
/^abc$/i
ABC
*** Failers
ABBBBC
ABCC
/^abc/i
ABCC
/^abc$/i
/abc$/i
AABC
/^/i
ABC
/$/i
ABC
/a.c/i
ABC
AXC
/a.*?c/i
AXYZC
/a.*c/i
*** Failers
AABC
AXYZD
/a[bc]d/i
ABD
/a[b-d]e/i
ACE
*** Failers
ABC
ABD
/a[b-d]/i
AAC
/a[-b]/i
A-
/a[b-]/i
A-
/a]/i
A]
/a[]]b/i
A]B
/a[^bc]d/i
AED
/a[^-b]c/i
ADC
*** Failers
ABD
A-C
/a[^]b]c/i
ADC
/ab|cd/i
ABC
ABCD
/()ef/i
DEF
/$b/i
*** Failers
A]C
B
/a\(b/i
A(B
/a\(*b/i
AB
A((B
/a\\b/i
A\B
/((a))/i
ABC
/(a)b(c)/i
ABC
/a+b+c/i
AABBABC
/a{1,}b{1,}c/i
AABBABC
/a.+?c/i
ABCABC
/a.*?c/i
ABCABC
/a.{0,5}?c/i
ABCABC
/(a+|b)*/i
AB
/(a+|b){0,}/i
AB
/(a+|b)+/i
AB
/(a+|b){1,}/i
AB
/(a+|b)?/i
AB
/(a+|b){0,1}/i
AB
/(a+|b){0,1}?/i
AB
/[^ab]*/i
CDE
/abc/i
/a*/i
/([abc])*d/i
ABBBCD
/([abc])*bcd/i
ABCD
/a|b|c|d|e/i
E
/(a|b|c|d|e)f/i
EF
/abcd*efg/i
ABCDEFG
/ab*/i
XABYABBBZ
XAYABBBZ
/(ab|cd)e/i
ABCDE
/[abhgefdc]ij/i
HIJ
/^(ab|cd)e/i
ABCDE
/(abc|)ef/i
ABCDEF
/(a|b)c*d/i
ABCD
/(ab|ab*)bc/i
ABC
/a([bc]*)c*/i
ABC
/a([bc]*)(c*d)/i
ABCD
/a([bc]+)(c*d)/i
ABCD
/a([bc]*)(c+d)/i
ABCD
/a[bcd]*dcdcde/i
ADCDCDE
/a[bcd]+dcdcde/i
/(ab|a)b*c/i
ABC
/((a)(b)c)(d)/i
ABCD
/[a-zA-Z_][a-zA-Z0-9_]*/i
ALPHA
/^a(bc+|b[eh])g|.h$/i
ABH
/(bc+d$|ef*g.|h?i(j|k))/i
EFFGZ
IJ
REFFGZ
*** Failers
ADCDCDE
EFFG
BCDD
/((((((((((a))))))))))/i
A
/((((((((((a))))))))))\10/i
AA
/(((((((((a)))))))))/i
A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
C
/multiple words of text/i
*** Failers
AA
UH-UH
/multiple words/i
MULTIPLE WORDS, YEAH
/(.*)c(.*)/i
ABCDE
/\((.*), (.*)\)/i
(A, B)
/[k]/i
/abcd/i
ABCD
/a(bc)d/i
ABCD
/a[-]?c/i
AC
/(abc)\1/i
ABCABC
/([a-c]*)\1/i
ABCABC
/a(?!b)./
abad
/a(?=d)./
abad
/a(?=c|d)./
abad
/a(?:b|c|d)(.)/
ace
/a(?:b|c|d)*(.)/
ace
/a(?:b|c|d)+?(.)/
ace
acdbcdbe
/a(?:b|c|d)+(.)/
acdbcdbe
/a(?:b|c|d){2}(.)/
acdbcdbe
/a(?:b|c|d){4,5}(.)/
acdbcdbe
/a(?:b|c|d){4,5}?(.)/
acdbcdbe
/((foo)|(bar))*/
foobar
/a(?:b|c|d){6,7}(.)/
acdbcdbe
/a(?:b|c|d){6,7}?(.)/
acdbcdbe
/a(?:b|c|d){5,6}(.)/
acdbcdbe
/a(?:b|c|d){5,6}?(.)/
acdbcdbe
/a(?:b|c|d){5,7}(.)/
acdbcdbe
/a(?:b|c|d){5,7}?(.)/
acdbcdbe
/a(?:b|(c|e){1,2}?|d)+?(.)/
ace
/^(.+)?B/
AB
/^([^a-z])|(\^)$/
.
/^[<>]&/
<&OUT
/^(a\1?){4}$/
aaaaaaaaaa
*** Failers
AB
aaaaaaaaa
aaaaaaaaaaa
/^(a(?(1)\1)){4}$/
aaaaaaaaaa
*** Failers
aaaaaaaaa
aaaaaaaaaaa
/(?:(f)(o)(o)|(b)(a)(r))*/
foobar
/(?<=a)b/
ab
*** Failers
cb
b
/(?<!c)b/
ab
b
b
/(?:..)*a/
aba
/(?:..)*?a/
aba
/^(?:b|a(?=(.)))*\1/
abc
/^(){3,5}/
abc
/^(a+)*ax/
aax
/^((a|b)+)*ax/
aax
/^((a|bc)+)*ax/
aax
/(a|x)*ab/
cab
/(a)*ab/
cab
/(?:(?i)a)b/
ab
/((?i)a)b/
ab
/(?:(?i)a)b/
Ab
/((?i)a)b/
Ab
/(?:(?i)a)b/
*** Failers
cb
aB
/((?i)a)b/
/(?i:a)b/
ab
/((?i:a))b/
ab
/(?i:a)b/
Ab
/((?i:a))b/
Ab
/(?i:a)b/
*** Failers
aB
aB
/((?i:a))b/
/(?:(?-i)a)b/i
ab
/((?-i)a)b/i
ab
/(?:(?-i)a)b/i
aB
/((?-i)a)b/i
aB
/(?:(?-i)a)b/i
*** Failers
aB
Ab
/((?-i)a)b/i
/(?:(?-i)a)b/i
aB
/((?-i)a)b/i
aB
/(?:(?-i)a)b/i
*** Failers
Ab
AB
/((?-i)a)b/i
/(?-i:a)b/i
ab
/((?-i:a))b/i
ab
/(?-i:a)b/i
aB
/((?-i:a))b/i
aB
/(?-i:a)b/i
*** Failers
AB
Ab
/((?-i:a))b/i
/(?-i:a)b/i
aB
/((?-i:a))b/i
aB
/(?-i:a)b/i
*** Failers
Ab
AB
/((?-i:a))b/i
/((?-i:a.))b/i
*** Failers
AB
a\nB
/((?s-i:a.))b/i
a\nB
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
cabbbb
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
/(ab)\d\1/i
Ab4ab
ab4Ab
/foo\w*\d{4}baz/
foobar1234baz
/x(~~)*(?:(?:F)?)?/
x~~
/^a(?#xxx){3}c/
aaac
/^a (?#xxx) (?#yyy) {3}c/x
aaac
/(?<![cd])b/
*** Failers
B\nB
dbcb
/(?<![cd])[ab]/
dbaacb
/(?<!(c|d))b/
/(?<!(c|d))[ab]/
dbaacb
/(?<!cd)[ab]/
cdaccb
/^(?:a?b?)*$/
\
a
ab
aaa
*** Failers
dbcb
a--
aa--
/((?s)^a(.))((?m)^b$)/
a\nb\nc\n
/((?m)^b$)/
a\nb\nc\n
/(?m)^b/
a\nb\n
/(?m)^(b)/
a\nb\n
/((?m)^b)/
a\nb\n
/\n((?m)^b)/
a\nb\n
/((?s).)c(?!.)/
a\nb\nc\n
a\nb\nc\n
/((?s)b.)c(?!.)/
a\nb\nc\n
a\nb\nc\n
/^b/
/()^b/
*** Failers
a\nb\nc\n
a\nb\nc\n
/((?m)^b)/
a\nb\nc\n
/(x)?(?(1)a|b)/
*** Failers
a
a
/(x)?(?(1)b|a)/
a
/()?(?(1)b|a)/
a
/()(?(1)b|a)/
/()?(?(1)a|b)/
a
/^(\()?blah(?(1)(\)))$/
(blah)
blah
*** Failers
a
blah)
(blah
/^(\(+)?blah(?(1)(\)))$/
(blah)
blah
*** Failers
blah)
(blah
/(?(?!a)a|b)/
/(?(?!a)b|a)/
a
/(?(?=a)b|a)/
*** Failers
a
a
/(?(?=a)a|b)/
a
/(?=(a+?))(\1ab)/
aaab
/^(?=(a+?))\1ab/
/(\w+:)+/
one:
/$(?<=^(a))/
a
/(?=(a+?))(\1ab)/
aaab
/^(?=(a+?))\1ab/
*** Failers
aaab
aaab
/([\w:]+::)?(\w+)$/
abcd
xy:z:::abcd
/^[^bcd]*(c+)/
aexycd
/(a*)b+/
caab
/([\w:]+::)?(\w+)$/
abcd
xy:z:::abcd
*** Failers
abcd:
abcd:
/^[^bcd]*(c+)/
aexycd
/(>a+)ab/
/(?>a+)b/
aaab
/([[:]+)/
a:[b]:
/([[=]+)/
a=[b]=
/([[.]+)/
a.[b].
/((?>a+)b)/
aaab
/(?>(a+))b/
aaab
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
/a\Z/
*** Failers
aaab
a\nb\n
/b\Z/
a\nb\n
/b\z/
/b\Z/
a\nb
/b\z/
a\nb
*** Failers
/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
a
abc
a-b
0-9
a.b
5.6.7
the.quick.brown.fox
a100.b200.300c
12-ab.1245
*** Failers
\
.a
-a
a-
a.
a_b
a.-
a..
ab..bc
the.quick.brown.fox-
the.quick.brown.fox.
the.quick.brown.fox_
the.quick.brown.fox+
/(?>.*)(?<=(abcd|wxyz))/
alphabetabcd
endingwxyz
*** Failers
a rather long string that doesn't end with one of them
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
/(?<=\d{3}(?!999))foo/
999foo
123999foo
*** Failers
123abcfoo
/(?<=(?!...999)\d{3})foo/
999foo
123999foo
*** Failers
123abcfoo
/(?<=\d{3}(?!999)...)foo/
123abcfoo
123456foo
*** Failers
123999foo
/(?<=\d{3}...)(?<!999)foo/
123abcfoo
123456foo
*** Failers
123999foo
/<a[\s]+href[\s]*=[\s]* # find <a href=
([\"\'])? # find single or double quote
(?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space
/isx
<a href=abcd xyz
<a href=\"abcd xyz pqr\" cats
<a href=\'abcd xyz pqr\' cats
/<a\s+href\s*=\s* # find <a href=
(["'])? # find single or double quote
(?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space
/isx
<a href=abcd xyz
<a href=\"abcd xyz pqr\" cats
<a href = \'abcd xyz pqr\' cats
/<a\s+href(?>\s*)=(?>\s*) # find <a href=
(["'])? # find single or double quote
(?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space
/isx
<a href=abcd xyz
<a href=\"abcd xyz pqr\" cats
<a href = \'abcd xyz pqr\' cats
/((Z)+|A)*/
ZABCDEFG
/(Z()|A)*/
ZABCDEFG
/(Z(())|A)*/
ZABCDEFG
/((?>Z)+|A)*/
ZABCDEFG
/((?>)+|A)*/
ZABCDEFG
/a*/g
abbab
/^[\d-a]/
abcde
-things
0digit
*** Failers
bcdef
/[[:space:]]+/
> \x09\x0a\x0c\x0d\x0b<
/[[:blank:]]+/
> \x09\x0a\x0c\x0d\x0b<
/[\s]+/
> \x09\x0a\x0c\x0d\x0b<
/\s+/
> \x09\x0a\x0c\x0d\x0b<
/a b/x
ab
/(?!\A)x/m
a\nxb\n
/(?!^)x/m
a\nxb\n
/abc\Qabc\Eabc/
abcabcabc
/abc\Q(*+|\Eabc/
abc(*+|abc
/ abc\Q abc\Eabc/x
abc abcabc
*** Failers
abcabcabc
/abc#comment
\Q#not comment
literal\E/x
abc#not comment\n literal
/abc#comment
\Q#not comment
literal/x
abc#not comment\n literal
/abc#comment
\Q#not comment
literal\E #more comment
/x
abc#not comment\n literal
/abc#comment
\Q#not comment
literal\E #more comment/x
abc#not comment\n literal
/\Qabc\$xyz\E/
abc\\\$xyz
/\Qabc\E\$\Qxyz\E/
abc\$xyz
/\Gabc/
abc
*** Failers
xyzabc
/\Gabc./g
abc1abc2xyzabc3
/abc./g
abc1abc2xyzabc3
/a(?x: b c )d/
XabcdY
*** Failers
Xa b c d Y
/((?x)x y z | a b c)/
XabcY
AxyzB
/(?i)AB(?-i)C/
XabCY
*** Failers
XabcY
/((?i)AB(?-i)C|D)E/
abCE
DE
*** Failers
abcE
abCe
dE
De
/(.*)\d+\1/
abc123abc
abc123bc
/(.*)\d+\1/s
abc123abc
abc123bc
/((.*))\d+\1/
abc123abc
abc123bc
/-- This tests for an IPv6 address in the form where it can have up to
eight components, one and only one of which is empty. This must be
an internal component. --/
/^(?!:) # colon disallowed at start
(?: # start of item
(?: [0-9a-f]{1,4} | # 1-4 hex digits or
(?(1)0 | () ) ) # if null previously matched, fail; else null
: # followed by colon
){1,7} # end item; 1-7 of them required
[0-9a-f]{1,4} $ # final hex number at end of string
(?(1)|.) # check that there was an empty component
/xi
a123::a123
a123:b342::abcd
a123:b342::324e:abcd
a123:ddde:b342::324e:abcd
a123:ddde:b342::324e:dcba:abcd
a123:ddde:9999:b342::324e:dcba:abcd
*** Failers
1:2:3:4:5:6:7:8
a123:bce:ddde:9999:b342::324e:dcba:abcd
a123::9999:b342::324e:dcba:abcd
abcde:2:3:4:5:6:7:8
::1
abcd:fee0:123::
:1
1:
/[z\Qa-d]\E]/
z
a
-
d
]
*** Failers
b
/[\z\C]/
z
C
/\M/
M
/(a+)*b/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
REGular
regulaer
Regex
regulär
/Åæåä[à-ÿÀ-ß]+/
Åæåäà
Åæåäÿ
ÅæåäÀ
Åæåäß
/(?<=Z)X./
\x84XAZXB
/ab cd (?x) de fg/
ab cd defg
/ab cd(?x) de fg/
ab cddefg
** Failers
abcddefg
/(?<![^f]oo)(bar)/
foobarX
** Failers
boobarX
/(?<![^f])X/
offX
** Failers
onyX
/(?<=[^f])X/
onyX
** Failers
offX
/^/mg
a\nb\nc\n
\
/(?<=C\n)^/mg
A\nC\nC\n
/(?:(?(1)a|b)(X))+/
bXaX
/(?:(?(1)\1a|b)(X|Y))+/
bXXaYYaY
bXYaXXaX
/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
bXXaYYaY
/[[,abc,]+]/
abc]
a,b]
[a,b,c]
/(?-x: )/x
A\x20B
"(?x)(?-x: \s*#\s*)"
A # B
** Failers
#
"(?x-is)(?:(?-ixs) \s*#\s*) include"
A #include
** Failers
A#include
A #Include
/a*b*\w/
aaabbbb
aaaa
a
/a*b?\w/
aaabbbb
aaaa
a
/a*b{0,4}\w/
aaabbbb
aaaa
a
/a*b{0,}\w/
aaabbbb
aaaa
a
/a*\d*\w/
0a
a
/a*b *\w/x
a
/a*b#comment
*\w/x
a
/a* b *\w/x
a
/^\w+=.*(\\\n.*)*/
abc=xyz\\\npqr
/(?=(\w+))\1:/
abcd:
/^(?=(\w+))\1:/
abcd:
/^\Eabc/
abc
/^[\Eabc]/
a
** Failers
E
/^[a-\Ec]/
b
** Failers
-
E
/^[a\E\E-\Ec]/
b
** Failers
-
E
/^[\E\Qa\E-\Qz\E]+/
b
** Failers
-
/^[a\Q]bc\E]/
a
]
c
/^[a-\Q\E]/
a
-
/^(a()*)*/
aaaa
/^(?:a(?:(?:))*)*/
aaaa
/^(a()+)+/
aaaa
/^(?:a(?:(?:))+)+/
aaaa
/(a){0,3}(?(1)b|(c|))*D/
abbD
ccccD
D
/(a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?>a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?:a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/\Z/g
abc\n
/^(?s)(?>.*)(?<!\n)/
abc
abc\n
/^(?![^\n]*\n\z)/
abc
abc\n
/\z(?<!\n)/
abc
abc\n
/(.*(.)?)*/
abcd
/( (A | (?(1)0|) )* )/x
abcd
/( ( (?(1)0|) )* )/x
abcd
/( (?(1)0|)* )/x
abcd
/[[:abcd:xyz]]/
a]
:]
/[abc[:x\]pqr]/
a
[
:
]
p
/.*[op][xyz]/
fooabcfoo
/(?(?=.*b)b|^)/
adc
abc
/(?(?=^.*b)b|^)/
adc
abc
/(?(?=.*b)b|^)*/
adc
abc
/(?(?=.*b)b|^)+/
adc
abc
/(?(?=b).*b|^d)/
abc
/(?(?=.*b).*b|^d)/
abc
/^%((?(?=[a])[^%])|b)*%$/
%ab%
/(?i)a(?-i)b|c/
XabX
XAbX
CcC
** Failers
XABX
/[\x00-\xff\s]+/
\x0a\x0b\x0c\x0d
/^\c/
?
/(abc)\1/i
abc
/(abc)\1/
abc
/[^a]*/i
12abc
12ABC
/[^a]*+/i
12abc
12ABC
/[^a]*?X/i
** Failers
12abc
12ABC
/[^a]+?X/i
** Failers
12abc
12ABC
/[^a]?X/i
12aXbcX
12AXBCX
BCX
/[^a]??X/i
12aXbcX
12AXBCX
BCX
/[^a]?+X/i
12aXbcX
12AXBCX
BCX
/[^a]{2,3}/i
abcdef
ABCDEF
/[^a]{2,3}?/i
abcdef
ABCDEF
/[^a]{2,3}+/i
abcdef
ABCDEF
/((a|)+)+Z/
Z
/(a)b|(a)c/
ac
/(?>(a))b|(a)c/
ac
/(?=(a))ab|(a)c/
ac
/((?>(a))b|(a)c)/
ac
/((?>(a))b|(a)c)++/
ac
/(?:(?>(a))b|(a)c)++/
ac
/(?=(?>(a))b|(a)c)(..)/
ac
/(?>(?>(a))b|(a)c)/
ac
/(?:(?>([ab])))+a=/+
=ba=
/(?>([ab]))+a=/+
=ba=
/((?>(a+)b)+(aabab))/
aaaabaaabaabab
/(?>a+|ab)+?c/
aabc
/(?>a+|ab)+c/
aabc
/(?:a+|ab)+c/
aabc
/(?(?=(a))a)/
a
/(?(?=(a))a)(b)/
ab
/^(?:a|ab)++c/
aaaabc
/^(?>a|ab)++c/
aaaabc
/^(?:a|ab)+c/
aaaabc
/(?=abc){3}abc/+
abcabcabc
** Failers
xyz
/(?=abc)+abc/+
abcabcabc
** Failers
xyz
/(?=abc)++abc/+
abcabcabc
** Failers
xyz
/(?=abc){0}xyz/
xyz
/(?=abc){1}xyz/
** Failers
xyz
/(?=(a))?./
ab
bc
/(?=(a))??./
ab
bc
/^(?=(?1))?[az]([abc])d/
abd
zcdxx
/^(?!a){0}\w+/
aaaaa
/(?<=(abc))?xyz/
abcxyz
pqrxyz
/^[\g<a>]+/
ggg<<<aaa>>>
** Failers
\\ga
/^[\ga]+/
gggagagaxyz
/^[:a[:digit:]]+/
aaaa444:::Z
/^[:a[:digit:]:b]+/
aaaa444:::bbbZ
/[:a]xxx[b:]/
:xxx:
/(?<=a{2})b/i
xaabc
** Failers
xabc
/(?<!a{2})b/i
xabc
** Failers
xaabc
/(?<=a\h)c/
xa c
/(?<=[^a]{2})b/
axxbc
aAAbc
** Failers
xaabc
/(?<=[^a]{2})b/i
axxbc
** Failers
aAAbc
xaabc
/(?<=a\H)c/
abc
/(?<=a\V)c/
abc
/(?<=a\v)c/
a\nc
/(?(?=c)c|d)++Y/
XcccddYX
/(?(?=c)c|d)*+Y/
XcccddYX
/^(a{2,3}){2,}+a/
aaaaaaa
** Failers
aaaaaa
aaaaaaaaa
/^(a{2,3})++a/
** Failers
aaaaaa
/^(a{2,3})*+a/
** Failers
aaaaaa
/ab\Cde/
abXde
/(?<=ab\Cde)X/
abZdeX
/a[\CD]b/
aCb
aDb
/a[\C-X]b/
aJb
/\H\h\V\v/
X X\x0a
X\x09X\x0b
** Failers
\xa0 X\x0a
/\H*\h+\V?\v{3,4}/
\x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
\x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
\x09\x20\xa0\x0a\x0b\x0c
** Failers
\x09\x20\xa0\x0a\x0b
/\H{3,4}/
XY ABCDE
XY PQR ST
/.\h{3,4}./
XY AB PQRS
/\h*X\h?\H+Y\H?Z/
>XNNNYZ
> X NYQZ
** Failers
>XYZ
> X NY Z
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
>XY\x0aZ\x0aA\x0bNN\x0c
>\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
/(foo)\Kbar/
foobar
/(foo)(\Kbar|baz)/
foobar
foobaz
/(foo\Kbar)baz/
foobarbaz
/abc\K|def\K/g+
Xabcdefghi
/ab\Kc|de\Kf/g+
Xabcdefghi
/(?=C)/g+
ABCDECBA
/^abc\K/+
abcdef
** Failers
defabcxyz
/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
ababababbbabZXXXX
/(?<A>tom|bon)-\g{A}/
tom-tom
bon-bon
/(^(a|b\g{-1}))/
bacxxx
/(?|(abc)|(xyz))\1/
abcabc
xyzxyz
** Failers
abcxyz
xyzabc
/(?|(abc)|(xyz))(?1)/
abcabc
xyzabc
** Failers
xyzxyz
/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
XYabcdY
/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
XYabcdY
/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
XYabcdY
/(?'abc'\w+):\k<abc>{2}/
a:aaxyz
ab:ababxyz
** Failers
a:axyz
ab:abxyz
/(?'abc'\w+):\g{abc}{2}/
a:aaxyz
ab:ababxyz
** Failers
a:axyz
ab:abxyz
/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
abd
ce
/^(a.)\g-1Z/
aXaXZ
/^(a.)\g{-1}Z/
aXaXZ
/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
abcd
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
(?<ADDRESS_PAT>\d+)
)/x
metcalfe 33
/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
1.2.3.4
131.111.10.206
10.0.0.0
** Failers
10.6
455.3.4.5
/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
1.2.3.4
131.111.10.206
10.0.0.0
** Failers
10.6
455.3.4.5
/^(\w++|\s++)*$/
now is the time for all good men to come to the aid of the party
*** Failers
this is not a line with only words and spaces!
/(\d++)(\w)/
12345a
*** Failers
12345+
/a++b/
aaab
/(a++b)/
aaab
/(a++)b/
aaab
/([^()]++|\([^()]*\))+/
((abc(ade)ufh()()x
/\(([^()]++|\([^()]+\))+\)/
(abc)
(abc(def)xyz)
*** Failers
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/^([^()]|\((?1)*\))*$/
abc
a(b)c
a(b(c))d
*** Failers)
a(b(c)d
/^>abc>([^()]|\((?1)*\))*<xyz<$/
>abc>123<xyz<
>abc>1(2)3<xyz<
>abc>(1(2)3)<xyz<
/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
1221
Satanoscillatemymetallicsonatas
AmanaplanacanalPanama
AblewasIereIsawElba
*** Failers
Thequickbrownfox
/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
12
(((2+2)*-3)-7)
-12
*** Failers
((2+2)*-3)-7)
/^(x(y|(?1){2})z)/
xyz
xxyzxyzz
*** Failers
xxyzz
xxyzxyzxyzz
/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x
<>
<abcd>
<abc <123> hij>
<abc <def> hij>
<abc<>def>
<abc<>
*** Failers
<abc
/^a+(*FAIL)/
aaaaaa
/a+b?c+(*FAIL)/
aaabccc
/a+b?(*PRUNE)c+(*FAIL)/
aaabccc
/a+b?(*COMMIT)c+(*FAIL)/
aaabccc
/a+b?(*SKIP)c+(*FAIL)/
aaabcccaaabccc
/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
aaaxxxxxx
aaa++++++
bbbxxxxx
bbb+++++
cccxxxx
ccc++++
dddddddd
/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
aaaxxxxxx
aaa++++++
bbbxxxxx
bbb+++++
cccxxxx
ccc++++
dddddddd
/a+b?(*THEN)c+(*FAIL)/
aaabccc
/(A (A|B(*ACCEPT)|C) D)(E)/x
AB
ABX
AADE
ACDE
** Failers
AD
/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
1221
Satan, oscillate my metallic sonatas!
A man, a plan, a canal: Panama!
Able was I ere I saw Elba.
*** Failers
The quick brown fox
/^((.)(?1)\2|.)$/
a
aba
aabaa
abcdcba
pqaabaaqp
ablewasiereisawelba
rhubarb
the quick brown fox
/(a)(?<=b(?1))/
baz
** Failers
caz
/(?<=b(?1))(a)/
zbaaz
** Failers
aaa
/(?<X>a)(?<=b(?&X))/
baz
/^(?|(abc)|(def))\1/
abcabc
defdef
** Failers
abcdef
defabc
/^(?|(abc)|(def))(?1)/
abcabc
defabc
** Failers
defdef
abcdef
/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
a\"aaaaa
b\"aaaaa
** Failers
b\"11111
/(?:(?1)|B)(A(*F)|C)/
ABCD
CCD
** Failers
CAD
/^(?:(?1)|B)(A(*F)|C)/
CCD
BCD
** Failers
ABCD
CAD
BAD
/(?:(?1)|B)(A(*ACCEPT)XX|C)D/
AAD
ACD
BAD
BCD
BAX
** Failers
ACX
ABC
/(?(DEFINE)(A))B(?1)C/
BAC
/(?(DEFINE)((A)\2))B(?1)C/
BAAC
/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
(ab(cd)ef)
/^(?=a(*SKIP)b|ac)/
** Failers
ac
/^(?=a(*PRUNE)b)/
ab
** Failers
ac
/^(?=a(*ACCEPT)b)/
ac
/(?>a\Kb)/
ab
/((?>a\Kb))/
ab
/(a\Kb)/
ab
/^a\Kcz|ac/
ac
/(?>a\Kbz|ab)/
ab
/^(?&t)(?(DEFINE)(?<t>a\Kb))$/
ab
/^([^()]|\((?1)*\))*$/
a(b)c
a(b(c)d)e
/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
0
00
0000
/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
0
00
0000
/--- This one does fail, as expected, in Perl. It needs the complex item at the
end of the pattern. A single letter instead of (B|D) makes it not fail,
which I think is a Perl bug. --- /
/A(*COMMIT)(B|D)/
ACABX
/--- Check the use of names for failure ---/
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
** Failers
AC
CB
/--- Force no study, otherwise mark is not seen. The studied version is in
test 2 because it isn't Perl-compatible. ---/
/(*MARK:A)(*SKIP:B)(C|X)/KSS
C
D
/^(A(*THEN:A)B|C(*THEN:B)D)/K
** Failers
CB
/^(?:A(*THEN:A)B|C(*THEN:B)D)/K
CB
/^(?>A(*THEN:A)B|C(*THEN:B)D)/K
CB
/--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
that we have to have something complicated such as (B|Z) at the end because,
for Perl, a simple character somehow causes an unwanted optimization to mess
with the handling of backtracking verbs. ---/
/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
AAAC
/--- Test skipping over a non-matching mark. ---/
/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
AAAC
/--- Check shorthand for MARK ---/
/A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
AAAC
/--- Don't loop! Force no study, otherwise mark is not seen. ---/
/(*:A)A+(*SKIP:A)(B|Z)/KSS
AAAC
/--- This should succeed, as a non-existent skip name disables the skip ---/
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
AAAC
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
AAAC
/--- COMMIT at the start of a pattern should act like an anchor. Again,
however, we need the complication for Perl. ---/
/(*COMMIT)(A|P)(B|P)(C|P)/
ABCDEFG
** Failers
DEFGABC
/--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
/(\w+)(?>b(*COMMIT))\w{2}/
abbb
/(\w+)b(*COMMIT)\w{2}/
abbb
/--- Check opening parens in comment when seeking forward reference. ---/
/(?&t)(?#()(?(DEFINE)(?<t>a))/
bac
/--- COMMIT should override THEN ---/
/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
yes
/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
yes
/b?(*SKIP)c/
bc
abc
/(*SKIP)bc/
a
/(*SKIP)b/
a
/(?P<abn>(?P=abn)xxx|)+/
xxx
/(?i:([^b]))(?1)/
aa
aA
** Failers
ab
aB
Ba
ba
/^(?&t)*+(?(DEFINE)(?<t>a))\w$/
aaaaaaX
** Failers
aaaaaa
/^(?&t)*(?(DEFINE)(?<t>a))\w$/
aaaaaaX
aaaaaa
/^(a)*+(\w)/
aaaaX
YZ
** Failers
aaaa
/^(?:a)*+(\w)/
aaaaX
YZ
** Failers
aaaa
/^(a)++(\w)/
aaaaX
** Failers
aaaa
YZ
/^(?:a)++(\w)/
aaaaX
** Failers
aaaa
YZ
/^(a)?+(\w)/
aaaaX
YZ
/^(?:a)?+(\w)/
aaaaX
YZ
/^(a){2,}+(\w)/
aaaaX
** Failers
aaa
YZ
/^(?:a){2,}+(\w)/
aaaaX
** Failers
aaa
YZ
/(a|)*(?1)b/
b
ab
aab
/(a)++(?1)b/
** Failers
ab
aab
/(a)*+(?1)b/
** Failers
ab
aab
/(?1)(?:(b)){0}/
b
/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
foo(bar(baz)+baz(bop))
/(A (A|B(*ACCEPT)|C) D)(E)/x
AB
/\A.*?(a|bc)/
ba
/\A.*?(?:a|bc)++/
ba
/\A.*?(a|bc)++/
ba
/\A.*?(?:a|bc|d)/
ba
/(?:(b))++/
beetle
/(?(?=(a(*ACCEPT)z))a)/
a
/^(a)(?1)+ab/
aaaab
/^(a)(?1)++ab/
aaaab
/^(?=a(*:M))aZ/K
aZbc
/^(?!(*:M)b)aZ/K
aZbc
/(?(DEFINE)(a))?b(?1)/
backgammon
/^\N+/
abc\ndef
/^\N{1,}/
abc\ndef
/(?(R)a+|(?R)b)/
aaaabcde
/(?(R)a+|((?R))b)/
aaaabcde
/((?(R)a+|(?1)b))/
aaaabcde
/((?(R1)a+|(?1)b))/
aaaabcde
/((?(R)a|(?1)))*/
aaa
/((?(R)a|(?1)))+/
aaa
/a(*:any
name)/K
abc
/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
a
ba
bba
/--- Checking revised (*THEN) handling ---/
/--- Capture ---/
/^.*? (a(*THEN)b) c/x
aabc
/^.*? (a(*THEN)b|(*F)) c/x
aabc
/^.*? ( (a(*THEN)b) | (*F) ) c/x
aabc
/^.*? ( (a(*THEN)b) ) c/x
aabc
/--- Non-capture ---/
/^.*? (?:a(*THEN)b) c/x
aabc
/^.*? (?:a(*THEN)b|(*F)) c/x
aabc
/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
aabc
/^.*? (?: (?:a(*THEN)b) ) c/x
aabc
/--- Atomic ---/
/^.*? (?>a(*THEN)b) c/x
aabc
/^.*? (?>a(*THEN)b|(*F)) c/x
aabc
/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
aabc
/^.*? (?> (?>a(*THEN)b) ) c/x
aabc
/--- Possessive capture ---/
/^.*? (a(*THEN)b)++ c/x
aabc
/^.*? (a(*THEN)b|(*F))++ c/x
aabc
/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
aabc
/^.*? ( (a(*THEN)b)++ )++ c/x
aabc
/--- Possessive non-capture ---/
/^.*? (?:a(*THEN)b)++ c/x
aabc
/^.*? (?:a(*THEN)b|(*F))++ c/x
aabc
/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
aabc
/^.*? (?: (?:a(*THEN)b)++ )++ c/x
aabc
/--- Condition assertion ---/
/^(?(?=a(*THEN)b)ab|ac)/
ac
/--- Condition ---/
/^.*?(?(?=a)a|b(*THEN)c)/
ba
/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
ba
/^.*?(?(?=a)a(*THEN)b|c)/
ac
/--- Assertion ---/
/^.*(?=a(*THEN)b)/
aabc
/------------------------------/
/(?>a(*:m))/imsxSK
a
/(?>(a)(*:m))/imsxSK
a
/(?<=a(*ACCEPT)b)c/
xacd
/(?<=(a(*ACCEPT)b))c/
xacd
/(?<=(a(*COMMIT)b))c/
xabcd
** Failers
xacd
/(?<!a(*FAIL)b)c/
xcd
acd
/(?<=a(*:N)b)c/K
xabcd
/(?<=a(*PRUNE)b)c/
xabcd
/(?<=a(*SKIP)b)c/
xabcd
/(?<=a(*THEN)b)c/
xabcd
/(a)(?2){2}(.)/
abcd
/(*MARK:A)(*PRUNE:B)(C|X)/KS
C
D
/(*MARK:A)(*PRUNE:B)(C|X)/KSS
C
D
/(*MARK:A)(*THEN:B)(C|X)/KS
C
D
/(*MARK:A)(*THEN:B)(C|X)/KSY
C
D
/(*MARK:A)(*THEN:B)(C|X)/KSS
C
D
/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
AAAC
/--- Same --/
/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
AAAC
/A(*:A)A+(*SKIP)(B|Z) | AC/xK
AAAC
/--- This should fail, as a null name is the same as no name ---/
/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
AAAC
/--- A check on what happens after hitting a mark and them bumping along to
something that does not even start. Perl reports tags after the failures here,
though it does not when the individual letters are made into something
more complicated. ---/
/A(*:A)B|XX(*:B)Y/K
AABC
XXYZ
** Failers
XAQQ
XAQQXZZ
AXQQQ
AXXQQQ
/^(A(*THEN:A)B|C(*THEN:B)D)/K
AB
CD
** Failers
AC
CB
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
AB
CD
** Failers
AC
CB
/--- An empty name does not pass back an empty string. It is the same as if no
name were given. ---/
/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
AB
CD
/--- PRUNE goes to next bumpalong; COMMIT does not. ---/
/A(*PRUNE:A)B/K
ACAB
/--- Mark names can be duplicated ---/
/A(*:A)B|X(*:A)Y/K
AABC
XXYZ
/b(*:m)f|a(*:n)w/K
aw
** Failers
abc
/b(*:m)f|aw/K
abaw
** Failers
abc
abax
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
AAAC
/a(*PRUNE:X)bc|qq/KY
** Failers
axy
/a(*THEN:X)bc|qq/KY
** Failers
axy
/(?=a(*MARK:A)b)..x/K
abxy
** Failers
abpq
/(?=a(*MARK:A)b)..(*:Y)x/K
abxy
** Failers
abpq
/(?=a(*PRUNE:A)b)..x/K
abxy
** Failers
abpq
/(?=a(*PRUNE:A)b)..(*:Y)x/K
abxy
** Failers
abpq
/(?=a(*THEN:A)b)..x/K
abxy
** Failers
abpq
/(?=a(*THEN:A)b)..(*:Y)x/K
abxy
** Failers
abpq
/(another)?(\1?)test/
hello world test
/(another)?(\1+)test/
hello world test
/(a(*COMMIT)b){0}a(?1)|aac/
aac
/((?:a?)*)*c/
aac
/((?>a?)*)*c/
aac
/(?>.*?a)(?<=ba)/
aba
/(?:.*?a)(?<=ba)/
aba
/.*?a(*PRUNE)b/
aab
/.*?a(*PRUNE)b/s
aab
/^a(*PRUNE)b/s
aab
/.*?a(*SKIP)b/
aab
/(?>.*?a)b/s
aab
/(?>.*?a)b/
aab
/(?>^a)b/s
aab
/(?>.*?)(?<=(abcd)|(wxyz))/
alphabetabcd
endingwxyz
/(?>.*)(?<=(abcd)|(wxyz))/
alphabetabcd
endingwxyz
"(?>.*)foo"
abcdfooxyz
"(?>.*?)foo"
abcdfooxyz
/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
ac
/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
ac
/(?<=(*SKIP)ac)a/
aa
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
AAAC
/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K
acacd
/A(*SKIP:m)x|A(*SKIP:n)x|AB/K
AB
/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K
acacd
/-- Tests that try to figure out how Perl works. My hypothesis is that the
first verb that is backtracked onto is the one that acts. This seems to be
the case almost all the time, but there is one exception that is perhaps a
bug. --/
/-- This matches "aaaac"; each PRUNE advances one character until the subject
no longer starts with 5 'a's. --/
/aaaaa(*PRUNE)b|a+c/
aaaaaac
/-- Putting SKIP in front of PRUNE makes no difference, as it is never
backtracked onto, whether or not it has a label. --/
/aaaaa(*SKIP)(*PRUNE)b|a+c/
aaaaaac
/aaaaa(*SKIP:N)(*PRUNE)b|a+c/
aaaaaac
/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
aaaaaac
/-- Putting THEN in front makes no difference. */
/aaaaa(*THEN)(*PRUNE)b|a+c/
aaaaaac
/-- However, putting COMMIT in front of the prune changes it to "no match". I
think this is inconsistent and possibly a bug. For the moment, running this
test is moved out of the Perl-compatible file. --/
/aaaaa(*COMMIT)(*PRUNE)b|a+c/
/---- OK, lets play the same game again using SKIP instead of PRUNE. ----/
/-- This matches "ac" because SKIP forces the next match to start on the
sixth "a". --/
/aaaaa(*SKIP)b|a+c/
aaaaaac
/-- Putting PRUNE in front makes no difference. --/
/aaaaa(*PRUNE)(*SKIP)b|a+c/
aaaaaac
/-- Putting THEN in front makes no difference. --/
/aaaaa(*THEN)(*SKIP)b|a+c/
aaaaaac
/-- In this case, neither does COMMIT. This still matches "ac". --/
/aaaaa(*COMMIT)(*SKIP)b|a+c/
aaaaaac
/-- This gives "no match", as expected. --/
/aaaaa(*COMMIT)b|a+c/
aaaaaac
/------ Tests using THEN ------/
/-- This matches "aaaaaac", as expected. --/
/aaaaa(*THEN)b|a+c/
aaaaaac
/-- Putting SKIP in front makes no difference. --/
/aaaaa(*SKIP)(*THEN)b|a+c/
aaaaaac
/-- Putting PRUNE in front makes no difference. --/
/aaaaa(*PRUNE)(*THEN)b|a+c/
aaaaaac
/-- Putting COMMIT in front makes no difference. --/
/aaaaa(*COMMIT)(*THEN)b|a+c/
aaaaaac
/-- End of "priority" tests --/
/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
aaaaaa
/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
aaaaaa
/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
aaaaaa
/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
aaaaaa
/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
aaaac
/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
aaaac
/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
aaaac
/aaa(*MARK:A)a(*SKIP:A)b|a+c/
aaaac
/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K
aaaaaac
/.?(a|b(*THEN)c)/
ba
/(a(*COMMIT)b)c|abd/
abc
abd
/(?=a(*COMMIT)b)abc|abd/
abc
abd
/(?>a(*COMMIT)b)c|abd/
abc
abd
/a(?=b(*COMMIT)c)[^d]|abd/
abd
abc
/a(?=bc).|abd/
abd
abc
/a(?>b(*COMMIT)c)d|abd/
abceabd
/a(?>bc)d|abd/
abceabd
/(?>a(*COMMIT)b)c|abd/
abd
/(?>a(*COMMIT)c)d|abd/
abd
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
ac
/-- These tests were formerly in test 2, but changes in PCRE and Perl have
made them compatible. --/
/^(a)?(?(1)a|b)+$/
*** Failers
a
/(?=a\Kb)ab/
ab
/(?!a\Kb)ac/
ac
/^abc(?<=b\Kc)d/
abcd
/^abc(?<!b\Kq)d/
abcd
/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
AAAC
/^((abc|abcx)(*THEN)y|abcd)/
abcd
*** Failers
abcxy
/^((yes|no)(*THEN)(*F))?/
yes
/(A (.*) C? (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
/(A (.*) C? (*THEN) | A D) z/x
AbcdCBefgBhiBqz
/(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
AbcdCBefgBhiBqz
/(A (.*) C? (*THEN) | A D) \s* z/x
AbcdCBefgBhiBqz
/(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
/(A (.*) (?:C|) (*THEN) | A D) z/x
AbcdCBefgBhiBqz
/(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
/(A (.*) C{0,6} (*THEN) | A D) z/x
AbcdCBefgBhiBqz
/(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
AbcdCEBefgBhiBqz
/(A (.*) (CE){0,6} (*THEN) | A D) z/x
AbcdCEBefgBhiBqz
/(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
/(A (.*) (CE*){0,6} (*THEN) | A D) z/x
AbcdCBefgBhiBqz
/(?=a(*COMMIT)b|ac)ac|ac/
ac
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x
ac
/--------/
/(?(?!b(*THEN)a)bn|bnn)/
bnn
/(?!b(*SKIP)a)bn|bnn/
bnn
/(?(?!b(*SKIP)a)bn|bnn)/
bnn
/(?!b(*PRUNE)a)bn|bnn/
bnn
/(?(?!b(*PRUNE)a)bn|bnn)/
bnn
/(?!b(*COMMIT)a)bn|bnn/
bnn
/(?(?!b(*COMMIT)a)bn|bnn)/
bnn
/(?=b(*SKIP)a)bn|bnn/
bnn
/(?=b(*THEN)a)bn|bnn/
bnn
/^(?!a(*SKIP)b)/
ac
/^(?!a(*SKIP)b)../
acd
/(?!a(*SKIP)b)../
acd
/^(?(?!a(*SKIP)b))/
ac
/^(?!a(*PRUNE)b)../
acd
/(?!a(*PRUNE)b)../
acd
/(?!a(*COMMIT)b)ac|cd/
ac
/\A.*?(?:a|bc)/
ba
/^(A(*THEN)B|C(*THEN)D)/
CD
/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
/^\d*\w{4}/
1234
123
/^[^b]*\w{4}/
aaaa
aaa
/^[^b]*\w{4}/i
aaaa
aaa
/^a*\w{4}/
aaaa
aaa
/^a*\w{4}/i
aaaa
aaa
/(?(?=ab)ab)/+
ca
cd
/(?:(?<n>foo)|(?<n>bar))\k<n>/J
foofoo
barbar
/(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/J
AfooA
AbarA
** Failers
Afoofoo
Abarbar
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1 IN SOA non-sp1 non-sp2(
/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/xJ
Ax
BAxy
/^A\xZ/
A\0Z
/^A\o{123}B/
A\123B
/ ^ a + + b $ /x
aaaab
/ ^ a + #comment
+ b $ /x
aaaab
/ ^ a + #comment
#comment
+ b $ /x
aaaab
/ ^ (?> a + ) b $ /x
aaaab
/ ^ ( a + ) + + \w $ /x
aaaab
/(?:a\Kb)*+/+
ababc
/(?>a\Kb)*/+
ababc
/(?:a\Kb)*/+
ababc
/(a\Kb)*+/+
ababc
/(a\Kb)*/+
ababc
/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
acb
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
'\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
/^\w+(?>\s*)(?<=\w)/
test test
/(?P<same>a)(?P<same>b)/gJ
abbaba
/(?P<same>a)(?P<same>b)(?P=same)/gJ
abbaba
/(?P=same)?(?P<same>a)(?P<same>b)/gJ
abbaba
/(?:(?P=same)?(?:(?P<same>a)|(?P<same>b))(?P=same))+/gJ
bbbaaabaabb
/(?:(?P=same)?(?:(?P=same)(?P<same>a)(?P=same)|(?P=same)?(?P<same>b)(?P=same)){2}(?P=same)(?P<same>c)(?P=same)){2}(?P<same>z)?/gJ
bbbaaaccccaaabbbcc
/(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
acl
bdl
adl
bcl
/\sabc/
\x{0b}abc
/[\Qa]\E]+/
aa]]
/[\Q]a\E]+/
aa]]
/(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
1234abcd
/(\2)(\1)/
"Z*(|d*){216}"
"(?1)(?#?'){8}(a)"
baaaaaaaaac
"(?|(\k'Pm')|(?'Pm'))"
abcd
/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])/
\ Fred:099
/(?=.*X)X$/
\ X
/X+(?#comment)?/
>XXX<
/-- End of testinput1 --/
+1419
View File
@@ -0,0 +1,1419 @@
/-- This set of tests check Unicode property support with the DFA matching
functionality of pcre_dfa_exec(). The -dfa flag must be used with pcretest
when running it. --/
/\pL\P{Nd}/8
AB
*** Failers
A0
00
/\X./8
AB
A\x{300}BC
A\x{300}\x{301}\x{302}BC
*** Failers
\x{300}
/\X\X/8
ABC
A\x{300}B\x{300}\x{301}C
A\x{300}\x{301}\x{302}BC
*** Failers
\x{300}
/^\pL+/8
abcd
a
*** Failers
/^\PL+/8
1234
=
*** Failers
abcd
/^\X+/8
abcdA\x{300}\x{301}\x{302}
A\x{300}\x{301}\x{302}
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}
a
*** Failers
\x{300}\x{301}\x{302}
/\X?abc/8
abc
A\x{300}abc
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
\x{300}abc
*** Failers
/^\X?abc/8
abc
A\x{300}abc
*** Failers
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
\x{300}abc
/\X*abc/8
abc
A\x{300}abc
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
\x{300}abc
*** Failers
/^\X*abc/8
abc
A\x{300}abc
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
*** Failers
\x{300}abc
/^\pL?=./8
A=b
=c
*** Failers
1=2
AAAA=b
/^\pL*=./8
AAAA=b
=c
*** Failers
1=2
/^\X{2,3}X/8
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
*** Failers
X
A\x{300}\x{301}\x{302}X
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
\np\x{300}9!\$ <
** Failers
ap\x{300}9!\$ <
/^\PC/8
X
** Failers
\x7f
/^\PL/8
9
** Failers
\x{c0}
/^\PM/8
X
** Failers
\x{30f}
/^\PN/8
X
** Failers
\x{660}
/^\PP/8
X
** Failers
\x{66c}
/^\PS/8
X
** Failers
\x{f01}
/^\PZ/8
X
** Failers
\x{1680}
/^\p{Cc}/8
\x{017}
\x{09f}
** Failers
\x{0600}
/^\p{Cf}/8
\x{601}
\x{180e}
\x{061c}
\x{2066}
\x{2067}
\x{2068}
\x{2069}
** Failers
\x{09f}
/^\p{Cn}/8
** Failers
\x{09f}
/^\p{Co}/8
\x{f8ff}
** Failers
\x{09f}
/^\p{Cs}/8
\?\x{dfff}
** Failers
\x{09f}
/^\p{Ll}/8
a
** Failers
Z
\x{e000}
/^\p{Lm}/8
\x{2b0}
** Failers
a
/^\p{Lo}/8
\x{1bb}
** Failers
a
\x{2b0}
/^\p{Lt}/8
\x{1c5}
** Failers
a
\x{2b0}
/^\p{Lu}/8
A
** Failers
\x{2b0}
/^\p{Mc}/8
\x{903}
** Failers
X
\x{300}
/^\p{Me}/8
\x{488}
** Failers
X
\x{903}
\x{300}
/^\p{Mn}/8
\x{300}
\x{1a1b}
** Failers
X
\x{903}
/^\p{Nd}+/8O
0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
\x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
\x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
** Failers
X
/^\p{Nl}/8
\x{16ee}
** Failers
X
\x{966}
/^\p{No}/8
\x{b2}
\x{b3}
** Failers
X
\x{16ee}
/^\p{Pc}/8
\x5f
\x{203f}
** Failers
X
-
\x{58a}
/^\p{Pd}/8
-
\x{58a}
** Failers
X
\x{203f}
/^\p{Pe}/8
)
]
}
\x{f3b}
\x{2309}
\x{230b}
** Failers
X
\x{203f}
(
[
{
\x{f3c}
/^\p{Pf}/8
\x{bb}
\x{2019}
** Failers
X
\x{203f}
/^\p{Pi}/8
\x{ab}
\x{2018}
** Failers
X
\x{203f}
/^\p{Po}/8
!
\x{37e}
** Failers
X
\x{203f}
/^\p{Ps}/8
(
[
{
\x{f3c}
\x{2308}
\x{230a}
** Failers
X
)
]
}
\x{f3b}
/^\p{Sc}+/8
$\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
\x{9f2}
** Failers
X
\x{2c2}
/^\p{Sk}/8
\x{2c2}
** Failers
X
\x{9f2}
/^\p{Sm}+/8
+<|~\x{ac}\x{2044}
** Failers
X
\x{9f2}
/^\p{So}/8
\x{a6}
\x{482}
** Failers
X
\x{9f2}
/^\p{Zl}/8
\x{2028}
** Failers
X
\x{2029}
/^\p{Zp}/8
\x{2029}
** Failers
X
\x{2028}
/^\p{Zs}/8
\ \
\x{a0}
\x{1680}
\x{2000}
\x{2001}
** Failers
\x{2028}
\x{200d}
/\p{Nd}+(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}+?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,}(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,}?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2}(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,3}(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,3}?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}??(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(...)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(....)/8
** Failers
\x{660}\x{661}\x{662}ABC
/\p{Lu}/8i
A
a\x{10a0}B
** Failers
a
\x{1d00}
/\p{^Lu}/8i
1234
** Failers
ABC
/\P{Lu}/8i
1234
** Failers
ABC
/(?<=A\p{Nd})XYZ/8
A2XYZ
123A5XYZPQR
ABA\x{660}XYZpqr
** Failers
AXYZ
XYZ
/(?<!\pL)XYZ/8
1XYZ
AB=XYZ..
XYZ
** Failers
WXYZ
/[\p{Nd}]/8
1234
/[\p{Nd}+-]+/8
1234
12-34
12+\x{661}-34
** Failers
abcd
/[\P{Nd}]+/8
abcd
** Failers
1234
/\D+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\P{Nd}+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D]+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\P{Nd}]+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D\P{Nd}]+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\pL/8
a
A
/\pL/8i
a
A
/\p{Lu}/8
A
aZ
** Failers
abc
/\p{Lu}/8i
A
aZ
** Failers
abc
/\p{Ll}/8
a
Az
** Failers
ABC
/\p{Ll}/8i
a
Az
** Failers
ABC
/^\x{c0}$/8i
\x{c0}
\x{e0}
/^\x{e0}$/8i
\x{c0}
\x{e0}
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
** Failers
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8i
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/\x{391}+/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
/\x{391}{3,5}(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
/\x{391}{3,5}?(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
/[\x{391}\x{ff3a}]/8i
\x{391}
\x{ff3a}
\x{3b1}
\x{ff5a}
/[\x{c0}\x{391}]/8i
\x{c0}
\x{e0}
/[\x{105}-\x{109}]/8i
\x{104}
\x{105}
\x{109}
** Failers
\x{100}
\x{10a}
/[z-\x{100}]/8i
Z
z
\x{39c}
\x{178}
|
\x{80}
\x{ff}
\x{100}
\x{101}
** Failers
\x{102}
Y
y
/[z-\x{100}]/8i
/^\X/8
A
A\x{300}BC
A\x{300}\x{301}\x{302}BC
*** Failers
\x{300}
/^[\X]/8
X123
*** Failers
AXYZ
/^(\X*)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*?)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*?)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^\X(.)/8
*** Failers
A\x{300}\x{301}\x{302}
/^\X{2,3}(.)/8
A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
/^\X{2,3}?(.)/8
A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
/^\pN{2,3}X/
12X
123X
*** Failers
X
1X
1234X
/\x{100}/i8
\x{100}
\x{101}
/^\p{Han}+/8
\x{2e81}\x{3007}\x{2f804}\x{31a0}
** Failers
\x{2e7f}
/^\P{Katakana}+/8
\x{3105}
** Failers
\x{30ff}
/^[\p{Arabic}]/8
\x{06e9}
\x{060b}
** Failers
X\x{06e9}
/^[\P{Yi}]/8
\x{2f800}
** Failers
\x{a014}
\x{a4c6}
/^\p{Any}X/8
AXYZ
\x{1234}XYZ
** Failers
X
/^\P{Any}X/8
** Failers
AX
/^\p{Any}?X/8
XYZ
AXYZ
\x{1234}XYZ
** Failers
ABXYZ
/^\P{Any}?X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
ABXYZ
/^\p{Any}+X/8
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
XYZ
/^\P{Any}+X/8
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
XYZ
/^\p{Any}*X/8
XYZ
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
/^\P{Any}*X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^[\p{Any}]X/8
AXYZ
\x{1234}XYZ
** Failers
X
/^[\P{Any}]X/8
** Failers
AX
/^[\p{Any}]?X/8
XYZ
AXYZ
\x{1234}XYZ
** Failers
ABXYZ
/^[\P{Any}]?X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
ABXYZ
/^[\p{Any}]+X/8
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
XYZ
/^[\P{Any}]+X/8
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
XYZ
/^[\p{Any}]*X/8
XYZ
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
/^[\P{Any}]*X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^\p{Any}{3,5}?/8
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\p{Any}{3,5}/8
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\P{Any}{3,5}?/8
** Failers
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\p{L&}X/8
AXY
aXY
\x{1c5}XY
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]X/8
AXY
aXY
\x{1c5}XY
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^\p{L&}+X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]+X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^\p{L&}+?X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]+?X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^\P{L&}X/8
!XY
\x{1bb}XY
\x{2b0}XY
** Failers
\x{1c5}XY
AXY
/^[\P{L&}]X/8
!XY
\x{1bb}XY
\x{2b0}XY
** Failers
\x{1c5}XY
AXY
/^\x{023a}+?(\x{0130}+)/8i
\x{023a}\x{2c65}\x{0130}
/^\x{023a}+([^X])/8i
\x{023a}\x{2c65}X
/\x{c0}+\x{116}+/8i
\x{c0}\x{e0}\x{116}\x{117}
/[\x{c0}\x{116}]+/8i
\x{c0}\x{e0}\x{116}\x{117}
/Check property support in non-UTF-8 mode/
/\p{L}{4}/
123abcdefg
123abc\xc4\xc5zz
/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8
\x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
/\x{a77d}\x{1d79}/8i
\x{a77d}\x{1d79}
\x{1d79}\x{a77d}
/\x{a77d}\x{1d79}/8
\x{a77d}\x{1d79}
** Failers
\x{1d79}\x{a77d}
/^\p{Xan}/8
ABCD
1234
\x{6ca}
\x{a6c}
\x{10a7}
** Failers
_ABC
/^\p{Xan}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
** Failers
_ABC
/^\p{Xan}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xan}{2,9}/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^[\p{Xan}]/8
ABCD1234_
1234abcd_
\x{6ca}
\x{a6c}
\x{10a7}
** Failers
_ABC
/^[\p{Xan}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
** Failers
_ABC
/^>\p{Xsp}/8
>\x{1680}\x{2028}\x{0b}
** Failers
\x{0b}
/^>\p{Xsp}+/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}*/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}{2,9}/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>[\p{Xsp}]/8O
>\x{2028}\x{0b}
/^>[\p{Xsp}]+/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}/8
>\x{1680}\x{2028}\x{0b}
>\x{a0}
** Failers
\x{0b}
/^>\p{Xps}+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}+?/8
>\x{1680}\x{2028}\x{0b}
/^>\p{Xps}*/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}?/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>[\p{Xps}]/8
>\x{2028}\x{0b}
/^>[\p{Xps}]+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^\p{Xwd}/8
ABCD
1234
\x{6ca}
\x{a6c}
\x{10a7}
_ABC
** Failers
[]
/^\p{Xwd}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}{2,9}/8
A_12\x{6ca}\x{a6c}\x{10a7}
/^[\p{Xwd}]/8
ABCD1234_
1234abcd_
\x{6ca}
\x{a6c}
\x{10a7}
_ABC
** Failers
[]
/^[\p{Xwd}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/-- Unicode properties for \b abd \B --/
/\b...\B/8W
abc_
\x{37e}abc\x{376}
\x{37e}\x{376}\x{371}\x{393}\x{394}
!\x{c0}++\x{c1}\x{c2}
!\x{c0}+++++
/-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/
/\b...\B/8
abc_
** Failers
\x{37e}abc\x{376}
\x{37e}\x{376}\x{371}\x{393}\x{394}
!\x{c0}++\x{c1}\x{c2}
!\x{c0}+++++
/-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/
/\b...\B/W
abc_
!\x{c0}++\x{c1}\x{c2}
!\x{c0}+++++
/-- Caseless single negated characters > 127 need UCP support --/
/[^\x{100}]/8i
\x{100}\x{101}X
/[^\x{100}]+/8i
\x{100}\x{101}XX
/^\X/8
A\P
A\P\P
A\x{300}\x{301}\P
A\x{300}\x{301}\P\P
A\x{301}\P
A\x{301}\P\P
/^\X{2,3}/8
A\P
A\P\P
AA\P
AA\P\P
A\x{300}\x{301}\P
A\x{300}\x{301}\P\P
A\x{300}\x{301}A\x{300}\x{301}\P
A\x{300}\x{301}A\x{300}\x{301}\P\P
/^\X{2}/8
AA\P
AA\P\P
A\x{300}\x{301}A\x{300}\x{301}\P
A\x{300}\x{301}A\x{300}\x{301}\P\P
/^\X+/8
AA\P
AA\P\P
/^\X+?Z/8
AA\P
AA\P\P
/-- These are tests for extended grapheme clusters --/
/^\X/8+
G\x{34e}\x{34e}X
\x{34e}\x{34e}X
\x04X
\x{1100}X
\x{1100}\x{34e}X
\x{1b04}\x{1b04}X
*These match up to the roman letters
\x{1111}\x{1111}L,L
\x{1111}\x{1111}\x{1169}L,L,V
\x{1111}\x{ae4c}L, LV
\x{1111}\x{ad89}L, LVT
\x{1111}\x{ae4c}\x{1169}L, LV, V
\x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
\x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
\x{1111}\x{ad89}\x{11fe}L, LVT, T
\x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
\x{ad89}\x{11fe}\x{11fe}LVT, T, T
*These match just the first codepoint (invalid sequence)
\x{1111}\x{11fe}L, T
\x{ae4c}\x{1111}LV, L
\x{ae4c}\x{ae4c}LV, LV
\x{ae4c}\x{ad89}LV, LVT
\x{1169}\x{1111}V, L
\x{1169}\x{ae4c}V, LV
\x{1169}\x{ad89}V, LVT
\x{ad89}\x{1111}LVT, L
\x{ad89}\x{1169}LVT, V
\x{ad89}\x{ae4c}LVT, LV
\x{ad89}\x{ad89}LVT, LVT
\x{11fe}\x{1111}T, L
\x{11fe}\x{1169}T, V
\x{11fe}\x{ae4c}T, LV
\x{11fe}\x{ad89}T, LVT
*Test extend and spacing mark
\x{1111}\x{ae4c}\x{0711}L, LV, extend
\x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
\x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
*Test CR, LF, and control
\x0d\x{0711}CR, extend
\x0d\x{1b04}CR, spacingmark
\x0a\x{0711}LF, extend
\x0a\x{1b04}LF, spacingmark
\x0b\x{0711}Control, extend
\x09\x{1b04}Control, spacingmark
*There are no Prepend characters, so we can't test Prepend, CR
/^(?>\X{2})X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/^\X{2,4}X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/^\X{2,4}?X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/-- --/
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
/[z\x{1e9e}]+/8i
\x{1e9e}\x{00df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
/[z\x{00df}]+/8i
\x{1e9e}\x{00df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
/[z\x{1f88}]+/8i
\x{1f88}\x{1f80}
/-- Perl matches these --/
/\x{00b5}+/8i
\x{00b5}\x{039c}\x{03bc}
/\x{039c}+/8i
\x{00b5}\x{039c}\x{03bc}
/\x{03bc}+/8i
\x{00b5}\x{039c}\x{03bc}
/\x{00c5}+/8i
\x{00c5}\x{00e5}\x{212b}
/\x{00e5}+/8i
\x{00c5}\x{00e5}\x{212b}
/\x{212b}+/8i
\x{00c5}\x{00e5}\x{212b}
/\x{01c4}+/8i
\x{01c4}\x{01c5}\x{01c6}
/\x{01c5}+/8i
\x{01c4}\x{01c5}\x{01c6}
/\x{01c6}+/8i
\x{01c4}\x{01c5}\x{01c6}
/\x{01c7}+/8i
\x{01c7}\x{01c8}\x{01c9}
/\x{01c8}+/8i
\x{01c7}\x{01c8}\x{01c9}
/\x{01c9}+/8i
\x{01c7}\x{01c8}\x{01c9}
/\x{01ca}+/8i
\x{01ca}\x{01cb}\x{01cc}
/\x{01cb}+/8i
\x{01ca}\x{01cb}\x{01cc}
/\x{01cc}+/8i
\x{01ca}\x{01cb}\x{01cc}
/\x{01f1}+/8i
\x{01f1}\x{01f2}\x{01f3}
/\x{01f2}+/8i
\x{01f1}\x{01f2}\x{01f3}
/\x{01f3}+/8i
\x{01f1}\x{01f2}\x{01f3}
/\x{0345}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{0399}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{03b9}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{1fbe}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{0392}+/8i
\x{0392}\x{03b2}\x{03d0}
/\x{03b2}+/8i
\x{0392}\x{03b2}\x{03d0}
/\x{03d0}+/8i
\x{0392}\x{03b2}\x{03d0}
/\x{0395}+/8i
\x{0395}\x{03b5}\x{03f5}
/\x{03b5}+/8i
\x{0395}\x{03b5}\x{03f5}
/\x{03f5}+/8i
\x{0395}\x{03b5}\x{03f5}
/\x{0398}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03b8}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03d1}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03f4}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{039a}+/8i
\x{039a}\x{03ba}\x{03f0}
/\x{03ba}+/8i
\x{039a}\x{03ba}\x{03f0}
/\x{03f0}+/8i
\x{039a}\x{03ba}\x{03f0}
/\x{03a0}+/8i
\x{03a0}\x{03c0}\x{03d6}
/\x{03c0}+/8i
\x{03a0}\x{03c0}\x{03d6}
/\x{03d6}+/8i
\x{03a0}\x{03c0}\x{03d6}
/\x{03a1}+/8i
\x{03a1}\x{03c1}\x{03f1}
/\x{03c1}+/8i
\x{03a1}\x{03c1}\x{03f1}
/\x{03f1}+/8i
\x{03a1}\x{03c1}\x{03f1}
/\x{03a3}+/8i
\x{03A3}\x{03C2}\x{03C3}
/\x{03c2}+/8i
\x{03A3}\x{03C2}\x{03C3}
/\x{03c3}+/8i
\x{03A3}\x{03C2}\x{03C3}
/\x{03a6}+/8i
\x{03a6}\x{03c6}\x{03d5}
/\x{03c6}+/8i
\x{03a6}\x{03c6}\x{03d5}
/\x{03d5}+/8i
\x{03a6}\x{03c6}\x{03d5}
/\x{03c9}+/8i
\x{03c9}\x{03a9}\x{2126}
/\x{03a9}+/8i
\x{03c9}\x{03a9}\x{2126}
/\x{2126}+/8i
\x{03c9}\x{03a9}\x{2126}
/\x{1e60}+/8i
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e61}+/8i
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e9b}+/8i
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
/\x{1f80}+/8i
\x{1f88}\x{1f80}
/\x{004b}+/8i
\x{004b}\x{006b}\x{212a}
/\x{006b}+/8i
\x{004b}\x{006b}\x{212a}
/\x{212a}+/8i
\x{004b}\x{006b}\x{212a}
/\x{0053}+/8i
\x{0053}\x{0073}\x{017f}
/\x{0073}+/8i
\x{0053}\x{0073}\x{017f}
/\x{017f}+/8i
\x{0053}\x{0073}\x{017f}
/ist/8i
ikt
/is+t/8i
iSs\x{17f}t
ikt
/is+?t/8i
ikt
/is?t/8i
ikt
/is{2}t/8i
iskt
/^\p{Xuc}/8
$abc
@abc
`abc
\x{1234}abc
** Failers
abc
/^\p{Xuc}+/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}+?/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}+?\*/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}++/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}{3,5}/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}{3,5}?/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^[\p{Xuc}]/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^[\p{Xuc}]+/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\P{Xuc}/8
abc
** Failers
$abc
@abc
`abc
\x{1234}abc
/^[\P{Xuc}]/8
abc
** Failers
$abc
@abc
`abc
\x{1234}abc
/^A\s+Z/8W
A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
/^A[\s]+Z/8W
A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
/-- End of testinput10 --/
+143
View File
@@ -0,0 +1,143 @@
/-- These are a few representative patterns whose lengths and offsets are to be
shown when the link size is 2. This is just a doublecheck test to ensure the
sizes don't go horribly wrong when something is changed. The pattern contents
are all themselves checked in other tests. Unicode, including property support,
is required for these tests. --/
/((?i)b)/BM
/(?s)(.*X|^B)/BM
/(?s:.*X|^B)/BM
/^[[:alnum:]]/BM
/#/IxMD
/a#/IxMD
/x?+/BM
/x++/BM
/x{1,3}+/BM
/(x)*+/BM
/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/BM
|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
/(a(?1)b)/BM
/(a(?1)+b)/BM
/a(?P<name1>b|c)d(?P<longername2>e)/BM
/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/BM
/(?P<a>a)...(?P=a)bbb(?P>a)d/BM
/abc(?C255)de(?C)f/BM
/abcde/CBM
/\x{100}/8BM
/\x{1000}/8BM
/\x{10000}/8BM
/\x{100000}/8BM
/\x{10ffff}/8BM
/\x{110000}/8BM
/[\x{ff}]/8BM
/[\x{100}]/8BM
/\x80/8BM
/\xff/8BM
/\x{0041}\x{2262}\x{0391}\x{002e}/D8M
/\x{D55c}\x{ad6d}\x{C5B4}/D8M
/\x{65e5}\x{672c}\x{8a9e}/D8M
/[\x{100}]/8BM
/[Z\x{100}]/8BM
/^[\x{100}\E-\Q\E\x{150}]/B8M
/^[\QĀ\E-\QŐ\E]/B8M
/^[\QĀ\E-\QŐ\E/B8M
/[\p{L}]/BM
/[\p{^L}]/BM
/[\P{L}]/BM
/[\P{^L}]/BM
/[abc\p{L}\x{0660}]/8BM
/[\p{Nd}]/8BM
/[\p{Nd}+-]+/8BM
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iBM
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8BM
/[\x{105}-\x{109}]/8iBM
/( ( (?(1)0|) )* )/xBM
/( (?(1)0|)* )/xBM
/[a]/BM
/[a]/8BM
/[\xaa]/BM
/[\xaa]/8BM
/[^a]/BM
/[^a]/8BM
/[^\xaa]/BM
/[^\xaa]/8BM
/[^\d]/8WB
/[[:^alpha:][:^cntrl:]]+/8WB
/[[:^cntrl:][:^alpha:]]+/8WB
/[[:alpha:]]+/8WB
/[[:^alpha:]\S]+/8WB
/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/B
/(((a\2)|(a*)\g<-1>))*a?/B
/((?+1)(\1))/B
/.((?2)(?R)\1)()/B
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
/-- End of testinput11 --/
File diff suppressed because one or more lines are too long
+9
View File
@@ -0,0 +1,9 @@
/-- This test is run only when JIT support is not available. It checks that an
attempt to use it has the expected behaviour. It also tests things that
are different without JIT. --/
/abc/S+I
/a*/SI
/-- End of testinput13 --/
+345
View File
@@ -0,0 +1,345 @@
/-- This set of tests is run only with the 8-bit library. They do not require
UTF-8 or Unicode property support. The file starts with all the tests of
the POSIX interface, because that is supported only with the 8-bit library.
--/
< forbid 8W
/abc/P
abc
*** Failers
/^abc|def/P
abcdef
abcdef\B
/.*((abc)$|(def))/P
defabc
\Zdefabc
/the quick brown fox/P
the quick brown fox
*** Failers
The Quick Brown Fox
/the quick brown fox/Pi
the quick brown fox
The Quick Brown Fox
/abc.def/P
*** Failers
abc\ndef
/abc$/P
abc
abc\n
/(abc)\2/P
/(abc\1)/P
abc
/a*(b+)(z)(z)/P
aaaabbbbzzzz
aaaabbbbzzzz\O0
aaaabbbbzzzz\O1
aaaabbbbzzzz\O2
aaaabbbbzzzz\O3
aaaabbbbzzzz\O4
aaaabbbbzzzz\O5
/ab.cd/P
ab-cd
ab=cd
** Failers
ab\ncd
/ab.cd/Ps
ab-cd
ab=cd
ab\ncd
/a(b)c/PN
abc
/a(?P<name>b)c/PN
abc
/a?|b?/P
abc
** Failers
ddd\N
/\w+A/P
CDAAAAB
/\w+A/PU
CDAAAAB
/\Biss\B/I+P
Mississippi
/abc/\P
/-- End of POSIX tests --/
/a\Cb/
aXb
a\nb
** Failers (too big char)
A\x{123}B
A\o{443}B
/\x{100}/I
/\o{400}/I
/ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # one word, optionally followed by....
(?:
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
\(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) | # comments, or...
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
# quoted strings
)*
< (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # leading <
(?: @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* , (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
)* # further okay, if led by comma
: # closing colon
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* )? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
/xSI
/-- Although this saved pattern was compiled with link-size=2, it does no harm
to run this test with other link sizes because it is going to generated a
"compiled in wrong mode" error as soon as it is loaded, so the link size does
not matter. --/
<!testsaved16
<!testsaved32
/\h/SI
/\H/SI
/\v/SI
/\V/SI
/\R/SI
/[\h]/BZ
>\x09<
/[\h]+/BZ
>\x09\x20\xa0<
/[\v]/BZ
/[\H]/BZ
/[^\h]/BZ
/[\V]/BZ
/[\x0a\V]/BZ
/\777/I
/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K
XX
/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K
XX
/\u0100/<JS>
/[\u0100-\u0200]/<JS>
/[^\x00-a]{12,}[^b-\xff]*/BZ
/[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/BZ
/(?'ABC'[bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar](*THEN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
/-- End of testinput14 --/
+369
View File
@@ -0,0 +1,369 @@
/-- This set of tests is for UTF-8 support but not Unicode property support,
and is relevant only to the 8-bit library. --/
< forbid W
/X(\C{3})/8
X\x{1234}
/X(\C{4})/8
X\x{1234}YZ
/X\C*/8
XYZabcdce
/X\C*?/8
XYZabcde
/X\C{3,5}/8
Xabcdefg
X\x{1234}
X\x{1234}YZ
X\x{1234}\x{512}
X\x{1234}\x{512}YZ
/X\C{3,5}?/8
Xabcdefg
X\x{1234}
X\x{1234}YZ
X\x{1234}\x{512}
/a\Cb/8
aXb
a\nb
/a\C\Cb/8
a\x{100}b
/ab\Cde/8
abXde
/a\C\Cb/8
a\x{100}b
** Failers
a\x{12257}b
/[Ã]/8
/Ã/8
/ÃÃÃxxx/8
/ÃÃÃxxx/8?DZSSO
/badutf/8
\xdf
\xef
\xef\x80
\xf7
\xf7\x80
\xf7\x80\x80
\xfb
\xfb\x80
\xfb\x80\x80
\xfb\x80\x80\x80
\xfd
\xfd\x80
\xfd\x80\x80
\xfd\x80\x80\x80
\xfd\x80\x80\x80\x80
\xdf\x7f
\xef\x7f\x80
\xef\x80\x7f
\xf7\x7f\x80\x80
\xf7\x80\x7f\x80
\xf7\x80\x80\x7f
\xfb\x7f\x80\x80\x80
\xfb\x80\x7f\x80\x80
\xfb\x80\x80\x7f\x80
\xfb\x80\x80\x80\x7f
\xfd\x7f\x80\x80\x80\x80
\xfd\x80\x7f\x80\x80\x80
\xfd\x80\x80\x7f\x80\x80
\xfd\x80\x80\x80\x7f\x80
\xfd\x80\x80\x80\x80\x7f
\xed\xa0\x80
\xc0\x8f
\xe0\x80\x8f
\xf0\x80\x80\x8f
\xf8\x80\x80\x80\x8f
\xfc\x80\x80\x80\x80\x8f
\x80
\xfe
\xff
/badutf/8
\xfb\x80\x80\x80\x80
\xfd\x80\x80\x80\x80\x80
\xf7\xbf\xbf\xbf
/shortutf/8
\P\P\xdf
\P\P\xef
\P\P\xef\x80
\P\P\xf7
\P\P\xf7\x80
\P\P\xf7\x80\x80
\P\P\xfb
\P\P\xfb\x80
\P\P\xfb\x80\x80
\P\P\xfb\x80\x80\x80
\P\P\xfd
\P\P\xfd\x80
\P\P\xfd\x80\x80
\P\P\xfd\x80\x80\x80
\P\P\xfd\x80\x80\x80\x80
/anything/8
\xc0\x80
\xc1\x8f
\xe0\x9f\x80
\xf0\x8f\x80\x80
\xf8\x87\x80\x80\x80
\xfc\x83\x80\x80\x80\x80
\xfe\x80\x80\x80\x80\x80
\xff\x80\x80\x80\x80\x80
\xc3\x8f
\xe0\xaf\x80
\xe1\x80\x80
\xf0\x9f\x80\x80
\xf1\x8f\x80\x80
\xf8\x88\x80\x80\x80
\xf9\x87\x80\x80\x80
\xfc\x84\x80\x80\x80\x80
\xfd\x83\x80\x80\x80\x80
\?\xf8\x88\x80\x80\x80
\?\xf9\x87\x80\x80\x80
\?\xfc\x84\x80\x80\x80\x80
\?\xfd\x83\x80\x80\x80\x80
/\x{100}/8DZ
/\x{1000}/8DZ
/\x{10000}/8DZ
/\x{100000}/8DZ
/\x{10ffff}/8DZ
/[\x{ff}]/8DZ
/[\x{100}]/8DZ
/\x80/8DZ
/\xff/8DZ
/\x{D55c}\x{ad6d}\x{C5B4}/DZ8
\x{D55c}\x{ad6d}\x{C5B4}
/\x{65e5}\x{672c}\x{8a9e}/DZ8
\x{65e5}\x{672c}\x{8a9e}
/\x{80}/DZ8
/\x{084}/DZ8
/\x{104}/DZ8
/\x{861}/DZ8
/\x{212ab}/DZ8
/-- This one is here not because it's different to Perl, but because the way
the captured single-byte is displayed. (In Perl it becomes a character, and you
can't tell the difference.) --/
/X(\C)(.*)/8
X\x{1234}
X\nabc
/-- This one is here because Perl gives out a grumbly error message (quite
correctly, but that messes up comparisons). --/
/a\Cb/8
*** Failers
a\x{100}b
/[^ab\xC0-\xF0]/8SDZ
\x{f1}
\x{bf}
\x{100}
\x{1000}
*** Failers
\x{c0}
\x{f0}
/Ä€{3,4}/8SDZ
\x{100}\x{100}\x{100}\x{100\x{100}
/(\x{100}+|x)/8SDZ
/(\x{100}*a|x)/8SDZ
/(\x{100}{0,2}a|x)/8SDZ
/(\x{100}{1,2}a|x)/8SDZ
/\x{100}/8DZ
/a\x{100}\x{101}*/8DZ
/a\x{100}\x{101}+/8DZ
/[^\x{c4}]/DZ
/[\x{100}]/8DZ
\x{100}
Z\x{100}
\x{100}Z
*** Failers
/[\xff]/DZ8
>\x{ff}<
/[^\xff]/8DZ
/\x{100}abc(xyz(?1))/8DZ
/a\x{1234}b/P8
a\x{1234}b
/\777/8I
\x{1ff}
\777
/\x{100}+\x{200}/8DZ
/\x{100}+X/8DZ
/^[\QÄ€\E-\QÅ\E/BZ8
/-- This tests the stricter UTF-8 check according to RFC 3629. --/
/X/8
\x{d800}
\x{d800}\?
\x{da00}
\x{da00}\?
\x{dfff}
\x{dfff}\?
\x{110000}
\x{110000}\?
\x{2000000}
\x{2000000}\?
\x{7fffffff}
\x{7fffffff}\?
/(*UTF8)\x{1234}/
abcd\x{1234}pqr
/(*CRLF)(*UTF)(*BSR_UNICODE)a\Rb/I
/\h/SI8
ABC\x{09}
ABC\x{20}
ABC\x{a0}
ABC\x{1680}
ABC\x{180e}
ABC\x{2000}
ABC\x{202f}
ABC\x{205f}
ABC\x{3000}
/\v/SI8
ABC\x{0a}
ABC\x{0b}
ABC\x{0c}
ABC\x{0d}
ABC\x{85}
ABC\x{2028}
/\h*A/SI8
CDBABC
/\v+A/SI8
/\s?xxx\s/8SI
/\sxxx\s/I8ST1
AB\x{85}xxx\x{a0}XYZ
AB\x{a0}xxx\x{85}XYZ
/\S \S/I8ST1
\x{a2} \x{84}
A Z
/a+/8
a\x{123}aa\>1
a\x{123}aa\>2
a\x{123}aa\>3
a\x{123}aa\>4
a\x{123}aa\>5
a\x{123}aa\>6
/\x{1234}+/iS8I
/\x{1234}+?/iS8I
/\x{1234}++/iS8I
/\x{1234}{2}/iS8I
/[^\x{c4}]/8DZ
/X+\x{200}/8DZ
/\R/SI8
/\777/8DZ
/\w+\x{C4}/8BZ
a\x{C4}\x{C4}
/\w+\x{C4}/8BZT1
a\x{C4}\x{C4}
/\W+\x{C4}/8BZ
!\x{C4}
/\W+\x{C4}/8BZT1
!\x{C4}
/\W+\x{A1}/8BZ
!\x{A1}
/\W+\x{A1}/8BZT1
!\x{A1}
/X\s+\x{A0}/8BZ
X\x20\x{A0}\x{A0}
/X\s+\x{A0}/8BZT1
X\x20\x{A0}\x{A0}
/\S+\x{A0}/8BZ
X\x{A0}\x{A0}
/\S+\x{A0}/8BZT1
X\x{A0}\x{A0}
/\x{a0}+\s!/8BZ
\x{a0}\x20!
/\x{a0}+\s!/8BZT1
\x{a0}\x20!
/A/8
\x{ff000041}
\x{7f000041}
/(*UTF8)abc/9
/abc/89
//8+L
\xf1\xad\xae\xae
/-- End of testinput15 --/
+67
View File
@@ -0,0 +1,67 @@
/-- This set of tests is run only with the 8-bit library when Unicode property
support is available. It starts with tests of the POSIX interface, because
that is supported only with the 8-bit library. --/
/\w/P
+++\x{c2}
/\w/WP
+++\x{c2}
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ
/AB\x{1fb0}/8DZ
/AB\x{1fb0}/8DZi
/\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI
\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
\x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
/[ⱥ]/8iBZ
/[^ⱥ]/8iBZ
/\h/SI
/\v/SI
/\R/SI
/[[:blank:]]/WBZ
/\x{212a}+/i8SI
KKkk\x{212a}
/s+/i8SI
SSss\x{17f}
/[\W\p{Any}]/BZ
abc
123
/[\W\pL]/BZ
abc
** Failers
123
/[\D]/8
\x{1d7cf}
/[\D\P{Nd}]/8
\x{1d7cf}
/[^\D]/8
a9b
** Failers
\x{1d7cf}
/[^\D\P{Nd}]/8
a9b
\x{1d7cf}
** Failers
\x{10000}
/-- End of testinput16 --/
File diff suppressed because one or more lines are too long
+300
View File
@@ -0,0 +1,300 @@
/-- This set of tests is for UTF-16 and UTF-32 support, and is relevant only to
the 16- and 32-bit libraries. --/
< forbid W
/ÃÃÃxxx/8?DZSS
/abc/8
Ã]
/X(\C{3})/8
X\x{11234}Y
X\x{11234}YZ
/X(\C{4})/8
X\x{11234}YZ
X\x{11234}YZW
/X\C*/8
XYZabcdce
/X\C*?/8
XYZabcde
/X\C{3,5}/8
Xabcdefg
X\x{11234}Y
X\x{11234}YZ
X\x{11234}\x{512}
X\x{11234}\x{512}YZ
X\x{11234}\x{512}\x{11234}Z
/X\C{3,5}?/8
Xabcdefg
X\x{11234}Y
X\x{11234}YZ
X\x{11234}\x{512}YZ
*** Failers
X\x{11234}
/a\Cb/8
aXb
a\nb
/a\C\Cb/8
a\x{12257}b
a\x{12257}\x{11234}b
** Failers
a\x{100}b
/ab\Cde/8
abXde
/-- Check maximum character size --/
/\x{ffff}/8DZ
/\x{10000}/8DZ
/\x{100}/8DZ
/\x{1000}/8DZ
/\x{10000}/8DZ
/\x{100000}/8DZ
/\x{10ffff}/8DZ
/[\x{ff}]/8DZ
/[\x{100}]/8DZ
/\x80/8DZ
/\xff/8DZ
/\x{D55c}\x{ad6d}\x{C5B4}/DZ8
\x{D55c}\x{ad6d}\x{C5B4}
/\x{65e5}\x{672c}\x{8a9e}/DZ8
\x{65e5}\x{672c}\x{8a9e}
/\x{80}/DZ8
/\x{084}/DZ8
/\x{104}/DZ8
/\x{861}/DZ8
/\x{212ab}/DZ8
/-- This one is here not because it's different to Perl, but because the way
the captured single-byte is displayed. (In Perl it becomes a character, and you
can't tell the difference.) --/
/X(\C)(.*)/8
X\x{1234}
X\nabc
/-- This one is here because Perl gives out a grumbly error message (quite
correctly, but that messes up comparisons). --/
/a\Cb/8
*** Failers
a\x{100}b
/[^ab\xC0-\xF0]/8SDZ
\x{f1}
\x{bf}
\x{100}
\x{1000}
*** Failers
\x{c0}
\x{f0}
/Ä€{3,4}/8SDZ
\x{100}\x{100}\x{100}\x{100\x{100}
/(\x{100}+|x)/8SDZ
/(\x{100}*a|x)/8SDZ
/(\x{100}{0,2}a|x)/8SDZ
/(\x{100}{1,2}a|x)/8SDZ
/\x{100}/8DZ
/a\x{100}\x{101}*/8DZ
/a\x{100}\x{101}+/8DZ
/[^\x{c4}]/DZ
/[\x{100}]/8DZ
\x{100}
Z\x{100}
\x{100}Z
*** Failers
/[\xff]/DZ8
>\x{ff}<
/[^\xff]/8DZ
/\x{100}abc(xyz(?1))/8DZ
/\777/8I
\x{1ff}
\777
/\x{100}+\x{200}/8DZ
/\x{100}+X/8DZ
/^[\QÄ€\E-\QÅ\E/BZ8
/X/8
\x{d800}
\x{d800}\?
\x{da00}
\x{da00}\?
\x{dc00}
\x{dc00}\?
\x{de00}
\x{de00}\?
\x{dfff}
\x{dfff}\?
\x{110000}
\x{d800}\x{1234}
/(*UTF16)\x{11234}/
abcd\x{11234}pqr
/(*UTF)\x{11234}/I
abcd\x{11234}pqr
/(*UTF-32)\x{11234}/
abcd\x{11234}pqr
/(*CRLF)(*UTF16)(*BSR_UNICODE)a\Rb/I
/(*CRLF)(*UTF32)(*BSR_UNICODE)a\Rb/I
/\h/SI8
ABC\x{09}
ABC\x{20}
ABC\x{a0}
ABC\x{1680}
ABC\x{180e}
ABC\x{2000}
ABC\x{202f}
ABC\x{205f}
ABC\x{3000}
/\v/SI8
ABC\x{0a}
ABC\x{0b}
ABC\x{0c}
ABC\x{0d}
ABC\x{85}
ABC\x{2028}
/\h*A/SI8
CDBABC
\x{2000}ABC
/\R*A/SI8<bsr_unicode>
CDBABC
\x{2028}A
/\v+A/SI8
/\s?xxx\s/8SI
/\sxxx\s/I8ST1
AB\x{85}xxx\x{a0}XYZ
AB\x{a0}xxx\x{85}XYZ
/\S \S/I8ST1
\x{a2} \x{84}
A Z
/a+/8
a\x{123}aa\>1
a\x{123}aa\>2
a\x{123}aa\>3
a\x{123}aa\>4
a\x{123}aa\>5
a\x{123}aa\>6
/\x{1234}+/iS8I
/\x{1234}+?/iS8I
/\x{1234}++/iS8I
/\x{1234}{2}/iS8I
/[^\x{c4}]/8DZ
/X+\x{200}/8DZ
/\R/SI8
/-- Check bad offset --/
/a/8
\x{10000}\>1
\x{10000}ab\>1
\x{10000}ab\>2
\x{10000}ab\>3
\x{10000}ab\>4
\x{10000}ab\>5
/í¼€/8
/\w+\x{C4}/8BZ
a\x{C4}\x{C4}
/\w+\x{C4}/8BZT1
a\x{C4}\x{C4}
/\W+\x{C4}/8BZ
!\x{C4}
/\W+\x{C4}/8BZT1
!\x{C4}
/\W+\x{A1}/8BZ
!\x{A1}
/\W+\x{A1}/8BZT1
!\x{A1}
/X\s+\x{A0}/8BZ
X\x20\x{A0}\x{A0}
/X\s+\x{A0}/8BZT1
X\x20\x{A0}\x{A0}
/\S+\x{A0}/8BZ
X\x{A0}\x{A0}
/\S+\x{A0}/8BZT1
X\x{A0}\x{A0}
/\x{a0}+\s!/8BZ
\x{a0}\x20!
/\x{a0}+\s!/8BZT1
\x{a0}\x20!
/(*UTF)abc/9
/abc/89
/-- End of testinput18 --/
+45
View File
@@ -0,0 +1,45 @@
/-- This set of tests is for Unicode property support, relevant only to the
16- and 32-bit library. --/
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ
/AB\x{1fb0}/8DZ
/AB\x{1fb0}/8DZi
/\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI
\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
\x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
/[ⱥ]/8iBZ
/[^ⱥ]/8iBZ
/[[:blank:]]/WBZ
/\x{212a}+/i8SI
KKkk\x{212a}
/s+/i8SI
SSss\x{17f}
/[\D]/8
\x{1d7cf}
/[\D\P{Nd}]/8
\x{1d7cf}
/[^\D]/8
a9b
** Failers
\x{1d7cf}
/[^\D\P{Nd}]/8
a9b
\x{1d7cf}
** Failers
\x{10000}
/-- End of testinput19 --/
+4252
View File
File diff suppressed because one or more lines are too long
+19
View File
@@ -0,0 +1,19 @@
/-- These DFA tests are for the handling of characters greater than 255 in
16- or 32-bit, non-UTF mode. --/
/^\x{ffff}+/i
\x{ffff}
/^\x{ffff}?/i
\x{ffff}
/^\x{ffff}*/i
\x{ffff}
/^\x{ffff}{3}/i
\x{ffff}\x{ffff}\x{ffff}
/^\x{ffff}{0,3}/i
\x{ffff}
/-- End of testinput20 --/
+26
View File
@@ -0,0 +1,26 @@
/-- Tests for reloading pre-compiled patterns. The first one gives an error
right away, and can be any old pattern compiled in 8-bit mode ("abc" is
typical). The others require the link size to be 2. */x
<!testsaved8
%-- Generated from:
/^[aL](?P<name>(?:[AaLl]+)[^xX-]*?)(?P<other>[\x{150}-\x{250}\x{300}]|
[^\x{800}aAs-uS-U\x{d800}-\x{dfff}])++[^#\b\x{500}\x{1000}]{3,5}$
/x
In 16-bit mode with options: S>testdata/saved16LE-1
FS>testdata/saved16BE-1
In 32-bit mode with options: S>testdata/saved32LE-1
FS>testdata/saved32BE-1
--%x
<!testsaved16LE-1
<!testsaved16BE-1
<!testsaved32LE-1
<!testsaved32BE-1
/-- End of testinput21 --/
+23
View File
@@ -0,0 +1,23 @@
/-- Tests for reloading pre-compile patterns with UTF-16 or UTF-32 support. */
%-- Generated from:
/(?P<cbra1>[aZ\x{400}-\x{10ffff}]{4,}
[\x{f123}\x{10039}\x{20000}-\x{21234}]?|
[A-Cx-z\x{100000}-\x{1000a7}\x{101234}])
(?<cb2>[^az])/x
In 16-bit mode with options: S8>testdata/saved16LE-2
FS8>testdata/saved16BE-2
In 32-bit mode with options: S8>testdata/saved32LE-2
FS8>testdata/saved32BE-2
--%8x
<!testsaved16LE-2
<!testsaved16BE-2
<!testsaved32LE-2
<!testsaved32BE-2
/-- End of testinput22 --/
+20
View File
@@ -0,0 +1,20 @@
/-- Tests for the 16-bit library only */
< forbid 8W
/-- Check maximum non-UTF character size --/
/\x{ffff}/
A\x{ffff}B
/\x{10000}/
/\o{20000}/
/-- Check character ranges --/
/[\H]/BZSI
/[\V]/BZSI
/-- End of testinput23 --/
+11
View File
@@ -0,0 +1,11 @@
/-- Tests for the 16-bit library with UTF-16 support only */
< forbid W
/bad/8
\x{d800}
/short/8
\P\P\x{d800}
/-- End of testinput24 --/
+44
View File
@@ -0,0 +1,44 @@
/-- Tests for the 32-bit library only */
< forbid 8W
/-- Check maximum character size --/
/\x{110000}/
/\x{7fffffff}/
/\x{80000000}/
/\x{ffffffff}/
/\x{100000000}/
/\o{17777777777}/
/\o{20000000000}/
/\o{37777777777}/
/\o{40000000000}/
/\x{7fffffff}\x{7fffffff}/I
/\x{80000000}\x{80000000}/I
/\x{ffffffff}\x{ffffffff}/I
/-- Non-UTF characters --/
/\C{2,3}/
\x{400000}\x{400001}\x{400002}\x{400003}
/\x{400000}\x{800000}/iDZ
/-- Check character ranges --/
/[\H]/BZSI
/[\V]/BZSI
/-- End of testinput25 --/
+14
View File
@@ -0,0 +1,14 @@
/-- Tests for the 32-bit library with UTF-32 support only */
< forbid W
/-- Non-UTF characters --/
/\x{110000}/8
/\o{4200000}/8
/\C/8
\x{110000}
/-- End of testinput26 --/
+100
View File
@@ -0,0 +1,100 @@
/-- This set of tests checks local-specific features, using the "fr_FR" locale.
It is not Perl-compatible. When run via RunTest, the locale is edited to
be whichever of "fr_FR", "french", or "fr" is found to exist. There is
different version of this file called wintestinput3 for use on Windows,
where the locale is called "french" and the tests are run using
RunTest.bat. --/
< forbid 8W
/^[\w]+/
*** Failers
École
/^[\w]+/Lfr_FR
École
/^[\w]+/
*** Failers
École
/^[\W]+/
École
/^[\W]+/Lfr_FR
*** Failers
École
/[\b]/
\b
*** Failers
a
/[\b]/Lfr_FR
\b
*** Failers
a
/^\w+/
*** Failers
École
/^\w+/Lfr_FR
École
/(.+)\b(.+)/
École
/(.+)\b(.+)/Lfr_FR
*** Failers
École
/École/i
École
*** Failers
école
/École/iLfr_FR
École
école
/\w/IS
/\w/ISLfr_FR
/^[\xc8-\xc9]/iLfr_FR
École
école
/^[\xc8-\xc9]/Lfr_FR
École
*** Failers
école
/\W+/Lfr_FR
>>>\xaa<<<
>>>\xba<<<
/[\W]+/Lfr_FR
>>>\xaa<<<
>>>\xba<<<
/[^[:alpha:]]+/Lfr_FR
>>>\xaa<<<
>>>\xba<<<
/\w+/Lfr_FR
>>>\xaa<<<
>>>\xba<<<
/[\w]+/Lfr_FR
>>>\xaa<<<
>>>\xba<<<
/[[:alpha:]]+/Lfr_FR
>>>\xaa<<<
>>>\xba<<<
/[[:alpha:]][[:lower:]][[:upper:]]/DZLfr_FR
/-- End of testinput3 --/
+730
View File
@@ -0,0 +1,730 @@
/-- This set of tests is for UTF support, excluding Unicode properties. It is
compatible with all versions of Perl >= 5.10 and both the 8-bit and 16-bit
PCRE libraries. --/
< forbid 9?=ABCDEFfGILMNPTUWXZ<
/a.b/8
acb
a\x7fb
a\x{100}b
*** Failers
a\nb
/a(.{3})b/8
a\x{4000}xyb
a\x{4000}\x7fyb
a\x{4000}\x{100}yb
*** Failers
a\x{4000}b
ac\ncb
/a(.*?)(.)/
a\xc0\x88b
/a(.*?)(.)/8
a\x{100}b
/a(.*)(.)/
a\xc0\x88b
/a(.*)(.)/8
a\x{100}b
/a(.)(.)/
a\xc0\x92bcd
/a(.)(.)/8
a\x{240}bcd
/a(.?)(.)/
a\xc0\x92bcd
/a(.?)(.)/8
a\x{240}bcd
/a(.??)(.)/
a\xc0\x92bcd
/a(.??)(.)/8
a\x{240}bcd
/a(.{3})b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
*** Failers
a\x{1234}b
ac\ncb
/a(.{3,})b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
*** Failers
a\x{1234}b
/a(.{3,}?)b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
*** Failers
a\x{1234}b
/a(.{3,5})b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
axxxxxbcdefghijb
*** Failers
a\x{1234}b
axxxxxxbcdefghijb
/a(.{3,5}?)b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
axxxxxbcdefghijb
*** Failers
a\x{1234}b
axxxxxxbcdefghijb
/^[a\x{c0}]/8
*** Failers
\x{100}
/(?<=aXb)cd/8
aXbcd
/(?<=a\x{100}b)cd/8
a\x{100}bcd
/(?<=a\x{100000}b)cd/8
a\x{100000}bcd
/(?:\x{100}){3}b/8
\x{100}\x{100}\x{100}b
*** Failers
\x{100}\x{100}b
/\x{ab}/8
\x{ab}
\xc2\xab
*** Failers
\x00{ab}
/(?<=(.))X/8
WXYZ
\x{256}XYZ
*** Failers
XYZ
/[^a]+/8g
bcd
\x{100}aY\x{256}Z
/^[^a]{2}/8
\x{100}bc
/^[^a]{2,}/8
\x{100}bcAa
/^[^a]{2,}?/8
\x{100}bca
/[^a]+/8ig
bcd
\x{100}aY\x{256}Z
/^[^a]{2}/8i
\x{100}bc
/^[^a]{2,}/8i
\x{100}bcAa
/^[^a]{2,}?/8i
\x{100}bca
/\x{100}{0,0}/8
abcd
/\x{100}?/8
abcd
\x{100}\x{100}
/\x{100}{0,3}/8
\x{100}\x{100}
\x{100}\x{100}\x{100}\x{100}
/\x{100}*/8
abce
\x{100}\x{100}\x{100}\x{100}
/\x{100}{1,1}/8
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}{1,3}/8
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}+/8
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}{3}/8
abcd\x{100}\x{100}\x{100}XX
/\x{100}{3,5}/8
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
/\x{100}{3,}/8
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
/(?<=a\x{100}{2}b)X/8+
Xyyya\x{100}\x{100}bXzzz
/\D*/8
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\D*/8
\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
/\D/8
1X2
1\x{100}2
/>\S/8
> >X Y
> >\x{100} Y
/\d/8
\x{100}3
/\s/8
\x{100} X
/\D+/8
12abcd34
*** Failers
1234
/\D{2,3}/8
12abcd34
12ab34
*** Failers
1234
12a34
/\D{2,3}?/8
12abcd34
12ab34
*** Failers
1234
12a34
/\d+/8
12abcd34
*** Failers
/\d{2,3}/8
12abcd34
1234abcd
*** Failers
1.4
/\d{2,3}?/8
12abcd34
1234abcd
*** Failers
1.4
/\S+/8
12abcd34
*** Failers
\ \
/\S{2,3}/8
12abcd34
1234abcd
*** Failers
\ \
/\S{2,3}?/8
12abcd34
1234abcd
*** Failers
\ \
/>\s+</8+
12> <34
*** Failers
/>\s{2,3}</8+
ab> <cd
ab> <ce
*** Failers
ab> <cd
/>\s{2,3}?</8+
ab> <cd
ab> <ce
*** Failers
ab> <cd
/\w+/8
12 34
*** Failers
+++=*!
/\w{2,3}/8
ab cd
abcd ce
*** Failers
a.b.c
/\w{2,3}?/8
ab cd
abcd ce
*** Failers
a.b.c
/\W+/8
12====34
*** Failers
abcd
/\W{2,3}/8
ab====cd
ab==cd
*** Failers
a.b.c
/\W{2,3}?/8
ab====cd
ab==cd
*** Failers
a.b.c
/[\x{100}]/8
\x{100}
Z\x{100}
\x{100}Z
*** Failers
/[Z\x{100}]/8
Z\x{100}
\x{100}
\x{100}Z
*** Failers
/[\x{100}\x{200}]/8
ab\x{100}cd
ab\x{200}cd
*** Failers
/[\x{100}-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
*** Failers
/[z-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
abzcd
ab|cd
*** Failers
/[Q\x{100}\x{200}]/8
ab\x{100}cd
ab\x{200}cd
Q?
*** Failers
/[Q\x{100}-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
Q?
*** Failers
/[Qz-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
abzcd
ab|cd
Q?
*** Failers
/[\x{100}\x{200}]{1,3}/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/[\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/[Q\x{100}\x{200}]{1,3}/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/[Q\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/(?<=[\x{100}\x{200}])X/8
abc\x{200}X
abc\x{100}X
*** Failers
X
/(?<=[Q\x{100}\x{200}])X/8
abc\x{200}X
abc\x{100}X
abQX
*** Failers
X
/(?<=[\x{100}\x{200}]{3})X/8
abc\x{100}\x{200}\x{100}X
*** Failers
abc\x{200}X
X
/[^\x{100}\x{200}]X/8
AX
\x{150}X
\x{500}X
*** Failers
\x{100}X
\x{200}X
/[^Q\x{100}\x{200}]X/8
AX
\x{150}X
\x{500}X
*** Failers
\x{100}X
\x{200}X
QX
/[^\x{100}-\x{200}]X/8
AX
\x{500}X
*** Failers
\x{100}X
\x{150}X
\x{200}X
/[z-\x{100}]/8i
z
Z
\x{100}
*** Failers
\x{102}
y
/[\xFF]/
>\xff<
/[\xff]/8
>\x{ff}<
/[^\xFF]/
XYZ
/[^\xff]/8
XYZ
\x{123}
/^[ac]*b/8
xb
/^[ac\x{100}]*b/8
xb
/^[^x]*b/8i
xb
/^[^x]*b/8
xb
/^\d*b/8
xb
/(|a)/g8
catac
a\x{256}a
/^\x{85}$/8i
\x{85}
/^ሴ/8
/^\ሴ/8
"(?s)(.{1,5})"8
abcdefg
ab
/a*\x{100}*\w/8
a
/\S\S/8g
A\x{a3}BC
/\S{2}/8g
A\x{a3}BC
/\W\W/8g
+\x{a3}==
/\W{2}/8g
+\x{a3}==
/\S/8g
\x{442}\x{435}\x{441}\x{442}
/[\S]/8g
\x{442}\x{435}\x{441}\x{442}
/\D/8g
\x{442}\x{435}\x{441}\x{442}
/[\D]/8g
\x{442}\x{435}\x{441}\x{442}
/\W/8g
\x{2442}\x{2435}\x{2441}\x{2442}
/[\W]/8g
\x{2442}\x{2435}\x{2441}\x{2442}
/[\S\s]*/8
abc\n\r\x{442}\x{435}\x{441}\x{442}xyz
/[\x{41f}\S]/8g
\x{442}\x{435}\x{441}\x{442}
/.[^\S]./8g
abc def\x{442}\x{443}xyz\npqr
/.[^\S\n]./8g
abc def\x{442}\x{443}xyz\npqr
/[[:^alnum:]]/8g
+\x{2442}
/[[:^alpha:]]/8g
+\x{2442}
/[[:^ascii:]]/8g
A\x{442}
/[[:^blank:]]/8g
A\x{442}
/[[:^cntrl:]]/8g
A\x{442}
/[[:^digit:]]/8g
A\x{442}
/[[:^graph:]]/8g
\x19\x{e01ff}
/[[:^lower:]]/8g
A\x{422}
/[[:^print:]]/8g
\x{19}\x{e01ff}
/[[:^punct:]]/8g
A\x{442}
/[[:^space:]]/8g
A\x{442}
/[[:^upper:]]/8g
a\x{442}
/[[:^word:]]/8g
+\x{2442}
/[[:^xdigit:]]/8g
M\x{442}
/[^ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸԀԂԄԆԈԊԌԎԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯᾸᾹᾺΆῈΈῊΉῘῙῚΊῨῩῪΎῬῸΌῺΏabcdefghijklmnopqrstuvwxyzªµºßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżžſƀƃƅƈƌƍƒƕƙƚƛƞơƣƥƨƪƫƭưƴƶƹƺƽƾƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳȴȵȶȷȸȹȼȿɀɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϐϑϕϖϗϙϛϝϟϡϣϥϧϩϫϭϯϰϱϲϳϵϸϻϼабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹԁԃԅԇԉԋԍԏաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵹᵺᵻᵼᵽᵾᵿᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕẖẗẘẙẚẛạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὐὑὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰάὲέὴήὶίὸόὺύὼώᾀᾁᾂᾃᾄᾅᾆᾇᾐᾑᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷιῂῃῄῆῇῐῑῒΐῖῗῠῡῢΰῤῥῦῧῲῳῴῶῷⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟⴠⴡⴢⴣⴤⴥfffiflffifflſtstﬓﬔﬕﬖﬗ\d-_^]/8
/^[^d]*?$/
abc
/^[^d]*?$/8
abc
/^[^d]*?$/i
abc
/^[^d]*?$/8i
abc
/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/8
/^[a\x{c0}]b/8
\x{c0}b
/^([a\x{c0}]*?)aa/8
a\x{c0}aaaa/
/^([a\x{c0}]*?)aa/8
a\x{c0}aaaa/
a\x{c0}a\x{c0}aaa/
/^([a\x{c0}]*)aa/8
a\x{c0}aaaa/
a\x{c0}a\x{c0}aaa/
/^([a\x{c0}]*)a\x{c0}/8
a\x{c0}aaaa/
a\x{c0}a\x{c0}aaa/
/A*/g8
AAB\x{123}BAA
/(abc)\1/8i
abc
/(abc)\1/8
abc
/a(*:a\x{1234}b)/8K
abc
/a(*:a£b)/8K
abc
/-- Noncharacters --/
/./8
\x{fffe}
\x{ffff}
\x{1fffe}
\x{1ffff}
\x{2fffe}
\x{2ffff}
\x{3fffe}
\x{3ffff}
\x{4fffe}
\x{4ffff}
\x{5fffe}
\x{5ffff}
\x{6fffe}
\x{6ffff}
\x{7fffe}
\x{7ffff}
\x{8fffe}
\x{8ffff}
\x{9fffe}
\x{9ffff}
\x{afffe}
\x{affff}
\x{bfffe}
\x{bffff}
\x{cfffe}
\x{cffff}
\x{dfffe}
\x{dffff}
\x{efffe}
\x{effff}
\x{ffffe}
\x{fffff}
\x{10fffe}
\x{10ffff}
\x{fdd0}
\x{fdd1}
\x{fdd2}
\x{fdd3}
\x{fdd4}
\x{fdd5}
\x{fdd6}
\x{fdd7}
\x{fdd8}
\x{fdd9}
\x{fdda}
\x{fddb}
\x{fddc}
\x{fddd}
\x{fdde}
\x{fddf}
\x{fde0}
\x{fde1}
\x{fde2}
\x{fde3}
\x{fde4}
\x{fde5}
\x{fde6}
\x{fde7}
\x{fde8}
\x{fde9}
\x{fdea}
\x{fdeb}
\x{fdec}
\x{fded}
\x{fdee}
\x{fdef}
/^\d*\w{4}/8
1234
123
/^[^b]*\w{4}/8
aaaa
aaa
/^[^b]*\w{4}/8i
aaaa
aaa
/^\x{100}*.{4}/8
\x{100}\x{100}\x{100}\x{100}
\x{100}\x{100}\x{100}
/^\x{100}*.{4}/8i
\x{100}\x{100}\x{100}\x{100}
\x{100}\x{100}\x{100}
/^a+[a\x{200}]/8
aa
/^.\B.\B./8
\x{10123}\x{10124}\x{10125}
/^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/8
#\x{10000}#\x{100}#\x{10ffff}#
"[\S\V\H]"8
/\C(\W?ſ)'?{{/8
\\C(\\W?ſ)'?{{
/-- End of testinput4 --/
+801
View File
@@ -0,0 +1,801 @@
/-- This set of tests checks the API, internals, and non-Perl stuff for UTF
support, excluding Unicode properties. However, tests that give different
results in 8-bit and 16-bit modes are excluded (see tests 16 and 17). --/
< forbid W
/\x{110000}/8DZ
/\o{4200000}/8DZ
/\x{ffffffff}/8
/\o{37777777777}/8
/\x{100000000}/8
/\o{77777777777}/8
/\x{d800}/8
/\o{154000}/8
/\x{dfff}/8
/\o{157777}/8
/\x{d7ff}/8
/\o{153777}/8
/\x{e000}/8
/\o{170000}/8
/^\x{100}a\x{1234}/8
\x{100}a\x{1234}bcd
/\x{0041}\x{2262}\x{0391}\x{002e}/DZ8
\x{0041}\x{2262}\x{0391}\x{002e}
/.{3,5}X/DZ8
\x{212ab}\x{212ab}\x{212ab}\x{861}X
/.{3,5}?/DZ8
\x{212ab}\x{212ab}\x{212ab}\x{861}
/(?<=\C)X/8
Should produce an error diagnostic
/^[ab]/8DZ
bar
*** Failers
c
\x{ff}
\x{100}
/^[^ab]/8DZ
c
\x{ff}
\x{100}
*** Failers
aaa
/\x{100}*(\d+|"(?1)")/8
1234
"1234"
\x{100}1234
"\x{100}1234"
\x{100}\x{100}12ab
\x{100}\x{100}"12"
*** Failers
\x{100}\x{100}abcd
/\x{100}*/8DZ
/a\x{100}*/8DZ
/ab\x{100}*/8DZ
/\x{100}*A/8DZ
A
/\x{100}*\d(?R)/8DZ
/[Z\x{100}]/8DZ
Z\x{100}
\x{100}
\x{100}Z
*** Failers
/[\x{200}-\x{100}]/8
/[Ā-Ą]/8
\x{100}
\x{104}
*** Failers
\x{105}
\x{ff}
/[z-\x{100}]/8DZ
/[z\Qa-d]Ā\E]/8DZ
\x{100}
Ā
/[\xFF]/DZ
>\xff<
/[^\xFF]/DZ
/[Ä-Ü]/8
Ö # Matches without Study
\x{d6}
/[Ä-Ü]/8S
Ö <-- Same with Study
\x{d6}
/[\x{c4}-\x{dc}]/8
Ö # Matches without Study
\x{d6}
/[\x{c4}-\x{dc}]/8S
Ö <-- Same with Study
\x{d6}
/[^\x{100}]abc(xyz(?1))/8DZ
/[ab\x{100}]abc(xyz(?1))/8DZ
/(\x{100}(b(?2)c))?/DZ8
/(\x{100}(b(?2)c)){0,2}/DZ8
/(\x{100}(b(?1)c))?/DZ8
/(\x{100}(b(?1)c)){0,2}/DZ8
/\W/8
A.B
A\x{100}B
/\w/8
\x{100}X
/^\ሴ/8DZ
/\x{100}*\d/8DZ
/\x{100}*\s/8DZ
/\x{100}*\w/8DZ
/\x{100}*\D/8DZ
/\x{100}*\S/8DZ
/\x{100}*\W/8DZ
/()()()()()()()()()()
()()()()()()()()()()
()()()()()()()()()()
()()()()()()()()()()
A (x) (?41) B/8x
AxxB
/^[\x{100}\E-\Q\E\x{150}]/BZ8
/^[\QĀ\E-\QŐ\E]/BZ8
/^abc./mgx8<any>
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
/abc.$/mgx8<any>
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
/^a\Rb/8<bsr_unicode>
a\nb
a\rb
a\r\nb
a\x0bb
a\x0cb
a\x{85}b
a\x{2028}b
a\x{2029}b
** Failers
a\n\rb
/^a\R*b/8<bsr_unicode>
ab
a\nb
a\rb
a\r\nb
a\x0bb
a\x0c\x{2028}\x{2029}b
a\x{85}b
a\n\rb
a\n\r\x{85}\x0cb
/^a\R+b/8<bsr_unicode>
a\nb
a\rb
a\r\nb
a\x0bb
a\x0c\x{2028}\x{2029}b
a\x{85}b
a\n\rb
a\n\r\x{85}\x0cb
** Failers
ab
/^a\R{1,3}b/8<bsr_unicode>
a\nb
a\n\rb
a\n\r\x{85}b
a\r\n\r\nb
a\r\n\r\n\r\nb
a\n\r\n\rb
a\n\n\r\nb
** Failers
a\n\n\n\rb
a\r
/\H\h\V\v/8
X X\x0a
X\x09X\x0b
** Failers
\x{a0} X\x0a
/\H*\h+\V?\v{3,4}/8
\x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
\x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
\x09\x20\x{a0}\x0a\x0b\x0c
** Failers
\x09\x20\x{a0}\x0a\x0b
/\H\h\V\v/8
\x{3001}\x{3000}\x{2030}\x{2028}
X\x{180e}X\x{85}
** Failers
\x{2009} X\x0a
/\H*\h+\V?\v{3,4}/8
\x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
\x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
\x09\x20\x{202f}\x0a\x0b\x0c
** Failers
\x09\x{200a}\x{a0}\x{2028}\x0b
/[\h]/8BZ
>\x{1680}
/[\h]{3,}/8BZ
>\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
/[\v]/8BZ
/[\H]/8BZ
/[\V]/8BZ
/.*$/8<any>
\x{1ec5}
/a\Rb/I8<bsr_anycrlf>
a\rb
a\nb
a\r\nb
** Failers
a\x{85}b
a\x0bb
/a\Rb/I8<bsr_unicode>
a\rb
a\nb
a\r\nb
a\x{85}b
a\x0bb
** Failers
a\x{85}b\<bsr_anycrlf>
a\x0bb\<bsr_anycrlf>
/a\R?b/I8<bsr_anycrlf>
a\rb
a\nb
a\r\nb
** Failers
a\x{85}b
a\x0bb
/a\R?b/I8<bsr_unicode>
a\rb
a\nb
a\r\nb
a\x{85}b
a\x0bb
** Failers
a\x{85}b\<bsr_anycrlf>
a\x0bb\<bsr_anycrlf>
/.*a.*=.b.*/8<ANY>
QQQ\x{2029}ABCaXYZ=!bPQR
** Failers
a\x{2029}b
\x61\xe2\x80\xa9\x62
/[[:a\x{100}b:]]/8
/a[^]b/<JS>8
a\x{1234}b
a\nb
** Failers
ab
/a[^]+b/<JS>8
aXb
a\nX\nX\x{1234}b
** Failers
ab
/(\x{de})\1/
\x{de}\x{de}
/X/8f<any>
A\x{1ec5}ABCXYZ
/Xa{2,4}b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/Xa{2,4}?b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/Xa{2,4}+b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X\x{123}{2,4}b/8
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\x{123}{2,4}?b/8
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\x{123}{2,4}+b/8
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\x{123}{2,4}b/8
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
/X\x{123}{2,4}?b/8
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
/X\x{123}{2,4}+b/8
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
/X\d{2,4}b/8
X\P
X3\P
X33\P
X333\P
X3333\P
/X\d{2,4}?b/8
X\P
X3\P
X33\P
X333\P
X3333\P
/X\d{2,4}+b/8
X\P
X3\P
X33\P
X333\P
X3333\P
/X\D{2,4}b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X\D{2,4}?b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X\D{2,4}+b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X\D{2,4}b/8
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\D{2,4}?b/8
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\D{2,4}+b/8
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[abc]{2,4}b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X[abc]{2,4}?b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X[abc]{2,4}+b/8
X\P
Xa\P
Xaa\P
Xaaa\P
Xaaaa\P
/X[abc\x{123}]{2,4}b/8
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[abc\x{123}]{2,4}?b/8
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[abc\x{123}]{2,4}+b/8
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[^a]{2,4}b/8
X\P
Xz\P
Xzz\P
Xzzz\P
Xzzzz\P
/X[^a]{2,4}?b/8
X\P
Xz\P
Xzz\P
Xzzz\P
Xzzzz\P
/X[^a]{2,4}+b/8
X\P
Xz\P
Xzz\P
Xzzz\P
Xzzzz\P
/X[^a]{2,4}b/8
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[^a]{2,4}?b/8
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[^a]{2,4}+b/8
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
/(Y)X\1{2,4}b/8
YX\P
YXY\P
YXYY\P
YXYYY\P
YXYYYY\P
/(Y)X\1{2,4}?b/8
YX\P
YXY\P
YXYY\P
YXYYY\P
YXYYYY\P
/(Y)X\1{2,4}+b/8
YX\P
YXY\P
YXYY\P
YXYYY\P
YXYYYY\P
/(\x{123})X\1{2,4}b/8
\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\1{2,4}?b/8
\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\1{2,4}+b/8
\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
/\bthe cat\b/8
the cat\P
the cat\P\P
/abcd*/8
xxxxabcd\P
xxxxabcd\P\P
/abcd*/i8
xxxxabcd\P
xxxxabcd\P\P
XXXXABCD\P
XXXXABCD\P\P
/abc\d*/8
xxxxabc1\P
xxxxabc1\P\P
/(a)bc\1*/8
xxxxabca\P
xxxxabca\P\P
/abc[de]*/8
xxxxabcde\P
xxxxabcde\P\P
/X\W{3}X/8
\PX
/\sxxx\s/8T1
AB\x{85}xxx\x{a0}XYZ
AB\x{a0}xxx\x{85}XYZ
/\S \S/8T1
\x{a2} \x{84}
'A#хц'8x<any>BZ
'A#хц
PQ'8x<any>BZ
/a+#хaa
z#XX?/8x<any>BZ
/a+#хaa
z#х?/8x<any>BZ
/\g{A}xxx#bXX(?'A'123)␍(?'A'456)/8x<any>BZ
/\g{A}xxx#bх(?'A'123)␍(?'A'456)/8x<any>BZ
/^\cģ/8
/(\R*)(.)/s8
\r\n
\r\r\n\n\r
\r\r\n\n\r\n
/(\R)*(.)/s8
\r\n
\r\r\n\n\r
\r\r\n\n\r\n
/[^\x{1234}]+/iS8I
/[^\x{1234}]+?/iS8I
/[^\x{1234}]++/iS8I
/[^\x{1234}]{2}/iS8I
//<bsr_anycrlf><bsr_unicode>
/f.*/
\P\Pfor
/f.*/s
\P\Pfor
/f.*/8
\P\Pfor
/f.*/8s
\P\Pfor
/\x{d7ff}\x{e000}/8
/\x{d800}/8
/\x{dfff}/8
/\h+/8
\x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
\x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
/[\h\x{e000}]+/8BZ
\x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
\x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
/\H+/8
\x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
\x{2000}\x{200a}\x{1fff}\x{200b}
\x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
\x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
/[\H\x{d7ff}]+/8BZ
\x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
\x{2000}\x{200a}\x{1fff}\x{200b}
\x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
\x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
/\v+/8
\x{2027}\x{2030}\x{2028}\x{2029}
\x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
/[\v\x{e000}]+/8BZ
\x{2027}\x{2030}\x{2028}\x{2029}
\x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
/\V+/8
\x{2028}\x{2029}\x{2027}\x{2030}
\x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
/[\V\x{d7ff}]+/8BZ
\x{2028}\x{2029}\x{2027}\x{2030}
\x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
/\R+/8<bsr_unicode>
\x{2027}\x{2030}\x{2028}\x{2029}
\x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
/(..)\1/8
ab\P
aba\P
abab\P
/(..)\1/8i
ab\P
abA\P
aBAb\P
/(..)\1{2,}/8
ab\P
aba\P
abab\P
ababa\P
ababab\P
ababab\P\P
abababa\P
abababa\P\P
/(..)\1{2,}/8i
ab\P
aBa\P
aBAb\P
AbaBA\P
abABAb\P
aBAbaB\P\P
abABabA\P
abaBABa\P\P
/(..)\1{2,}?x/8i
ab\P
abA\P
aBAb\P
abaBA\P
abAbaB\P
abaBabA\P
abAbABaBx\P
/./8<CRLF>
\r\P
\r\P\P
/.{2,3}/8<CRLF>
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
/.{2,3}?/8<CRLF>
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/8BZ
/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/8BZi
/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/8BZ
/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/8BZi
/(?<=\x{1234}\x{1234})\bxy/I8
/(?<!^)ETA/8
ETA
/\u0100/<JS>8BZ
/[\u0100-\u0200]/<JS>8BZ
/\ud800/<JS>8
/^a+[a\x{200}]/8BZ
aa
/[b-d\x{200}-\x{250}]*[ae-h]?#[\x{200}-\x{250}]{0,8}[\x00-\xff]*#[\x{200}-\x{250}]+[a-z]/8BZ
/[^\xff]*PRUNE:\x{100}abc(xyz(?1))/8DZ
/(?<=\K\x{17f})/8g+
\x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
/(?<=\K\x{17f})/8G+
\x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
/-- End of testinput5 --/
+1571
View File
@@ -0,0 +1,1571 @@
/-- This set of tests is for Unicode property support. It is compatible with
Perl >= 5.15. --/
< forbid 9?=ABCDEFfGILMNPTUXZ<
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
\np\x{300}9!\$ <
** Failers
ap\x{300}9!\$ <
/^\PC/8
X
** Failers
\x7f
/^\PL/8
9
** Failers
\x{c0}
/^\PM/8
X
** Failers
\x{30f}
/^\PN/8
X
** Failers
\x{660}
/^\PP/8
X
** Failers
\x{66c}
/^\PS/8
X
** Failers
\x{f01}
/^\PZ/8
X
** Failers
\x{1680}
/^\p{Cc}/8
\x{017}
\x{09f}
** Failers
\x{0600}
/^\p{Cf}/8
\x{601}
** Failers
\x{09f}
/^\p{Cn}/8
\x{e0000}
** Failers
\x{09f}
/^\p{Co}/8
\x{f8ff}
** Failers
\x{09f}
/^\p{Ll}/8
a
** Failers
Z
\x{e000}
/^\p{Lm}/8
\x{2b0}
** Failers
a
/^\p{Lo}/8
\x{1bb}
\x{3400}
\x{3401}
\x{4d00}
\x{4db4}
\x{4db5}
** Failers
a
\x{2b0}
\x{4db6}
/^\p{Lt}/8
\x{1c5}
** Failers
a
\x{2b0}
/^\p{Lu}/8
A
** Failers
\x{2b0}
/^\p{Mc}/8
\x{903}
** Failers
X
\x{300}
/^\p{Me}/8
\x{488}
** Failers
X
\x{903}
\x{300}
/^\p{Mn}/8
\x{300}
** Failers
X
\x{903}
/^\p{Nd}+/8
0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
\x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
\x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
** Failers
X
/^\p{Nl}/8
\x{16ee}
** Failers
X
\x{966}
/^\p{No}/8
\x{b2}
\x{b3}
** Failers
X
\x{16ee}
/^\p{Pc}/8
\x5f
\x{203f}
** Failers
X
-
\x{58a}
/^\p{Pd}/8
-
\x{58a}
** Failers
X
\x{203f}
/^\p{Pe}/8
)
]
}
\x{f3b}
** Failers
X
\x{203f}
(
[
{
\x{f3c}
/^\p{Pf}/8
\x{bb}
\x{2019}
** Failers
X
\x{203f}
/^\p{Pi}/8
\x{ab}
\x{2018}
** Failers
X
\x{203f}
/^\p{Po}/8
!
\x{37e}
** Failers
X
\x{203f}
/^\p{Ps}/8
(
[
{
\x{f3c}
** Failers
X
)
]
}
\x{f3b}
/^\p{Sk}/8
\x{2c2}
** Failers
X
\x{9f2}
/^\p{Sm}+/8
+<|~\x{ac}\x{2044}
** Failers
X
\x{9f2}
/^\p{So}/8
\x{a6}
\x{482}
** Failers
X
\x{9f2}
/^\p{Zl}/8
\x{2028}
** Failers
X
\x{2029}
/^\p{Zp}/8
\x{2029}
** Failers
X
\x{2028}
/\p{Nd}+(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}+?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,}(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,}?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2}(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,3}(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}{2,3}?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}?(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}??(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(..)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(...)/8
\x{660}\x{661}\x{662}ABC
/\p{Nd}*+(....)/8
** Failers
\x{660}\x{661}\x{662}ABC
/(?<=A\p{Nd})XYZ/8
A2XYZ
123A5XYZPQR
ABA\x{660}XYZpqr
** Failers
AXYZ
XYZ
/(?<!\pL)XYZ/8
1XYZ
AB=XYZ..
XYZ
** Failers
WXYZ
/[\P{Nd}]+/8
abcd
** Failers
1234
/\D+/8
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\P{Nd}+/8
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D]+/8
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\P{Nd}]+/8
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D\P{Nd}]+/8
11111111111111111111111111111111111111111111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\pL/8
a
A
/\pL/8i
a
A
/\p{Lu}/8
A
aZ
** Failers
abc
/\p{Ll}/8
a
Az
** Failers
ABC
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
** Failers
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8i
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/\x{391}+/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
/\x{391}{3,5}(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
/\x{391}{3,5}?(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
/[\x{391}\x{ff3a}]/8i
\x{391}
\x{ff3a}
\x{3b1}
\x{ff5a}
/^[\X]/8
X123
*** Failers
AXYZ
/^(\X*)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*?)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^(\X*?)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
/^\X(.)/8
*** Failers
A\x{300}\x{301}\x{302}
/^\X{2,3}(.)/8
A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
/^\X{2,3}?(.)/8
A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
/^\X/8
A
A\x{300}BC
A\x{300}\x{301}\x{302}BC
\x{300}
/^\p{Han}+/8
\x{2e81}\x{3007}\x{2f804}\x{31a0}
** Failers
\x{2e7f}
/^\P{Katakana}+/8
\x{3105}
** Failers
\x{30ff}
/^[\p{Arabic}]/8
\x{06e9}
\x{060b}
** Failers
\x{061c}
X\x{06e9}
/^[\P{Yi}]/8
\x{2f800}
** Failers
\x{a014}
\x{a4c6}
/^\p{Any}X/8
AXYZ
\x{1234}XYZ
** Failers
X
/^\P{Any}X/8
** Failers
AX
/^\p{Any}?X/8
XYZ
AXYZ
\x{1234}XYZ
** Failers
ABXYZ
/^\P{Any}?X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
ABXYZ
/^\p{Any}+X/8
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
XYZ
/^\P{Any}+X/8
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
XYZ
/^\p{Any}*X/8
XYZ
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
/^\P{Any}*X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^[\p{Any}]X/8
AXYZ
\x{1234}XYZ
** Failers
X
/^[\P{Any}]X/8
** Failers
AX
/^[\p{Any}]?X/8
XYZ
AXYZ
\x{1234}XYZ
** Failers
ABXYZ
/^[\P{Any}]?X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
ABXYZ
/^[\p{Any}]+X/8
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
XYZ
/^[\P{Any}]+X/8
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
XYZ
/^[\p{Any}]*X/8
XYZ
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
** Failers
/^[\P{Any}]*X/8
XYZ
** Failers
AXYZ
\x{1234}XYZ
A\x{1234}XYZ
/^\p{Any}{3,5}?/8
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\p{Any}{3,5}/8
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\P{Any}{3,5}?/8
** Failers
abcdefgh
\x{1234}\n\r\x{3456}xyz
/^\p{L&}X/8
AXY
aXY
\x{1c5}XY
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]X/8
AXY
aXY
\x{1c5}XY
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^\p{L&}+X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]+X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^\p{L&}+?X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^[\p{L&}]+?X/8
AXY
aXY
AbcdeXyz
\x{1c5}AbXY
abcDEXypqreXlmn
** Failers
\x{1bb}XY
\x{2b0}XY
!XY
/^\P{L&}X/8
!XY
\x{1bb}XY
\x{2b0}XY
** Failers
\x{1c5}XY
AXY
/^[\P{L&}]X/8
!XY
\x{1bb}XY
\x{2b0}XY
** Failers
\x{1c5}XY
AXY
/^(\p{Z}[^\p{C}\p{Z}]+)*$/
\xa0!
/^[\pL](abc)(?1)/
AabcabcYZ
/([\pL]=(abc))*X/
L=abcX
/^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}/8
\x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
/Check property support in non-UTF-8 mode/
/\p{L}{4}/
123abcdefg
123abc\xc4\xc5zz
/\X{1,3}\d/
\x8aBCD
/\X?\d/
\x8aBCD
/\P{L}?\d/
\x8aBCD
/[\PPP\x8a]{1,}\x80/
A\x80
/^[\p{Arabic}]/8
\x{604}
\x{60e}
\x{656}
\x{657}
\x{658}
\x{659}
\x{65a}
\x{65b}
\x{65c}
\x{65d}
\x{65e}
\x{65f}
\x{66a}
\x{6e9}
\x{6ef}
\x{6fa}
** Failers
\x{650}
\x{651}
\x{652}
\x{653}
\x{654}
\x{655}
/^\p{Cyrillic}/8
\x{1d2b}
/^\p{Common}/8
\x{589}
\x{60c}
\x{61f}
\x{964}
\x{965}
/^\p{Inherited}/8
\x{64b}
\x{654}
\x{655}
\x{200c}
** Failers
\x{64a}
\x{656}
/^\p{Shavian}/8
\x{10450}
\x{1047f}
/^\p{Deseret}/8
\x{10400}
\x{1044f}
/^\p{Osmanya}/8
\x{10480}
\x{1049d}
\x{104a0}
\x{104a9}
** Failers
\x{1049e}
\x{1049f}
\x{104aa}
/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8
\x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
/\x{a77d}\x{1d79}/8i
\x{a77d}\x{1d79}
\x{1d79}\x{a77d}
/\x{a77d}\x{1d79}/8
\x{a77d}\x{1d79}
** Failers
\x{1d79}\x{a77d}
/(A)\1/8i
AA
Aa
aa
aA
/(\x{10a})\1/8i
\x{10a}\x{10a}
\x{10a}\x{10b}
\x{10b}\x{10b}
\x{10b}\x{10a}
/The next two tests are for property support in non-UTF-8 mode/
/(?:\p{Lu}|\x20)+/
\x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
/[\p{Lu}\x20]+/
\x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
/\p{Avestan}\p{Bamum}\p{Egyptian_Hieroglyphs}\p{Imperial_Aramaic}\p{Inscriptional_Pahlavi}\p{Inscriptional_Parthian}\p{Javanese}\p{Kaithi}\p{Lisu}\p{Meetei_Mayek}\p{Old_South_Arabian}\p{Old_Turkic}\p{Samaritan}\p{Tai_Tham}\p{Tai_Viet}/8
\x{10b00}\x{a6ef}\x{13007}\x{10857}\x{10b78}\x{10b58}\x{a980}\x{110c1}\x{a4ff}\x{abc0}\x{10a7d}\x{10c48}\x{0800}\x{1aad}\x{aac0}
/^\w+/8W
Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:xdigit:]]*/8W
1a\x{660}\x{bef}\x{16ee}
/^\d+/8W
1\x{660}\x{bef}\x{16ee}
/^[[:digit:]]+/8W
1\x{660}\x{bef}\x{16ee}
/^>\s+/8W
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
/^>\pZ+/8W
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
/^>[[:space:]]*/8W
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
/^>[[:blank:]]*/8W
>\x{20}\x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
/^[[:alpha:]]*/8W
Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
/^[[:alnum:]]*/8W
Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:cntrl:]]*/8W
\x{0}\x{09}\x{1f}\x{7f}\x{9f}
/^[[:graph:]]*/8W
A\x{a1}\x{a0}
/^[[:print:]]*/8W
A z\x{a0}\x{a1}
/^[[:punct:]]*/8W
.+\x{a1}\x{a0}
/\p{Zs}*?\R/
** Failers
a\xFCb
/\p{Zs}*\R/
** Failers
a\xFCb
/ⱥ/8i
Ⱥx
Ⱥ
/[ⱥ]/8i
Ⱥx
Ⱥ
/Ⱥ/8i
Ⱥ
/-- These are tests for extended grapheme clusters --/
/^\X/8+
G\x{34e}\x{34e}X
\x{34e}\x{34e}X
\x04X
\x{1100}X
\x{1100}\x{34e}X
\x{1b04}\x{1b04}X
*These match up to the roman letters
\x{1111}\x{1111}L,L
\x{1111}\x{1111}\x{1169}L,L,V
\x{1111}\x{ae4c}L, LV
\x{1111}\x{ad89}L, LVT
\x{1111}\x{ae4c}\x{1169}L, LV, V
\x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
\x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
\x{1111}\x{ad89}\x{11fe}L, LVT, T
\x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
\x{ad89}\x{11fe}\x{11fe}LVT, T, T
*These match just the first codepoint (invalid sequence)
\x{1111}\x{11fe}L, T
\x{ae4c}\x{1111}LV, L
\x{ae4c}\x{ae4c}LV, LV
\x{ae4c}\x{ad89}LV, LVT
\x{1169}\x{1111}V, L
\x{1169}\x{ae4c}V, LV
\x{1169}\x{ad89}V, LVT
\x{ad89}\x{1111}LVT, L
\x{ad89}\x{1169}LVT, V
\x{ad89}\x{ae4c}LVT, LV
\x{ad89}\x{ad89}LVT, LVT
\x{11fe}\x{1111}T, L
\x{11fe}\x{1169}T, V
\x{11fe}\x{ae4c}T, LV
\x{11fe}\x{ad89}T, LVT
*Test extend and spacing mark
\x{1111}\x{ae4c}\x{0711}L, LV, extend
\x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
\x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
*Test CR, LF, and control
\x0d\x{0711}CR, extend
\x0d\x{1b04}CR, spacingmark
\x0a\x{0711}LF, extend
\x0a\x{1b04}LF, spacingmark
\x0b\x{0711}Control, extend
\x09\x{1b04}Control, spacingmark
*There are no Prepend characters, so we can't test Prepend, CR
/^(?>\X{2})X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/^\X{2,4}X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/^\X{2,4}?X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
/\X*Z/8Y
A\x{300}
/\X*(.)/8Y
A\x{1111}\x{ae4c}\x{1169}
/\X?abc/8Y
\xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\>06\?
/-- --/
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
/[z\x{1e9e}]+/8i
\x{1e9e}\x{00df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
/[z\x{00df}]+/8i
\x{1e9e}\x{00df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
/[z\x{1f88}]+/8i
\x{1f88}\x{1f80}
/-- Characters with more than one other case; test in classes --/
/[z\x{00b5}]+/8i
\x{00b5}\x{039c}\x{03bc}
/[z\x{039c}]+/8i
\x{00b5}\x{039c}\x{03bc}
/[z\x{03bc}]+/8i
\x{00b5}\x{039c}\x{03bc}
/[z\x{00c5}]+/8i
\x{00c5}\x{00e5}\x{212b}
/[z\x{00e5}]+/8i
\x{00c5}\x{00e5}\x{212b}
/[z\x{212b}]+/8i
\x{00c5}\x{00e5}\x{212b}
/[z\x{01c4}]+/8i
\x{01c4}\x{01c5}\x{01c6}
/[z\x{01c5}]+/8i
\x{01c4}\x{01c5}\x{01c6}
/[z\x{01c6}]+/8i
\x{01c4}\x{01c5}\x{01c6}
/[z\x{01c7}]+/8i
\x{01c7}\x{01c8}\x{01c9}
/[z\x{01c8}]+/8i
\x{01c7}\x{01c8}\x{01c9}
/[z\x{01c9}]+/8i
\x{01c7}\x{01c8}\x{01c9}
/[z\x{01ca}]+/8i
\x{01ca}\x{01cb}\x{01cc}
/[z\x{01cb}]+/8i
\x{01ca}\x{01cb}\x{01cc}
/[z\x{01cc}]+/8i
\x{01ca}\x{01cb}\x{01cc}
/[z\x{01f1}]+/8i
\x{01f1}\x{01f2}\x{01f3}
/[z\x{01f2}]+/8i
\x{01f1}\x{01f2}\x{01f3}
/[z\x{01f3}]+/8i
\x{01f1}\x{01f2}\x{01f3}
/[z\x{0345}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{0399}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{03b9}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{1fbe}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/[z\x{0392}]+/8i
\x{0392}\x{03b2}\x{03d0}
/[z\x{03b2}]+/8i
\x{0392}\x{03b2}\x{03d0}
/[z\x{03d0}]+/8i
\x{0392}\x{03b2}\x{03d0}
/[z\x{0395}]+/8i
\x{0395}\x{03b5}\x{03f5}
/[z\x{03b5}]+/8i
\x{0395}\x{03b5}\x{03f5}
/[z\x{03f5}]+/8i
\x{0395}\x{03b5}\x{03f5}
/[z\x{0398}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{03b8}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{03d1}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{03f4}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/[z\x{039a}]+/8i
\x{039a}\x{03ba}\x{03f0}
/[z\x{03ba}]+/8i
\x{039a}\x{03ba}\x{03f0}
/[z\x{03f0}]+/8i
\x{039a}\x{03ba}\x{03f0}
/[z\x{03a0}]+/8i
\x{03a0}\x{03c0}\x{03d6}
/[z\x{03c0}]+/8i
\x{03a0}\x{03c0}\x{03d6}
/[z\x{03d6}]+/8i
\x{03a0}\x{03c0}\x{03d6}
/[z\x{03a1}]+/8i
\x{03a1}\x{03c1}\x{03f1}
/[z\x{03c1}]+/8i
\x{03a1}\x{03c1}\x{03f1}
/[z\x{03f1}]+/8i
\x{03a1}\x{03c1}\x{03f1}
/[z\x{03a3}]+/8i
\x{03A3}\x{03C2}\x{03C3}
/[z\x{03c2}]+/8i
\x{03A3}\x{03C2}\x{03C3}
/[z\x{03c3}]+/8i
\x{03A3}\x{03C2}\x{03C3}
/[z\x{03a6}]+/8i
\x{03a6}\x{03c6}\x{03d5}
/[z\x{03c6}]+/8i
\x{03a6}\x{03c6}\x{03d5}
/[z\x{03d5}]+/8i
\x{03a6}\x{03c6}\x{03d5}
/[z\x{03c9}]+/8i
\x{03c9}\x{03a9}\x{2126}
/[z\x{03a9}]+/8i
\x{03c9}\x{03a9}\x{2126}
/[z\x{2126}]+/8i
\x{03c9}\x{03a9}\x{2126}
/[z\x{1e60}]+/8i
\x{1e60}\x{1e61}\x{1e9b}
/[z\x{1e61}]+/8i
\x{1e60}\x{1e61}\x{1e9b}
/[z\x{1e9b}]+/8i
\x{1e60}\x{1e61}\x{1e9b}
/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
/[z\x{004b}]+/8i
\x{004b}\x{006b}\x{212a}
/[z\x{006b}]+/8i
\x{004b}\x{006b}\x{212a}
/[z\x{212a}]+/8i
\x{004b}\x{006b}\x{212a}
/[z\x{0053}]+/8i
\x{0053}\x{0073}\x{017f}
/[z\x{0073}]+/8i
\x{0053}\x{0073}\x{017f}
/[z\x{017f}]+/8i
\x{0053}\x{0073}\x{017f}
/-- --/
/(ΣΆΜΟΣ) \1/8i
ΣΆΜΟΣ ΣΆΜΟΣ
ΣΆΜΟΣ σάμος
σάμος σάμος
σάμος σάμοσ
σάμος ΣΆΜΟΣ
/(σάμος) \1/8i
ΣΆΜΟΣ ΣΆΜΟΣ
ΣΆΜΟΣ σάμος
σάμος σάμος
σάμος σάμοσ
σάμος ΣΆΜΟΣ
/(ΣΆΜΟΣ) \1*/8i
ΣΆΜΟΣ\x20
ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
/-- Perl matches these --/
/\x{00b5}+/8i
\x{00b5}\x{039c}\x{03bc}
/\x{039c}+/8i
\x{00b5}\x{039c}\x{03bc}
/\x{03bc}+/8i
\x{00b5}\x{039c}\x{03bc}
/\x{00c5}+/8i
\x{00c5}\x{00e5}\x{212b}
/\x{00e5}+/8i
\x{00c5}\x{00e5}\x{212b}
/\x{212b}+/8i
\x{00c5}\x{00e5}\x{212b}
/\x{01c4}+/8i
\x{01c4}\x{01c5}\x{01c6}
/\x{01c5}+/8i
\x{01c4}\x{01c5}\x{01c6}
/\x{01c6}+/8i
\x{01c4}\x{01c5}\x{01c6}
/\x{01c7}+/8i
\x{01c7}\x{01c8}\x{01c9}
/\x{01c8}+/8i
\x{01c7}\x{01c8}\x{01c9}
/\x{01c9}+/8i
\x{01c7}\x{01c8}\x{01c9}
/\x{01ca}+/8i
\x{01ca}\x{01cb}\x{01cc}
/\x{01cb}+/8i
\x{01ca}\x{01cb}\x{01cc}
/\x{01cc}+/8i
\x{01ca}\x{01cb}\x{01cc}
/\x{01f1}+/8i
\x{01f1}\x{01f2}\x{01f3}
/\x{01f2}+/8i
\x{01f1}\x{01f2}\x{01f3}
/\x{01f3}+/8i
\x{01f1}\x{01f2}\x{01f3}
/\x{0345}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{0399}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{03b9}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{1fbe}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
/\x{0392}+/8i
\x{0392}\x{03b2}\x{03d0}
/\x{03b2}+/8i
\x{0392}\x{03b2}\x{03d0}
/\x{03d0}+/8i
\x{0392}\x{03b2}\x{03d0}
/\x{0395}+/8i
\x{0395}\x{03b5}\x{03f5}
/\x{03b5}+/8i
\x{0395}\x{03b5}\x{03f5}
/\x{03f5}+/8i
\x{0395}\x{03b5}\x{03f5}
/\x{0398}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03b8}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03d1}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{03f4}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
/\x{039a}+/8i
\x{039a}\x{03ba}\x{03f0}
/\x{03ba}+/8i
\x{039a}\x{03ba}\x{03f0}
/\x{03f0}+/8i
\x{039a}\x{03ba}\x{03f0}
/\x{03a0}+/8i
\x{03a0}\x{03c0}\x{03d6}
/\x{03c0}+/8i
\x{03a0}\x{03c0}\x{03d6}
/\x{03d6}+/8i
\x{03a0}\x{03c0}\x{03d6}
/\x{03a1}+/8i
\x{03a1}\x{03c1}\x{03f1}
/\x{03c1}+/8i
\x{03a1}\x{03c1}\x{03f1}
/\x{03f1}+/8i
\x{03a1}\x{03c1}\x{03f1}
/\x{03a3}+/8i
\x{03A3}\x{03C2}\x{03C3}
/\x{03c2}+/8i
\x{03A3}\x{03C2}\x{03C3}
/\x{03c3}+/8i
\x{03A3}\x{03C2}\x{03C3}
/\x{03a6}+/8i
\x{03a6}\x{03c6}\x{03d5}
/\x{03c6}+/8i
\x{03a6}\x{03c6}\x{03d5}
/\x{03d5}+/8i
\x{03a6}\x{03c6}\x{03d5}
/\x{03c9}+/8i
\x{03c9}\x{03a9}\x{2126}
/\x{03a9}+/8i
\x{03c9}\x{03a9}\x{2126}
/\x{2126}+/8i
\x{03c9}\x{03a9}\x{2126}
/\x{1e60}+/8i
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e61}+/8i
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e9b}+/8i
\x{1e60}\x{1e61}\x{1e9b}
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
/\x{1f80}+/8i
\x{1f88}\x{1f80}
/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
/\x{004b}+/8i
\x{004b}\x{006b}\x{212a}
/\x{006b}+/8i
\x{004b}\x{006b}\x{212a}
/\x{212a}+/8i
\x{004b}\x{006b}\x{212a}
/\x{0053}+/8i
\x{0053}\x{0073}\x{017f}
/\x{0073}+/8i
\x{0053}\x{0073}\x{017f}
/\x{017f}+/8i
\x{0053}\x{0073}\x{017f}
/^\p{Any}*\d{4}/8
1234
123
/^\X*\w{4}/8
1234
123
/^A\s+Z/8W
A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
/^A[\s]+Z/8W
A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
/^[[:graph:]]+$/8W
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
** Failers
\x{09}
\x{0a}
\x{1D}
\x{20}
\x{85}
\x{a0}
\x{61c}
\x{1680}
\x{180e}
\x{2028}
\x{2029}
\x{202f}
\x{2065}
\x{2066}
\x{2067}
\x{2068}
\x{2069}
\x{3000}
\x{e0002}
\x{e001f}
\x{e0080}
/^[[:print:]]+$/8W
Space: \x{a0}
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
\x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
\x{202f}\x{205f}
\x{3000}
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{180e}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{202f}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
** Failers
\x{09}
\x{1D}
\x{85}
\x{61c}
\x{2028}
\x{2029}
\x{2065}
\x{2066}
\x{2067}
\x{2068}
\x{2069}
\x{e0002}
\x{e001f}
\x{e0080}
/^[[:punct:]]+$/8W
\$+<=>^`|~
!\"#%&'()*,-./:;?@[\\]_{}
\x{a1}\x{a7}
\x{37e}
** Failers
abcde
/^[[:^graph:]]+$/8W
\x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}\x{180e}
\x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
\x{3000}\x{e0002}\x{e001f}\x{e0080}
** Failers
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
/^[[:^print:]]+$/8W
\x{09}\x{1D}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
\x{2068}\x{2069}\x{e0002}\x{e001f}\x{e0080}
** Failers
Space: \x{a0}
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
\x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
\x{202f}\x{205f}
\x{3000}
Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{180e}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{202f}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
\x{fff9}\x{fffa}\x{fffb}
\x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
/^[[:^punct:]]+$/8W
abcde
** Failers
\$+<=>^`|~
!\"#%&'()*,-./:;?@[\\]_{}
\x{a1}\x{a7}
\x{37e}
/[RST]+/8iW
Ss\x{17f}
/[R-T]+/8iW
Ss\x{17f}
/[q-u]+/8iW
Ss\x{17f}
/^s?c/mi8
scat
/[A-`]/i8
abcdefghijklmno
/\C\X*QT/8
Ӆ\x0aT
/[\pS#moq]/
=
/[[:punct:]]/8W
\xc2\xb4
\x{b4}
/[[:^ascii:]]/8W
\x{100}
\x{200}
\x{300}
\x{37e}
a
9
g
/[[:^ascii:]\w]/8W
a
9
g
\x{100}
\x{200}
\x{300}
\x{37e}
/[\w[:^ascii:]]/8W
a
9
g
\x{100}
\x{200}
\x{300}
\x{37e}
/[^[:ascii:]\W]/8W
a
9
g
\x{100}
\x{200}
\x{300}
\x{37e}
/[[:^ascii:]a]/8W
a
9
g
\x{100}
\x{200}
\x{37e}
/[^[:^ascii:]\d]/8W
a
~
0
\a
\x{7f}
\x{389}
\x{20ac}
/(?=.*b)\pL/
11bb
/(?(?=.*b)(?=.*b)\pL|.*c)/
11bb
/-- End of testinput6 --/
+851
View File
@@ -0,0 +1,851 @@
/-- These tests for Unicode property support test PCRE's API and show some of
the compiled code. They are not Perl-compatible. --/
/[\p{L}]/DZ
/[\p{^L}]/DZ
/[\P{L}]/DZ
/[\P{^L}]/DZ
/[abc\p{L}\x{0660}]/8DZ
/[\p{Nd}]/8DZ
1234
/[\p{Nd}+-]+/8DZ
1234
12-34
12+\x{661}-34
** Failers
abcd
/[\x{105}-\x{109}]/8iDZ
\x{104}
\x{105}
\x{109}
** Failers
\x{100}
\x{10a}
/[z-\x{100}]/8iDZ
Z
z
\x{39c}
\x{178}
|
\x{80}
\x{ff}
\x{100}
\x{101}
** Failers
\x{102}
Y
y
/[z-\x{100}]/8DZi
/(?:[\PPa*]*){8,}/
/[\P{Any}]/BZ
/[\P{Any}\E]/BZ
/(\P{Yi}+\277)/
/(\P{Yi}+\277)?/
/(?<=\P{Yi}{3}A)X/
/\p{Yi}+(\P{Yi}+)(?1)/
/(\P{Yi}{2}\277)?/
/[\P{Yi}A]/
/[\P{Yi}\P{Yi}\P{Yi}A]/
/[^\P{Yi}A]/
/[^\P{Yi}\P{Yi}\P{Yi}A]/
/(\P{Yi}*\277)*/
/(\P{Yi}*?\277)*/
/(\p{Yi}*+\277)*/
/(\P{Yi}?\277)*/
/(\P{Yi}??\277)*/
/(\p{Yi}?+\277)*/
/(\P{Yi}{0,3}\277)*/
/(\P{Yi}{0,3}?\277)*/
/(\p{Yi}{0,3}+\277)*/
/\p{Zl}{2,3}+/8BZ



\x{2028}\x{2028}\x{2028}
/\p{Zl}/8BZ
/\p{Lu}{3}+/8BZ
/\pL{2}+/8BZ
/\p{Cc}{2}+/8BZ
/^\p{Cf}/8
\x{180e}
\x{061c}
\x{2066}
\x{2067}
\x{2068}
\x{2069}
/^\p{Cs}/8
\?\x{dfff}
** Failers
\x{09f}
/^\p{Mn}/8
\x{1a1b}
/^\p{Pe}/8
\x{2309}
\x{230b}
/^\p{Ps}/8
\x{2308}
\x{230a}
/^\p{Sc}+/8
$\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
\x{9f2}
** Failers
X
\x{2c2}
/^\p{Zs}/8
\ \
\x{a0}
\x{1680}
\x{2000}
\x{2001}
** Failers
\x{2028}
\x{200d}
/-- These are here rather than in test 6 because Perl has problems with
the negative versions of the properties and behaves has changed how
it behaves for caseless matching. --/
/\p{^Lu}/8i
1234
** Failers
ABC
/\P{Lu}/8i
1234
** Failers
ABC
/\p{Ll}/8i
a
Az
** Failers
ABC
/\p{Lu}/8i
A
a\x{10a0}B
** Failers
a
\x{1d00}
/\p{Lu}/8i
A
aZ
** Failers
abc
/[\x{c0}\x{391}]/8i
\x{c0}
\x{e0}
/-- The next two are special cases where the lengths of the different cases of
the same character differ. The first went wrong with heap frame storage; the
second was broken in all cases. --/
/^\x{023a}+?(\x{0130}+)/8i
\x{023a}\x{2c65}\x{0130}
/^\x{023a}+([^X])/8i
\x{023a}\x{2c65}X
/\x{c0}+\x{116}+/8i
\x{c0}\x{e0}\x{116}\x{117}
/[\x{c0}\x{116}]+/8i
\x{c0}\x{e0}\x{116}\x{117}
/(\x{de})\1/8i
\x{de}\x{de}
\x{de}\x{fe}
\x{fe}\x{fe}
\x{fe}\x{de}
/^\x{c0}$/8i
\x{c0}
\x{e0}
/^\x{e0}$/8i
\x{c0}
\x{e0}
/-- The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
will match it only with UCP support, because without that it has no notion
of case for anything other than the ASCII letters. --/
/((?i)[\x{c0}])/8
\x{c0}
\x{e0}
/(?i:[\x{c0}])/8
\x{c0}
\x{e0}
/-- These are PCRE's extra properties to help with Unicodizing \d etc. --/
/^\p{Xan}/8
ABCD
1234
\x{6ca}
\x{a6c}
\x{10a7}
** Failers
_ABC
/^\p{Xan}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
** Failers
_ABC
/^\p{Xan}+?/8
\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xan}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xan}{2,9}/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xan}{2,9}?/8
\x{6ca}\x{a6c}\x{10a7}_
/^[\p{Xan}]/8
ABCD1234_
1234abcd_
\x{6ca}
\x{a6c}
\x{10a7}
** Failers
_ABC
/^[\p{Xan}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
** Failers
_ABC
/^>\p{Xsp}/8
>\x{1680}\x{2028}\x{0b}
>\x{a0}
** Failers
\x{0b}
/^>\p{Xsp}+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}+?/8
>\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}*/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}{2,9}/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}{2,9}?/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>[\p{Xsp}]/8
>\x{2028}\x{0b}
/^>[\p{Xsp}]+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}/8
>\x{1680}\x{2028}\x{0b}
>\x{a0}
** Failers
\x{0b}
/^>\p{Xps}+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}+?/8
>\x{1680}\x{2028}\x{0b}
/^>\p{Xps}*/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}?/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>[\p{Xps}]/8
>\x{2028}\x{0b}
/^>[\p{Xps}]+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^\p{Xwd}/8
ABCD
1234
\x{6ca}
\x{a6c}
\x{10a7}
_ABC
** Failers
[]
/^\p{Xwd}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}+?/8
\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}{2,9}/8
A_B12\x{6ca}\x{a6c}\x{10a7}
/^\p{Xwd}{2,9}?/8
\x{6ca}\x{a6c}\x{10a7}_
/^[\p{Xwd}]/8
ABCD1234_
1234abcd_
\x{6ca}
\x{a6c}
\x{10a7}
_ABC
** Failers
[]
/^[\p{Xwd}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/-- A check not in UTF-8 mode --/
/^[\p{Xwd}]+/
ABCD1234_
/-- Some negative checks --/
/^[\P{Xwd}]+/8
!.+\x{019}\x{35a}AB
/^[\p{^Xwd}]+/8
!.+\x{019}\x{35a}AB
/[\D]/WBZ8
1\x{3c8}2
/[\d]/WBZ8
>\x{6f4}<
/[\S]/WBZ8
\x{1680}\x{6f4}\x{1680}
/[\s]/WBZ8
>\x{1680}<
/[\W]/WBZ8
A\x{1712}B
/[\w]/WBZ8
>\x{1723}<
/\D/WBZ8
1\x{3c8}2
/\d/WBZ8
>\x{6f4}<
/\S/WBZ8
\x{1680}\x{6f4}\x{1680}
/\s/WBZ8
>\x{1680}>
/\W/WBZ8
A\x{1712}B
/\w/WBZ8
>\x{1723}<
/[[:alpha:]]/WBZ
/[[:lower:]]/WBZ
/[[:upper:]]/WBZ
/[[:alnum:]]/WBZ
/[[:ascii:]]/WBZ
/[[:cntrl:]]/WBZ
/[[:digit:]]/WBZ
/[[:graph:]]/WBZ
/[[:print:]]/WBZ
/[[:punct:]]/WBZ
/[[:space:]]/WBZ
/[[:word:]]/WBZ
/[[:xdigit:]]/WBZ
/-- Unicode properties for \b abd \B --/
/\b...\B/8W
abc_
\x{37e}abc\x{376}
\x{37e}\x{376}\x{371}\x{393}\x{394}
!\x{c0}++\x{c1}\x{c2}
!\x{c0}+++++
/-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/
/\b...\B/8
abc_
** Failers
\x{37e}abc\x{376}
\x{37e}\x{376}\x{371}\x{393}\x{394}
!\x{c0}++\x{c1}\x{c2}
!\x{c0}+++++
/-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/
/\b...\B/W
abc_
!\x{c0}++\x{c1}\x{c2}
!\x{c0}+++++
/-- Some of these are silly, but they check various combinations --/
/[[:^alpha:][:^cntrl:]]+/8WBZ
123
abc
/[[:^cntrl:][:^alpha:]]+/8WBZ
123
abc
/[[:alpha:]]+/8WBZ
abc
/[[:^alpha:]\S]+/8WBZ
123
abc
/[^\d]+/8WBZ
abc123
abc\x{123}
\x{660}abc
/\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ
/\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ
/\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ
/\p{Han}+X\p{Greek}+\x{370}/BZ8
/\p{Xan}+!\p{Xan}+A/BZ
/\p{Xsp}+!\p{Xsp}\t/BZ
/\p{Xps}+!\p{Xps}\t/BZ
/\p{Xwd}+!\p{Xwd}_/BZ
/A+\p{N}A+\dB+\p{N}*B+\d*/WBZ
/-- These behaved oddly in Perl, so they are kept in this test --/
/(\x{23a}\x{23a}\x{23a})?\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
/(ȺȺȺ)?\1/8i
ȺȺȺⱥⱥ
/(\x{23a}\x{23a}\x{23a})?\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
/(ȺȺȺ)?\1/8i
ȺȺȺⱥⱥⱥ
/(\x{23a}\x{23a}\x{23a})\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
/(ȺȺȺ)\1/8i
ȺȺȺⱥⱥ
/(\x{23a}\x{23a}\x{23a})\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
/(ȺȺȺ)\1/8i
ȺȺȺⱥⱥⱥ
/(\x{2c65}\x{2c65})\1/8i
\x{2c65}\x{2c65}\x{23a}\x{23a}
/(ⱥⱥ)\1/8i
ⱥⱥȺȺ
/(\x{23a}\x{23a}\x{23a})\1Y/8i
X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
/(\x{2c65}\x{2c65})\1Y/8i
X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
/-- --/
/-- These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE --/
/^[\p{Batak}]/8
\x{1bc0}
\x{1bff}
** Failers
\x{1bf4}
/^[\p{Brahmi}]/8
\x{11000}
\x{1106f}
** Failers
\x{1104e}
/^[\p{Mandaic}]/8
\x{840}
\x{85e}
** Failers
\x{85c}
\x{85d}
/-- --/
/(\X*)(.)/s8
A\x{300}
/^S(\X*)e(\X*)$/8
Stéréo
/^\X/8
́réo
/^a\X41z/<JS>
aX41z
*** Failers
aAz
/(?<=ab\Cde)X/8
/\X/
a\P
a\P\P
/\Xa/
aa\P
aa\P\P
/\X{2}/
aa\P
aa\P\P
/\X+a/
a\P
aa\P
aa\P\P
/\X+?a/
a\P
ab\P
aa\P
aa\P\P
aba\P
/-- These Unicode 6.1.0 scripts are not known to Perl. --/
/\p{Chakma}\d/8W
\x{11100}\x{1113c}
/\p{Takri}\d/8W
\x{11680}\x{116c0}
/^\X/8
A\P
A\P\P
A\x{300}\x{301}\P
A\x{300}\x{301}\P\P
A\x{301}\P
A\x{301}\P\P
/^\X{2,3}/8
A\P
A\P\P
AA\P
AA\P\P
A\x{300}\x{301}\P
A\x{300}\x{301}\P\P
A\x{300}\x{301}A\x{300}\x{301}\P
A\x{300}\x{301}A\x{300}\x{301}\P\P
/^\X{2}/8
AA\P
AA\P\P
A\x{300}\x{301}A\x{300}\x{301}\P
A\x{300}\x{301}A\x{300}\x{301}\P\P
/^\X+/8
AA\P
AA\P\P
/^\X+?Z/8
AA\P
AA\P\P
/A\x{3a3}B/8iDZ
/\x{3a3}B/8iDZ
/[\x{3a3}]/8iBZ
/[^\x{3a3}]/8iBZ
/[\x{3a3}]+/8iBZ
/[^\x{3a3}]+/8iBZ
/a*\x{3a3}/8iBZ
/\x{3a3}+a/8iBZ
/\x{3a3}*\x{3c2}/8iBZ
/\x{3a3}{3}/8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
/\x{3a3}{2,4}/8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
/\x{3a3}{2,4}?/8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
/\x{3a3}+./8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
/\x{3a3}++./8i+
** Failers
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
/\x{3a3}*\x{3c2}/8iBZ
/[^\x{3a3}]*\x{3c2}/8iBZ
/[^a]*\x{3c2}/8iBZ
/ist/8iBZ
ikt
/is+t/8i
iSs\x{17f}t
ikt
/is+?t/8i
ikt
/is?t/8i
ikt
/is{2}t/8i
iskt
/-- This property is a PCRE special --/
/^\p{Xuc}/8
$abc
@abc
`abc
\x{1234}abc
** Failers
abc
/^\p{Xuc}+/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}+?/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}+?\*/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}++/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}{3,5}/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\p{Xuc}{3,5}?/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^[\p{Xuc}]/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^[\p{Xuc}]+/8
$@`\x{a0}\x{1234}\x{e000}**
** Failers
\x{9f}
/^\P{Xuc}/8
abc
** Failers
$abc
@abc
`abc
\x{1234}abc
/^[\P{Xuc}]/8
abc
** Failers
$abc
@abc
`abc
\x{1234}abc
/-- Some auto-possessification tests --/
/\pN+\z/BZ
/\PN+\z/BZ
/\pN+/BZ
/\PN+/BZ
/\p{Any}+\p{Any} \p{Any}+\P{Any} \p{Any}+\p{L&} \p{Any}+\p{L} \p{Any}+\p{Lu} \p{Any}+\p{Han} \p{Any}+\p{Xan} \p{Any}+\p{Xsp} \p{Any}+\p{Xps} \p{Xwd}+\p{Any} \p{Any}+\p{Xuc}/BWZx
/\p{L&}+\p{Any} \p{L&}+\p{L&} \P{L&}+\p{L&} \p{L&}+\p{L} \p{L&}+\p{Lu} \p{L&}+\p{Han} \p{L&}+\p{Xan} \p{L&}+\P{Xan} \p{L&}+\p{Xsp} \p{L&}+\p{Xps} \p{Xwd}+\p{L&} \p{L&}+\p{Xuc}/BWZx
/\p{N}+\p{Any} \p{N}+\p{L&} \p{N}+\p{L} \p{N}+\P{L} \p{N}+\P{N} \p{N}+\p{Lu} \p{N}+\p{Han} \p{N}+\p{Xan} \p{N}+\p{Xsp} \p{N}+\p{Xps} \p{Xwd}+\p{N} \p{N}+\p{Xuc}/BWZx
/\p{Lu}+\p{Any} \p{Lu}+\p{L&} \p{Lu}+\p{L} \p{Lu}+\p{Lu} \P{Lu}+\p{Lu} \p{Lu}+\p{Nd} \p{Lu}+\P{Nd} \p{Lu}+\p{Han} \p{Lu}+\p{Xan} \p{Lu}+\p{Xsp} \p{Lu}+\p{Xps} \p{Xwd}+\p{Lu} \p{Lu}+\p{Xuc}/BWZx
/\p{Han}+\p{Lu} \p{Han}+\p{L&} \p{Han}+\p{L} \p{Han}+\p{Lu} \p{Han}+\p{Arabic} \p{Arabic}+\p{Arabic} \p{Han}+\p{Xan} \p{Han}+\p{Xsp} \p{Han}+\p{Xps} \p{Xwd}+\p{Han} \p{Han}+\p{Xuc}/BWZx
/\p{Xan}+\p{Any} \p{Xan}+\p{L&} \P{Xan}+\p{L&} \p{Xan}+\p{L} \p{Xan}+\p{Lu} \p{Xan}+\p{Han} \p{Xan}+\p{Xan} \p{Xan}+\P{Xan} \p{Xan}+\p{Xsp} \p{Xan}+\p{Xps} \p{Xwd}+\p{Xan} \p{Xan}+\p{Xuc}/BWZx
/\p{Xsp}+\p{Any} \p{Xsp}+\p{L&} \p{Xsp}+\p{L} \p{Xsp}+\p{Lu} \p{Xsp}+\p{Han} \p{Xsp}+\p{Xan} \p{Xsp}+\p{Xsp} \P{Xsp}+\p{Xsp} \p{Xsp}+\p{Xps} \p{Xwd}+\p{Xsp} \p{Xsp}+\p{Xuc}/BWZx
/\p{Xwd}+\p{Any} \p{Xwd}+\p{L&} \p{Xwd}+\p{L} \p{Xwd}+\p{Lu} \p{Xwd}+\p{Han} \p{Xwd}+\p{Xan} \p{Xwd}+\p{Xsp} \p{Xwd}+\p{Xps} \p{Xwd}+\p{Xwd} \p{Xwd}+\P{Xwd} \p{Xwd}+\p{Xuc}/BWZx
/\p{Xuc}+\p{Any} \p{Xuc}+\p{L&} \p{Xuc}+\p{L} \p{Xuc}+\p{Lu} \p{Xuc}+\p{Han} \p{Xuc}+\p{Xan} \p{Xuc}+\p{Xsp} \p{Xuc}+\p{Xps} \p{Xwd}+\p{Xuc} \p{Xuc}+\p{Xuc} \p{Xuc}+\P{Xuc}/BWZx
/\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/BWZx
/\p{Xan}+\p{L} \p{Xan}+\p{N} \p{Xan}+\p{C} \p{Xan}+\P{L} \P{Xan}+\p{N} \p{Xan}+\P{C}/BWZx
/\p{L}+\p{Xan} \p{N}+\p{Xan} \p{C}+\p{Xan} \P{L}+\p{Xan} \p{N}+\p{Xan} \P{C}+\p{Xan} \p{L}+\P{Xan}/BWZx
/\p{Xan}+\p{Lu} \p{Xan}+\p{Nd} \p{Xan}+\p{Cc} \p{Xan}+\P{Ll} \P{Xan}+\p{No} \p{Xan}+\P{Cf}/BWZx
/\p{Lu}+\p{Xan} \p{Nd}+\p{Xan} \p{Cs}+\p{Xan} \P{Lt}+\p{Xan} \p{Nl}+\p{Xan} \P{Cc}+\p{Xan} \p{Lt}+\P{Xan}/BWZx
/\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/BWZx
/\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/BWZx
/\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/BWZx
/\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/BWZx
/\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/BWZx
/\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/BWZx
/-- End auto-possessification tests --/
/\w+/8CWBZ
abcd
/[\p{N}]?+/BZO
/[\p{L}ab]{2,3}+/BZO
/\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \C+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/BZx
/.+\X/BZxs
/\X+$/BZxm
/\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\C \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/BZx
/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/8WBZ
/[RST]+/8iWBZ
/[R-T]+/8iWBZ
/[Q-U]+/8iWBZ
/^s?c/mi8I
scat
/a[[:punct:]b]/WBZ
/a[[:punct:]b]/8WBZ
/a[b[:punct:]]/8WBZ
/L(?#(|++<!(2)?/B8COZ
/L(?#(|++<!(2)?/B8WCZ
/-- End of testinput7 --/
+4851
View File
@@ -0,0 +1,4851 @@
/-- This set of tests check the DFA matching functionality of pcre_dfa_exec(),
excluding UTF and Unicode property support. The -dfa flag must be used with
pcretest when running it. --/
< forbid 8W
/abc/
abc
/ab*c/
abc
abbbbc
ac
/ab+c/
abc
abbbbbbc
*** Failers
ac
ab
/a*/O
a
aaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
/(a|abcd|african)/
a
abcd
african
/^abc/
abcdef
*** Failers
xyzabc
xyz\nabc
/^abc/m
abcdef
xyz\nabc
*** Failers
xyzabc
/\Aabc/
abcdef
*** Failers
xyzabc
xyz\nabc
/\Aabc/m
abcdef
*** Failers
xyzabc
xyz\nabc
/\Gabc/
abcdef
xyzabc\>3
*** Failers
xyzabc
xyzabc\>2
/x\dy\Dz/
x9yzz
x0y+z
*** Failers
xyz
xxy0z
/x\sy\Sz/
x yzz
x y+z
*** Failers
xyz
xxyyz
/x\wy\Wz/
xxy+z
*** Failers
xxy0z
x+y+z
/x.y/
x+y
x-y
*** Failers
x\ny
/x.y/s
x+y
x-y
x\ny
/(a.b(?s)c.d|x.y)p.q/
a+bc+dp+q
a+bc\ndp+q
x\nyp+q
*** Failers
a\nbc\ndp+q
a+bc\ndp\nq
x\nyp\nq
/a\d\z/
ba0
*** Failers
ba0\n
ba0\ncd
/a\d\z/m
ba0
*** Failers
ba0\n
ba0\ncd
/a\d\Z/
ba0
ba0\n
*** Failers
ba0\ncd
/a\d\Z/m
ba0
ba0\n
*** Failers
ba0\ncd
/a\d$/
ba0
ba0\n
*** Failers
ba0\ncd
/a\d$/m
ba0
ba0\n
ba0\ncd
*** Failers
/abc/i
abc
aBc
ABC
/[^a]/
abcd
/ab?\w/
abz
abbz
azz
/x{0,3}yz/
ayzq
axyzq
axxyz
axxxyzq
axxxxyzq
*** Failers
ax
axx
/x{3}yz/
axxxyzq
axxxxyzq
*** Failers
ax
axx
ayzq
axyzq
axxyz
/x{2,3}yz/
axxyz
axxxyzq
axxxxyzq
*** Failers
ax
axx
ayzq
axyzq
/[^a]+/O
bac
bcdefax
*** Failers
aaaaa
/[^a]*/O
bac
bcdefax
*** Failers
aaaaa
/[^a]{3,5}/O
xyz
awxyza
abcdefa
abcdefghijk
*** Failers
axya
axa
aaaaa
/\d*/
1234b567
xyz
/\D*/
a1234b567
xyz
/\d+/
ab1234c56
*** Failers
xyz
/\D+/
ab123c56
*** Failers
789
/\d?A/
045ABC
ABC
*** Failers
XYZ
/\D?A/
ABC
BAC
9ABC
*** Failers
/a+/
aaaa
/^.*xyz/
xyz
ggggggggxyz
/^.+xyz/
abcdxyz
axyz
*** Failers
xyz
/^.?xyz/
xyz
cxyz
/^\d{2,3}X/
12X
123X
*** Failers
X
1X
1234X
/^[abcd]\d/
a45
b93
c99z
d04
*** Failers
e45
abcd
abcd1234
1234
/^[abcd]*\d/
a45
b93
c99z
d04
abcd1234
1234
*** Failers
e45
abcd
/^[abcd]+\d/
a45
b93
c99z
d04
abcd1234
*** Failers
1234
e45
abcd
/^a+X/
aX
aaX
/^[abcd]?\d/
a45
b93
c99z
d04
1234
*** Failers
abcd1234
e45
/^[abcd]{2,3}\d/
ab45
bcd93
*** Failers
1234
a36
abcd1234
ee45
/^(abc)*\d/
abc45
abcabcabc45
42xyz
*** Failers
/^(abc)+\d/
abc45
abcabcabc45
*** Failers
42xyz
/^(abc)?\d/
abc45
42xyz
*** Failers
abcabcabc45
/^(abc){2,3}\d/
abcabc45
abcabcabc45
*** Failers
abcabcabcabc45
abc45
42xyz
/1(abc|xyz)2(?1)3/
1abc2abc3456
1abc2xyz3456
/^(a*\w|ab)=(a*\w|ab)/
ab=ab
/^(a*\w|ab)=(?1)/
ab=ab
/^([^()]|\((?1)*\))*$/
abc
a(b)c
a(b(c))d
*** Failers)
a(b(c)d
/^>abc>([^()]|\((?1)*\))*<xyz<$/
>abc>123<xyz<
>abc>1(2)3<xyz<
>abc>(1(2)3)<xyz<
/^(?>a*)\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
*** Failers
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
<>
<abcd>
<abc <123> hij>
<abc <def> hij>
<abc<>def>
<abc<>
*** Failers
<abc
/^(?(?=abc)\w{3}:|\d\d)$/
abc:
12
*** Failers
123
xyz
/^(?(?!abc)\d\d|\w{3}:)$/
abc:
12
*** Failers
123
xyz
/^(?=abc)\w{5}:$/
abcde:
*** Failers
abc..
123
vwxyz
/^(?!abc)\d\d$/
12
*** Failers
abcde:
abc..
123
vwxyz
/(?<=abc|xy)123/
abc12345
wxy123z
*** Failers
123abc
/(?<!abc|xy)123/
123abc
mno123456
*** Failers
abc12345
wxy123z
/abc(?C1)xyz/
abcxyz
123abcxyz999
/(ab|cd){3,4}/C
ababab
abcdabcd
abcdcdcdcdcd
/^abc/
abcdef
*** Failers
abcdef\B
/^(a*|xyz)/
bcd
aaabcd
xyz
xyz\N
*** Failers
bcd\N
/xyz$/
xyz
xyz\n
*** Failers
xyz\Z
xyz\n\Z
/xyz$/m
xyz
xyz\n
abcxyz\npqr
abcxyz\npqr\Z
xyz\n\Z
*** Failers
xyz\Z
/\Gabc/
abcdef
defabcxyz\>3
*** Failers
defabcxyz
/^abcdef/
ab\P
abcde\P
abcdef\P
*** Failers
abx\P
/^a{2,4}\d+z/
a\P
aa\P
aa2\P
aaa\P
aaa23\P
aaaa12345\P
aa0z\P
aaaa4444444444444z\P
*** Failers
az\P
aaaaa\P
a56\P
/^abcdef/
abc\P
def\R
/(?<=foo)bar/
xyzfo\P
foob\P\>2
foobar...\R\P\>4
xyzfo\P
foobar\>2
*** Failers
xyzfo\P
obar\R
/(ab*(cd|ef))+X/
adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
cdabbbbbbbb\P\R\B\Z
efabbbbbbbbbbbbbbbb\P\R\B\Z
bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
/(a|b)/SF>testsavedregex
<testsavedregex
abc
** Failers
def
/the quick brown fox/
the quick brown fox
The quick brown FOX
What do you know about the quick brown fox?
What do you know about THE QUICK BROWN FOX?
/The quick brown fox/i
the quick brown fox
The quick brown FOX
What do you know about the quick brown fox?
What do you know about THE QUICK BROWN FOX?
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
abcd\t\n\r\f\a\e9;\$\\?caxyz
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
abxyzpqrrrabbxyyyypqAzz
abxyzpqrrrabbxyyyypqAzz
aabxyzpqrrrabbxyyyypqAzz
aaabxyzpqrrrabbxyyyypqAzz
aaaabxyzpqrrrabbxyyyypqAzz
abcxyzpqrrrabbxyyyypqAzz
aabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypAzz
aaabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypqqAzz
aaabcxyzpqrrrabbxyyyypqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqqAzz
aaaabcxyzpqrrrabbxyyyypqAzz
abxyzzpqrrrabbxyyyypqAzz
aabxyzzzpqrrrabbxyyyypqAzz
aaabxyzzzzpqrrrabbxyyyypqAzz
aaaabxyzzzzpqrrrabbxyyyypqAzz
abcxyzzpqrrrabbxyyyypqAzz
aabcxyzzzpqrrrabbxyyyypqAzz
aaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
aaabcxyzpqrrrabbxyyyypABzz
aaabcxyzpqrrrabbxyyyypABBzz
>>>aaabxyzpqrrrabbxyyyypqAzz
>aaaabxyzpqrrrabbxyyyypqAzz
>>>>abcxyzpqrrrabbxyyyypqAzz
*** Failers
abxyzpqrrabbxyyyypqAzz
abxyzpqrrrrabbxyyyypqAzz
abxyzpqrrrabxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyypqAzz
aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
/^(abc){1,2}zz/
abczz
abcabczz
*** Failers
zz
abcabcabczz
>>abczz
/^(b+?|a){1,2}?c/
bc
bbc
bbbc
bac
bbac
aac
abbbbbbbbbbbc
bbbbbbbbbbbac
*** Failers
aaac
abbbbbbbbbbbac
/^(b+|a){1,2}c/
bc
bbc
bbbc
bac
bbac
aac
abbbbbbbbbbbc
bbbbbbbbbbbac
*** Failers
aaac
abbbbbbbbbbbac
/^(b+|a){1,2}?bc/
bbc
/^(b*|ba){1,2}?bc/
babc
bbabc
bababc
*** Failers
bababbc
babababc
/^(ba|b*){1,2}?bc/
babc
bbabc
bababc
*** Failers
bababbc
babababc
/^\ca\cA\c[\c{\c:/
\x01\x01\e;z
/^[ab\]cde]/
athing
bthing
]thing
cthing
dthing
ething
*** Failers
fthing
[thing
\\thing
/^[]cde]/
]thing
cthing
dthing
ething
*** Failers
athing
fthing
/^[^ab\]cde]/
fthing
[thing
\\thing
*** Failers
athing
bthing
]thing
cthing
dthing
ething
/^[^]cde]/
athing
fthing
*** Failers
]thing
cthing
dthing
ething
/^\/
/^ÿ/
ÿ
/^[0-9]+$/
0
1
2
3
4
5
6
7
8
9
10
100
*** Failers
abc
/^.*nter/
enter
inter
uponter
/^xxx[0-9]+$/
xxx0
xxx1234
*** Failers
xxx
/^.+[0-9][0-9][0-9]$/
x123
xx123
123456
*** Failers
123
x1234
/^.+?[0-9][0-9][0-9]$/
x123
xx123
123456
*** Failers
123
x1234
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
abc!pqr=apquxz.ixr.zzz.ac.uk
*** Failers
!pqr=apquxz.ixr.zzz.ac.uk
abc!=apquxz.ixr.zzz.ac.uk
abc!pqr=apquxz:ixr.zzz.ac.uk
abc!pqr=apquxz.ixr.zzz.ac.ukk
/:/
Well, we need a colon: somewhere
*** Fail if we don't
/([\da-f:]+)$/i
0abc
abc
fed
E
::
5f03:12C0::932e
fed def
Any old stuff
*** Failers
0zzz
gzzz
fed\x20
Any old rubbish
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
.1.2.3
A.12.123.0
*** Failers
.1.2.3333
1.2.3
1234.2.3
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1 IN SOA non-sp1 non-sp2(
1 IN SOA non-sp1 non-sp2 (
*** Failers
1IN SOA non-sp1 non-sp2(
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
a.
Z.
2.
ab-c.pq-r.
sxk.zzz.ac.uk.
x-.y-.
*** Failers
-abc.peq.
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
*.a
*.b0-a
*.c3-b.c
*.c-a.b-c
*** Failers
*.0
*.a-
*.a-b.c-
*.c-a.0-c
/^(?=ab(de))(abd)(e)/
abde
/^(?!(ab)de|x)(abd)(f)/
abdf
/^(?=(ab(cd)))(ab)/
abcd
/^[\da-f](\.[\da-f])*$/i
a.b.c.d
A.B.C.D
a.b.c.1.2.3.C
/^\".*\"\s*(;.*)?$/
\"1234\"
\"abcd\" ;
\"\" ; rhubarb
*** Failers
\"1234\" : things
/^$/
\
*** Failers
/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
ab c
*** Failers
abc
ab cde
/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
ab c
*** Failers
abc
ab cde
/^ a\ b[c ]d $/x
a bcd
a b d
*** Failers
abcd
ab d
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
abcdefhijklm
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
abcdefhijklm
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
a+ Z0+\x08\n\x1d\x12
/^[.^$|()*+?{,}]+/
.^\$(*+)|{?,?}
/^a*\w/
z
az
aaaz
a
aa
aaaa
a+
aa+
/^a*?\w/
z
az
aaaz
a
aa
aaaa
a+
aa+
/^a+\w/
az
aaaz
aa
aaaa
aa+
/^a+?\w/
az
aaaz
aa
aaaa
aa+
/^\d{8}\w{2,}/
1234567890
12345678ab
12345678__
*** Failers
1234567
/^[aeiou\d]{4,5}$/
uoie
1234
12345
aaaaa
*** Failers
123456
/^[aeiou\d]{4,5}?/
uoie
1234
12345
aaaaa
123456
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
From abcd Mon Sep 01 12:33:02 1997
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
From abcd Mon Sep 01 12:33:02 1997
From abcd Mon Sep 1 12:33:02 1997
*** Failers
From abcd Sep 01 12:33:02 1997
/^12.34/s
12\n34
12\r34
/\w+(?=\t)/
the quick brown\t fox
/foo(?!bar)(.*)/
foobar is foolish see?
/(?:(?!foo)...|^.{0,2})bar(.*)/
foobar crowbar etc
barrel
2barrel
A barrel
/^(\D*)(?=\d)(?!123)/
abc456
*** Failers
abc123
/^1234(?# test newlines
inside)/
1234
/^1234 #comment in extended re
/x
1234
/#rhubarb
abcd/x
abcd
/^abcd#rhubarb/x
abcd
/(?!^)abc/
the abc
*** Failers
abc
/(?=^)abc/
abc
*** Failers
the abc
/^[ab]{1,3}(ab*|b)/O
aabbbbb
/^[ab]{1,3}?(ab*|b)/O
aabbbbb
/^[ab]{1,3}?(ab*?|b)/O
aabbbbb
/^[ab]{1,3}(ab*?|b)/O
aabbbbb
/ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # one word, optionally followed by....
(?:
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
\(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) | # comments, or...
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
# quoted strings
)*
< (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # leading <
(?: @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* , (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
)* # further okay, if led by comma
: # closing colon
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* )? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
/x
Alan Other <user\@dom.ain>
<user\@dom.ain>
user\@dom.ain
\"A. Other\" <user.1234\@dom.ain> (a comment)
A. Other <user.1234\@dom.ain> (a comment)
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
A missing angle <user\@some.where
*** Failers
The quick brown fox
/[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional leading comment
(?:
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
# leading word
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
(?:
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
|
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
) # "special" comment or quoted string
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
)*
<
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# <
(?:
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
(?: ,
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
)* # additional domains
:
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address spec
> # >
# name and address
)
/x
Alan Other <user\@dom.ain>
<user\@dom.ain>
user\@dom.ain
\"A. Other\" <user.1234\@dom.ain> (a comment)
A. Other <user.1234\@dom.ain> (a comment)
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
A missing angle <user\@some.where
*** Failers
The quick brown fox
/abc\0def\00pqr\000xyz\0000AB/
abc\0def\00pqr\000xyz\0000AB
abc456 abc\0def\00pqr\000xyz\0000ABCDE
/abc\x0def\x00pqr\x000xyz\x0000AB/
abc\x0def\x00pqr\x000xyz\x0000AB
abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
/^[\000-\037]/
\0A
\01B
\037C
/\0*/
\0\0\0\0
/A\x0{2,3}Z/
The A\x0\x0Z
An A\0\x0\0Z
*** Failers
A\0Z
A\0\x0\0\x0Z
/^\s/
\040abc
\x0cabc
\nabc
\rabc
\tabc
*** Failers
abc
/^a b
c/x
abc
/ab{1,3}bc/
abbbbc
abbbc
abbc
*** Failers
abc
abbbbbc
/([^.]*)\.([^:]*):[T ]+(.*)/
track1.title:TBlah blah blah
/([^.]*)\.([^:]*):[T ]+(.*)/i
track1.title:TBlah blah blah
/([^.]*)\.([^:]*):[t ]+(.*)/i
track1.title:TBlah blah blah
/^[W-c]+$/
WXY_^abc
*** Failers
wxy
/^[W-c]+$/i
WXY_^abc
wxy_^ABC
/^[\x3f-\x5F]+$/i
WXY_^abc
wxy_^ABC
/^abc$/m
abc
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
/^abc$/
abc
*** Failers
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
/\Aabc\Z/m
abc
abc\n
*** Failers
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
/\A(.)*\Z/s
abc\ndef
/\A(.)*\Z/m
*** Failers
abc\ndef
/(?:b)|(?::+)/
b::c
c::b
/[-az]+/
az-
*** Failers
b
/[az-]+/
za-
*** Failers
b
/[a\-z]+/
a-z
*** Failers
b
/[a-z]+/
abcdxyz
/[\d-]+/
12-34
*** Failers
aaa
/[\d-z]+/
12-34z
*** Failers
aaa
/\x5c/
\\
/\x20Z/
the Zoo
*** Failers
Zulu
/ab{3cd/
ab{3cd
/ab{3,cd/
ab{3,cd
/ab{3,4a}cd/
ab{3,4a}cd
/{4,5a}bc/
{4,5a}bc
/^a.b/<lf>
a\rb
*** Failers
a\nb
/abc$/
abc
abc\n
*** Failers
abc\ndef
/(abc)\123/
abc\x53
/(abc)\223/
abc\x93
/(abc)\323/
abc\xd3
/(abc)\100/
abc\x40
abc\100
/(abc)\1000/
abc\x400
abc\x40\x30
abc\1000
abc\100\x30
abc\100\060
abc\100\60
/^A\8B\9C$/
A8B9C
*** Failers
A\08B\09C
/^[A\8B\9C]+$/
A8B9C
*** Failers
A8B9C\x00
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
abcdefghijk\12S
/ab\idef/
abidef
/a{0}bc/
bc
/(a|(bc)){0,0}?xyz/
xyz
/abc[\10]de/
abc\010de
/abc[\1]de/
abc\1de
/(abc)[\1]de/
abc\1de
/(?s)a.b/
a\nb
/^([^a])([^\b])([^c]*)([^d]{3,4})/
baNOTccccd
baNOTcccd
baNOTccd
bacccd
*** Failers
anything
b\bc
baccd
/[^a]/
Abc
/[^a]/i
Abc
/[^a]+/
AAAaAbc
/[^a]+/i
AAAaAbc
/[^a]+/
bbb\nccc
/[^k]$/
abc
*** Failers
abk
/[^k]{2,3}$/
abc
kbc
kabc
*** Failers
abk
akb
akk
/^\d{8,}\@.+[^k]$/
12345678\@a.b.c.d
123456789\@x.y.z
*** Failers
12345678\@x.y.uk
1234567\@a.b.c.d
/[^a]/
aaaabcd
aaAabcd
/[^a]/i
aaaabcd
aaAabcd
/[^az]/
aaaabcd
aaAabcd
/[^az]/i
aaaabcd
aaAabcd
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
/P[^*]TAIRE[^*]{1,6}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
/P[^*]TAIRE[^*]{1,}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
/(\.\d\d[1-9]?)\d+/
1.230003938
1.875000282
1.235
/(\.\d\d((?=0)|\d(?=\d)))/
1.230003938
1.875000282
*** Failers
1.235
/a(?)b/
ab
/\b(foo)\s+(\w+)/i
Food is on the foo table
/foo(.*)bar/
The food is under the bar in the barn.
/foo(.*?)bar/
The food is under the bar in the barn.
/(.*)(\d*)/O
I have 2 numbers: 53147
/(.*)(\d+)/
I have 2 numbers: 53147
/(.*?)(\d*)/O
I have 2 numbers: 53147
/(.*?)(\d+)/
I have 2 numbers: 53147
/(.*)(\d+)$/
I have 2 numbers: 53147
/(.*?)(\d+)$/
I have 2 numbers: 53147
/(.*)\b(\d+)$/
I have 2 numbers: 53147
/(.*\D)(\d+)$/
I have 2 numbers: 53147
/^\D*(?!123)/
ABC123
/^(\D*)(?=\d)(?!123)/
ABC445
*** Failers
ABC123
/^[W-]46]/
W46]789
-46]789
*** Failers
Wall
Zebra
42
[abcd]
]abcd[
/^[W-\]46]/
W46]789
Wall
Zebra
Xylophone
42
[abcd]
]abcd[
\\backslash
*** Failers
-46]789
well
/\d\d\/\d\d\/\d\d\d\d/
01/01/2000
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
/^(a){0,0}/
bcd
abc
aab
/^(a){0,1}/
bcd
abc
aab
/^(a){0,2}/
bcd
abc
aab
/^(a){0,3}/
bcd
abc
aab
aaa
/^(a){0,}/
bcd
abc
aab
aaa
aaaaaaaa
/^(a){1,1}/
bcd
abc
aab
/^(a){1,2}/
bcd
abc
aab
/^(a){1,3}/
bcd
abc
aab
aaa
/^(a){1,}/
bcd
abc
aab
aaa
aaaaaaaa
/.*\.gif/
borfle\nbib.gif\nno
/.{0,}\.gif/
borfle\nbib.gif\nno
/.*\.gif/m
borfle\nbib.gif\nno
/.*\.gif/s
borfle\nbib.gif\nno
/.*\.gif/ms
borfle\nbib.gif\nno
/.*$/
borfle\nbib.gif\nno
/.*$/m
borfle\nbib.gif\nno
/.*$/s
borfle\nbib.gif\nno
/.*$/ms
borfle\nbib.gif\nno
/.*$/
borfle\nbib.gif\nno\n
/.*$/m
borfle\nbib.gif\nno\n
/.*$/s
borfle\nbib.gif\nno\n
/.*$/ms
borfle\nbib.gif\nno\n
/(.*X|^B)/
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/(.*X|^B)/m
abcde\n1234Xyz
BarFoo
abcde\nBar
/(.*X|^B)/s
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/(.*X|^B)/ms
abcde\n1234Xyz
BarFoo
abcde\nBar
/(?s)(.*X|^B)/
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/(?s:.*X|^B)/
abcde\n1234Xyz
BarFoo
*** Failers
abcde\nBar
/^.*B/
**** Failers
abc\nB
/(?s)^.*B/
abc\nB
/(?m)^.*B/
abc\nB
/(?ms)^.*B/
abc\nB
/(?ms)^B/
abc\nB
/(?s)B$/
B\n
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
123456654321
/^\d\d\d\d\d\d\d\d\d\d\d\d/
123456654321
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
123456654321
/^[abc]{12}/
abcabcabcabc
/^[a-c]{12}/
abcabcabcabc
/^(a|b|c){12}/
abcabcabcabc
/^[abcdefghijklmnopqrstuvwxy0123456789]/
n
*** Failers
z
/abcde{0,0}/
abcd
*** Failers
abce
/ab[cd]{0,0}e/
abe
*** Failers
abcde
/ab(c){0,0}d/
abd
*** Failers
abcd
/a(b*)/
a
ab
abbbb
*** Failers
bbbbb
/ab\d{0}e/
abe
*** Failers
ab1e
/"([^\\"]+|\\.)*"/
the \"quick\" brown fox
\"the \\\"quick\\\" brown fox\"
/.*?/g+
abc
/\b/g+
abc
/\b/+g
abc
//g
abc
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
/a[^a]b/
acb
a\nb
/a.b/
acb
*** Failers
a\nb
/a[^a]b/s
acb
a\nb
/a.b/s
acb
a\nb
/^(b+?|a){1,2}?c/
bac
bbac
bbbac
bbbbac
bbbbbac
/^(b+|a){1,2}?c/
bac
bbac
bbbac
bbbbac
bbbbbac
/(?!\A)x/m
x\nb\n
a\bx\n
/\x0{ab}/
\0{ab}
/(A|B)*?CD/
CD
/(A|B)*CD/
CD
/(?<!bar)foo/
foo
catfood
arfootle
rfoosh
*** Failers
barfoo
towbarfoo
/\w{3}(?<!bar)foo/
catfood
*** Failers
foo
barfoo
towbarfoo
/(?<=(foo)a)bar/
fooabar
*** Failers
bar
foobbar
/\Aabc\z/m
abc
*** Failers
abc\n
qqq\nabc
abc\nzzz
qqq\nabc\nzzz
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
/(?>(\.\d\d[1-9]?))\d+/
1.230003938
1.875000282
*** Failers
1.235
/^((?>\w+)|(?>\s+))*$/
now is the time for all good men to come to the aid of the party
*** Failers
this is not a line with only words and spaces!
/(\d+)(\w)/
12345a
12345+
/((?>\d+))(\w)/
12345a
*** Failers
12345+
/(?>a+)b/
aaab
/((?>a+)b)/
aaab
/(?>(a+))b/
aaab
/(?>b)+/
aaabbbccc
/(?>a+|b+|c+)*c/
aaabbbbccccd
/(a+|b+|c+)*c/
aaabbbbccccd
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
/\(((?>[^()]+)|\([^()]+\))+\)/
(abc)
(abc(def)xyz)
*** Failers
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/a(?-i)b/i
ab
Ab
*** Failers
aB
AB
/(a (?x)b c)d e/
a bcd e
*** Failers
a b cd e
abcd e
a bcde
/(a b(?x)c d (?-x)e f)/
a bcde f
*** Failers
abcdef
/(a(?i)b)c/
abc
aBc
*** Failers
abC
aBC
Abc
ABc
ABC
AbC
/a(?i:b)c/
abc
aBc
*** Failers
ABC
abC
aBC
/a(?i:b)*c/
aBc
aBBc
*** Failers
aBC
aBBC
/a(?=b(?i)c)\w\wd/
abcd
abCd
*** Failers
aBCd
abcD
/(?s-i:more.*than).*million/i
more than million
more than MILLION
more \n than Million
*** Failers
MORE THAN MILLION
more \n than \n million
/(?:(?s-i)more.*than).*million/i
more than million
more than MILLION
more \n than Million
*** Failers
MORE THAN MILLION
more \n than \n million
/(?>a(?i)b+)+c/
abc
aBbc
aBBc
*** Failers
Abc
abAb
abbC
/(?=a(?i)b)\w\wc/
abc
aBc
*** Failers
Ab
abC
aBC
/(?<=a(?i)b)(\w\w)c/
abxxc
aBxxc
*** Failers
Abxxc
ABxxc
abxxC
/^(?(?=abc)\w{3}:|\d\d)$/
abc:
12
*** Failers
123
xyz
/^(?(?!abc)\d\d|\w{3}:)$/
abc:
12
*** Failers
123
xyz
/(?(?<=foo)bar|cat)/
foobar
cat
fcat
focat
*** Failers
foocat
/(?(?<!foo)cat|bar)/
foobar
cat
fcat
focat
*** Failers
foocat
/(?>a*)*/
a
aa
aaaa
/(abc|)+/
abc
abcabc
abcabcabc
xyz
/([a]*)*/
a
aaaaa
/([ab]*)*/
a
b
ababab
aaaabcde
bbbb
/([^a]*)*/
b
bbbb
aaa
/([^ab]*)*/
cccc
abab
/([a]*?)*/
a
aaaa
/([ab]*?)*/
a
b
abab
baba
/([^a]*?)*/
b
bbbb
aaa
/([^ab]*?)*/
c
cccc
baba
/(?>a*)*/
a
aaabcde
/((?>a*))*/
aaaaa
aabbaa
/((?>a*?))*/
aaaaa
aabbaa
/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
12-sep-98
12-09-98
*** Failers
sep-12-98
/(?i:saturday|sunday)/
saturday
sunday
Saturday
Sunday
SATURDAY
SUNDAY
SunDay
/(a(?i)bc|BB)x/
abcx
aBCx
bbx
BBx
*** Failers
abcX
aBCX
bbX
BBX
/^([ab](?i)[cd]|[ef])/
ac
aC
bD
elephant
Europe
frog
France
*** Failers
Africa
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
ab
aBd
xy
xY
zebra
Zambesi
*** Failers
aCD
XY
/(?<=foo\n)^bar/m
foo\nbar
*** Failers
bar
baz\nbar
/(?<=(?<!foo)bar)baz/
barbaz
barbarbaz
koobarbaz
*** Failers
baz
foobarbaz
/The following tests are taken from the Perl 5.005 test suite; some of them/
/are compatible with 5.004, but I'd rather not have to sort them out./
/abc/
abc
xabcy
ababc
*** Failers
xbc
axc
abx
/ab*c/
abc
/ab*bc/
abc
abbc
abbbbc
/.{1}/
abbbbc
/.{3,4}/
abbbbc
/ab{0,}bc/
abbbbc
/ab+bc/
abbc
*** Failers
abc
abq
/ab+bc/
abbbbc
/ab{1,}bc/
abbbbc
/ab{1,3}bc/
abbbbc
/ab{3,4}bc/
abbbbc
/ab{4,5}bc/
*** Failers
abq
abbbbc
/ab?bc/
abbc
abc
/ab{0,1}bc/
abc
/ab?bc/
/ab?c/
abc
/ab{0,1}c/
abc
/^abc$/
abc
*** Failers
abbbbc
abcc
/^abc/
abcc
/^abc$/
/abc$/
aabc
*** Failers
aabc
aabcd
/^/
abc
/$/
abc
/a.c/
abc
axc
/a.*c/
axyzc
/a[bc]d/
abd
*** Failers
axyzd
abc
/a[b-d]e/
ace
/a[b-d]/
aac
/a[-b]/
a-
/a[b-]/
a-
/a]/
a]
/a[]]b/
a]b
/a[^bc]d/
aed
*** Failers
abd
abd
/a[^-b]c/
adc
/a[^]b]c/
adc
*** Failers
a-c
a]c
/\ba\b/
a-
-a
-a-
/\by\b/
*** Failers
xy
yz
xyz
/\Ba\B/
*** Failers
a-
-a
-a-
/\By\b/
xy
/\by\B/
yz
/\By\B/
xyz
/\w/
a
/\W/
-
*** Failers
-
a
/a\sb/
a b
/a\Sb/
a-b
*** Failers
a-b
a b
/\d/
1
/\D/
-
*** Failers
-
1
/[\w]/
a
/[\W]/
-
*** Failers
-
a
/a[\s]b/
a b
/a[\S]b/
a-b
*** Failers
a-b
a b
/[\d]/
1
/[\D]/
-
*** Failers
-
1
/ab|cd/
abc
abcd
/()ef/
def
/$b/
/a\(b/
a(b
/a\(*b/
ab
a((b
/a\\b/
a\b
/((a))/
abc
/(a)b(c)/
abc
/a+b+c/
aabbabc
/a{1,}b{1,}c/
aabbabc
/a.+?c/
abcabc
/(a+|b)*/
ab
/(a+|b){0,}/
ab
/(a+|b)+/
ab
/(a+|b){1,}/
ab
/(a+|b)?/
ab
/(a+|b){0,1}/
ab
/[^ab]*/
cde
/abc/
*** Failers
b
/a*/
/([abc])*d/
abbbcd
/([abc])*bcd/
abcd
/a|b|c|d|e/
e
/(a|b|c|d|e)f/
ef
/abcd*efg/
abcdefg
/ab*/
xabyabbbz
xayabbbz
/(ab|cd)e/
abcde
/[abhgefdc]ij/
hij
/^(ab|cd)e/
/(abc|)ef/
abcdef
/(a|b)c*d/
abcd
/(ab|ab*)bc/
abc
/a([bc]*)c*/
abc
/a([bc]*)(c*d)/
abcd
/a([bc]+)(c*d)/
abcd
/a([bc]*)(c+d)/
abcd
/a[bcd]*dcdcde/
adcdcde
/a[bcd]+dcdcde/
*** Failers
abcde
adcdcde
/(ab|a)b*c/
abc
/((a)(b)c)(d)/
abcd
/[a-zA-Z_][a-zA-Z0-9_]*/
alpha
/^a(bc+|b[eh])g|.h$/
abh
/(bc+d$|ef*g.|h?i(j|k))/
effgz
ij
reffgz
*** Failers
effg
bcdd
/((((((((((a))))))))))/
a
/(((((((((a)))))))))/
a
/multiple words of text/
*** Failers
aa
uh-uh
/multiple words/
multiple words, yeah
/(.*)c(.*)/
abcde
/\((.*), (.*)\)/
(a, b)
/[k]/
/abcd/
abcd
/a(bc)d/
abcd
/a[-]?c/
ac
/abc/i
ABC
XABCY
ABABC
*** Failers
aaxabxbaxbbx
XBC
AXC
ABX
/ab*c/i
ABC
/ab*bc/i
ABC
ABBC
/ab*?bc/i
ABBBBC
/ab{0,}?bc/i
ABBBBC
/ab+?bc/i
ABBC
/ab+bc/i
*** Failers
ABC
ABQ
/ab{1,}bc/i
/ab+bc/i
ABBBBC
/ab{1,}?bc/i
ABBBBC
/ab{1,3}?bc/i
ABBBBC
/ab{3,4}?bc/i
ABBBBC
/ab{4,5}?bc/i
*** Failers
ABQ
ABBBBC
/ab??bc/i
ABBC
ABC
/ab{0,1}?bc/i
ABC
/ab??bc/i
/ab??c/i
ABC
/ab{0,1}?c/i
ABC
/^abc$/i
ABC
*** Failers
ABBBBC
ABCC
/^abc/i
ABCC
/^abc$/i
/abc$/i
AABC
/^/i
ABC
/$/i
ABC
/a.c/i
ABC
AXC
/a.*?c/i
AXYZC
/a.*c/i
*** Failers
AABC
AXYZD
/a[bc]d/i
ABD
/a[b-d]e/i
ACE
*** Failers
ABC
ABD
/a[b-d]/i
AAC
/a[-b]/i
A-
/a[b-]/i
A-
/a]/i
A]
/a[]]b/i
A]B
/a[^bc]d/i
AED
/a[^-b]c/i
ADC
*** Failers
ABD
A-C
/a[^]b]c/i
ADC
/ab|cd/i
ABC
ABCD
/()ef/i
DEF
/$b/i
*** Failers
A]C
B
/a\(b/i
A(B
/a\(*b/i
AB
A((B
/a\\b/i
A\B
/((a))/i
ABC
/(a)b(c)/i
ABC
/a+b+c/i
AABBABC
/a{1,}b{1,}c/i
AABBABC
/a.+?c/i
ABCABC
/a.*?c/i
ABCABC
/a.{0,5}?c/i
ABCABC
/(a+|b)*/i
AB
/(a+|b){0,}/i
AB
/(a+|b)+/i
AB
/(a+|b){1,}/i
AB
/(a+|b)?/i
AB
/(a+|b){0,1}/i
AB
/(a+|b){0,1}?/i
AB
/[^ab]*/i
CDE
/abc/i
/a*/i
/([abc])*d/i
ABBBCD
/([abc])*bcd/i
ABCD
/a|b|c|d|e/i
E
/(a|b|c|d|e)f/i
EF
/abcd*efg/i
ABCDEFG
/ab*/i
XABYABBBZ
XAYABBBZ
/(ab|cd)e/i
ABCDE
/[abhgefdc]ij/i
HIJ
/^(ab|cd)e/i
ABCDE
/(abc|)ef/i
ABCDEF
/(a|b)c*d/i
ABCD
/(ab|ab*)bc/i
ABC
/a([bc]*)c*/i
ABC
/a([bc]*)(c*d)/i
ABCD
/a([bc]+)(c*d)/i
ABCD
/a([bc]*)(c+d)/i
ABCD
/a[bcd]*dcdcde/i
ADCDCDE
/a[bcd]+dcdcde/i
/(ab|a)b*c/i
ABC
/((a)(b)c)(d)/i
ABCD
/[a-zA-Z_][a-zA-Z0-9_]*/i
ALPHA
/^a(bc+|b[eh])g|.h$/i
ABH
/(bc+d$|ef*g.|h?i(j|k))/i
EFFGZ
IJ
REFFGZ
*** Failers
ADCDCDE
EFFG
BCDD
/((((((((((a))))))))))/i
A
/(((((((((a)))))))))/i
A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
C
/multiple words of text/i
*** Failers
AA
UH-UH
/multiple words/i
MULTIPLE WORDS, YEAH
/(.*)c(.*)/i
ABCDE
/\((.*), (.*)\)/i
(A, B)
/[k]/i
/abcd/i
ABCD
/a(bc)d/i
ABCD
/a[-]?c/i
AC
/a(?!b)./
abad
/a(?=d)./
abad
/a(?=c|d)./
abad
/a(?:b|c|d)(.)/
ace
/a(?:b|c|d)*(.)/
ace
/a(?:b|c|d)+?(.)/
ace
acdbcdbe
/a(?:b|c|d)+(.)/
acdbcdbe
/a(?:b|c|d){2}(.)/
acdbcdbe
/a(?:b|c|d){4,5}(.)/
acdbcdbe
/a(?:b|c|d){4,5}?(.)/
acdbcdbe
/((foo)|(bar))*/
foobar
/a(?:b|c|d){6,7}(.)/
acdbcdbe
/a(?:b|c|d){6,7}?(.)/
acdbcdbe
/a(?:b|c|d){5,6}(.)/
acdbcdbe
/a(?:b|c|d){5,6}?(.)/
acdbcdbe
/a(?:b|c|d){5,7}(.)/
acdbcdbe
/a(?:b|c|d){5,7}?(.)/
acdbcdbe
/a(?:b|(c|e){1,2}?|d)+?(.)/
ace
/^(.+)?B/
AB
/^([^a-z])|(\^)$/
.
/^[<>]&/
<&OUT
/(?:(f)(o)(o)|(b)(a)(r))*/
foobar
/(?<=a)b/
ab
*** Failers
cb
b
/(?<!c)b/
ab
b
b
/(?:..)*a/
aba
/(?:..)*?a/
aba
/^(){3,5}/
abc
/^(a+)*ax/
aax
/^((a|b)+)*ax/
aax
/^((a|bc)+)*ax/
aax
/(a|x)*ab/
cab
/(a)*ab/
cab
/(?:(?i)a)b/
ab
/((?i)a)b/
ab
/(?:(?i)a)b/
Ab
/((?i)a)b/
Ab
/(?:(?i)a)b/
*** Failers
cb
aB
/((?i)a)b/
/(?i:a)b/
ab
/((?i:a))b/
ab
/(?i:a)b/
Ab
/((?i:a))b/
Ab
/(?i:a)b/
*** Failers
aB
aB
/((?i:a))b/
/(?:(?-i)a)b/i
ab
/((?-i)a)b/i
ab
/(?:(?-i)a)b/i
aB
/((?-i)a)b/i
aB
/(?:(?-i)a)b/i
*** Failers
aB
Ab
/((?-i)a)b/i
/(?:(?-i)a)b/i
aB
/((?-i)a)b/i
aB
/(?:(?-i)a)b/i
*** Failers
Ab
AB
/((?-i)a)b/i
/(?-i:a)b/i
ab
/((?-i:a))b/i
ab
/(?-i:a)b/i
aB
/((?-i:a))b/i
aB
/(?-i:a)b/i
*** Failers
AB
Ab
/((?-i:a))b/i
/(?-i:a)b/i
aB
/((?-i:a))b/i
aB
/(?-i:a)b/i
*** Failers
Ab
AB
/((?-i:a))b/i
/((?-i:a.))b/i
*** Failers
AB
a\nB
/((?s-i:a.))b/i
a\nB
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
cabbbb
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
/foo\w*\d{4}baz/
foobar1234baz
/x(~~)*(?:(?:F)?)?/
x~~
/^a(?#xxx){3}c/
aaac
/^a (?#xxx) (?#yyy) {3}c/x
aaac
/(?<![cd])b/
*** Failers
B\nB
dbcb
/(?<![cd])[ab]/
dbaacb
/(?<!(c|d))b/
/(?<!(c|d))[ab]/
dbaacb
/(?<!cd)[ab]/
cdaccb
/^(?:a?b?)*$/
*** Failers
dbcb
a--
/((?s)^a(.))((?m)^b$)/
a\nb\nc\n
/((?m)^b$)/
a\nb\nc\n
/(?m)^b/
a\nb\n
/(?m)^(b)/
a\nb\n
/((?m)^b)/
a\nb\n
/\n((?m)^b)/
a\nb\n
/((?s).)c(?!.)/
a\nb\nc\n
a\nb\nc\n
/((?s)b.)c(?!.)/
a\nb\nc\n
a\nb\nc\n
/^b/
/()^b/
*** Failers
a\nb\nc\n
a\nb\nc\n
/((?m)^b)/
a\nb\nc\n
/(?(?!a)a|b)/
/(?(?!a)b|a)/
a
/(?(?=a)b|a)/
*** Failers
a
a
/(?(?=a)a|b)/
a
/(\w+:)+/
one:
/$(?<=^(a))/
a
/([\w:]+::)?(\w+)$/
abcd
xy:z:::abcd
/^[^bcd]*(c+)/
aexycd
/(a*)b+/
caab
/([\w:]+::)?(\w+)$/
abcd
xy:z:::abcd
*** Failers
abcd:
abcd:
/^[^bcd]*(c+)/
aexycd
/(>a+)ab/
/(?>a+)b/
aaab
/([[:]+)/
a:[b]:
/([[=]+)/
a=[b]=
/([[.]+)/
a.[b].
/((?>a+)b)/
aaab
/(?>(a+))b/
aaab
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
/a\Z/
*** Failers
aaab
a\nb\n
/b\Z/
a\nb\n
/b\z/
/b\Z/
a\nb
/b\z/
a\nb
*** Failers
/(?>.*)(?<=(abcd|wxyz))/
alphabetabcd
endingwxyz
*** Failers
a rather long string that doesn't end with one of them
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
/(?<=\d{3}(?!999))foo/
999foo
123999foo
*** Failers
123abcfoo
/(?<=(?!...999)\d{3})foo/
999foo
123999foo
*** Failers
123abcfoo
/(?<=\d{3}(?!999)...)foo/
123abcfoo
123456foo
*** Failers
123999foo
/(?<=\d{3}...)(?<!999)foo/
123abcfoo
123456foo
*** Failers
123999foo
/((Z)+|A)*/
ZABCDEFG
/(Z()|A)*/
ZABCDEFG
/(Z(())|A)*/
ZABCDEFG
/((?>Z)+|A)*/
ZABCDEFG
/((?>)+|A)*/
ZABCDEFG
/a*/g
abbab
/^[\d-a]/
abcde
-things
0digit
*** Failers
bcdef
/[[:space:]]+/
> \x09\x0a\x0c\x0d\x0b<
/[[:blank:]]+/
> \x09\x0a\x0c\x0d\x0b<
/[\s]+/
> \x09\x0a\x0c\x0d\x0b<
/\s+/
> \x09\x0a\x0c\x0d\x0b<
/a b/x
ab
/(?!\A)x/m
a\nxb\n
/(?!^)x/m
a\nxb\n
/abc\Qabc\Eabc/
abcabcabc
/abc\Q(*+|\Eabc/
abc(*+|abc
/ abc\Q abc\Eabc/x
abc abcabc
*** Failers
abcabcabc
/abc#comment
\Q#not comment
literal\E/x
abc#not comment\n literal
/abc#comment
\Q#not comment
literal/x
abc#not comment\n literal
/abc#comment
\Q#not comment
literal\E #more comment
/x
abc#not comment\n literal
/abc#comment
\Q#not comment
literal\E #more comment/x
abc#not comment\n literal
/\Qabc\$xyz\E/
abc\\\$xyz
/\Qabc\E\$\Qxyz\E/
abc\$xyz
/\Gabc/
abc
*** Failers
xyzabc
/\Gabc./g
abc1abc2xyzabc3
/abc./g
abc1abc2xyzabc3
/a(?x: b c )d/
XabcdY
*** Failers
Xa b c d Y
/((?x)x y z | a b c)/
XabcY
AxyzB
/(?i)AB(?-i)C/
XabCY
*** Failers
XabcY
/((?i)AB(?-i)C|D)E/
abCE
DE
*** Failers
abcE
abCe
dE
De
/[z\Qa-d]\E]/
z
a
-
d
]
*** Failers
b
/[\z\C]/
z
C
/\M/
M
/(a+)*b/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
REGular
regulaer
Regex
regulär
/Åæåä[à-ÿÀ-ß]+/
Åæåäà
Åæåäÿ
ÅæåäÀ
Åæåäß
/(?<=Z)X./
\x84XAZXB
/^(?(2)a|(1)(2))+$/
123a
/(?<=a|bbbb)c/
ac
bbbbc
/abc/SS>testsavedregex
<testsavedregex
abc
*** Failers
bca
/abc/FSS>testsavedregex
<testsavedregex
abc
*** Failers
bca
/(a|b)/S>testsavedregex
<testsavedregex
abc
*** Failers
def
/(a|b)/SF>testsavedregex
<testsavedregex
abc
*** Failers
def
/line\nbreak/
this is a line\nbreak
line one\nthis is a line\nbreak in the second line
/line\nbreak/f
this is a line\nbreak
** Failers
line one\nthis is a line\nbreak in the second line
/line\nbreak/mf
this is a line\nbreak
** Failers
line one\nthis is a line\nbreak in the second line
/1234/
123\P
a4\P\R
/1234/
123\P
4\P\R
/^/mg
a\nb\nc\n
\
/(?<=C\n)^/mg
A\nC\nC\n
/(?s)A?B/
AB
aB
/(?s)A*B/
AB
aB
/(?m)A?B/
AB
aB
/(?m)A*B/
AB
aB
/Content-Type\x3A[^\r\n]{6,}/
Content-Type:xxxxxyyy
/Content-Type\x3A[^\r\n]{6,}z/
Content-Type:xxxxxyyyz
/Content-Type\x3A[^a]{6,}/
Content-Type:xxxyyy
/Content-Type\x3A[^a]{6,}z/
Content-Type:xxxyyyz
/^abc/m
xyz\nabc
xyz\nabc\<lf>
xyz\r\nabc\<lf>
xyz\rabc\<cr>
xyz\r\nabc\<crlf>
** Failers
xyz\nabc\<cr>
xyz\r\nabc\<cr>
xyz\nabc\<crlf>
xyz\rabc\<crlf>
xyz\rabc\<lf>
/abc$/m<lf>
xyzabc
xyzabc\n
xyzabc\npqr
xyzabc\r\<cr>
xyzabc\rpqr\<cr>
xyzabc\r\n\<crlf>
xyzabc\r\npqr\<crlf>
** Failers
xyzabc\r
xyzabc\rpqr
xyzabc\r\n
xyzabc\r\npqr
/^abc/m<cr>
xyz\rabcdef
xyz\nabcdef\<lf>
** Failers
xyz\nabcdef
/^abc/m<lf>
xyz\nabcdef
xyz\rabcdef\<cr>
** Failers
xyz\rabcdef
/^abc/m<crlf>
xyz\r\nabcdef
xyz\rabcdef\<cr>
** Failers
xyz\rabcdef
/.*/<lf>
abc\ndef
abc\rdef
abc\r\ndef
\<cr>abc\ndef
\<cr>abc\rdef
\<cr>abc\r\ndef
\<crlf>abc\ndef
\<crlf>abc\rdef
\<crlf>abc\r\ndef
/\w+(.)(.)?def/s
abc\ndef
abc\rdef
abc\r\ndef
/^\w+=.*(\\\n.*)*/
abc=xyz\\\npqr
/^(a()*)*/
aaaa
/^(?:a(?:(?:))*)*/
aaaa
/^(a()+)+/
aaaa
/^(?:a(?:(?:))+)+/
aaaa
/(a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?>a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?:a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/^a.b/<lf>
a\rb
a\nb\<cr>
** Failers
a\nb
a\nb\<any>
a\rb\<cr>
a\rb\<any>
/^abc./mgx<any>
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
/abc.$/mgx<any>
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
/^a\Rb/<bsr_unicode>
a\nb
a\rb
a\r\nb
a\x0bb
a\x0cb
a\x85b
** Failers
a\n\rb
/^a\R*b/<bsr_unicode>
ab
a\nb
a\rb
a\r\nb
a\x0bb
a\x0cb
a\x85b
a\n\rb
a\n\r\x85\x0cb
/^a\R+b/<bsr_unicode>
a\nb
a\rb
a\r\nb
a\x0bb
a\x0cb
a\x85b
a\n\rb
a\n\r\x85\x0cb
** Failers
ab
/^a\R{1,3}b/<bsr_unicode>
a\nb
a\n\rb
a\n\r\x85b
a\r\n\r\nb
a\r\n\r\n\r\nb
a\n\r\n\rb
a\n\n\r\nb
** Failers
a\n\n\n\rb
a\r
/^a[\R]b/<bsr_unicode>
aRb
** Failers
a\nb
/.+foo/
afoo
** Failers
\r\nfoo
\nfoo
/.+foo/<crlf>
afoo
\nfoo
** Failers
\r\nfoo
/.+foo/<any>
afoo
** Failers
\nfoo
\r\nfoo
/.+foo/s
afoo
\r\nfoo
\nfoo
/^$/mg<any>
abc\r\rxyz
abc\n\rxyz
** Failers
abc\r\nxyz
/^X/m
XABC
** Failers
XABC\B
/(?m)^$/<any>g+
abc\r\n\r\n
/(?m)^$|^\r\n/<any>g+
abc\r\n\r\n
/(?m)$/<any>g+
abc\r\n\r\n
/(?|(abc)|(xyz))/
>abc<
>xyz<
/(x)(?|(abc)|(xyz))(x)/
xabcx
xxyzx
/(x)(?|(abc)(pqr)|(xyz))(x)/
xabcpqrx
xxyzx
/(?|(abc)|(xyz))(?1)/
abcabc
xyzabc
** Failers
xyzxyz
/\H\h\V\v/
X X\x0a
X\x09X\x0b
** Failers
\xa0 X\x0a
/\H*\h+\V?\v{3,4}/
\x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
\x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
\x09\x20\xa0\x0a\x0b\x0c
** Failers
\x09\x20\xa0\x0a\x0b
/\H{3,4}/
XY ABCDE
XY PQR ST
/.\h{3,4}./
XY AB PQRS
/\h*X\h?\H+Y\H?Z/
>XNNNYZ
> X NYQZ
** Failers
>XYZ
> X NY Z
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
>XY\x0aZ\x0aA\x0bNN\x0c
>\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
/.+A/<crlf>
\r\nA
/\nA/<crlf>
\r\nA
/[\r\n]A/<crlf>
\r\nA
/(\r|\n)A/<crlf>
\r\nA
/a\Rb/I<bsr_anycrlf>
a\rb
a\nb
a\r\nb
** Failers
a\x85b
a\x0bb
/a\Rb/I<bsr_unicode>
a\rb
a\nb
a\r\nb
a\x85b
a\x0bb
** Failers
a\x85b\<bsr_anycrlf>
a\x0bb\<bsr_anycrlf>
/a\R?b/I<bsr_anycrlf>
a\rb
a\nb
a\r\nb
** Failers
a\x85b
a\x0bb
/a\R?b/I<bsr_unicode>
a\rb
a\nb
a\r\nb
a\x85b
a\x0bb
** Failers
a\x85b\<bsr_anycrlf>
a\x0bb\<bsr_anycrlf>
/a\R{2,4}b/I<bsr_anycrlf>
a\r\n\nb
a\n\r\rb
a\r\n\r\n\r\n\r\nb
** Failers
a\x85\85b
a\x0b\0bb
/a\R{2,4}b/I<bsr_unicode>
a\r\rb
a\n\n\nb
a\r\n\n\r\rb
a\x85\85b
a\x0b\0bb
** Failers
a\r\r\r\r\rb
a\x85\85b\<bsr_anycrlf>
a\x0b\0bb\<bsr_anycrlf>
/a(?!)|\wbc/
abc
/a[]b/<JS>
** Failers
ab
/a[]+b/<JS>
** Failers
ab
/a[]*+b/<JS>
** Failers
ab
/a[^]b/<JS>
aXb
a\nb
** Failers
ab
/a[^]+b/<JS>
aXb
a\nX\nXb
** Failers
ab
/X$/E
X
** Failers
X\n
/X$/
X
X\n
/xyz/C
xyz
abcxyz
abcxyz\Y
** Failers
abc
abc\Y
abcxypqr
abcxypqr\Y
/(*NO_START_OPT)xyz/C
abcxyz
/(?C)ab/
ab
\C-ab
/ab/C
ab
\C-ab
/^"((?(?=[a])[^"])|b)*"$/C
"ab"
\C-"ab"
/\d+X|9+Y/
++++123999\P
++++123999Y\P
/Z(*F)/
Z\P
ZA\P
/Z(?!)/
Z\P
ZA\P
/dog(sbody)?/
dogs\P
dogs\P\P
/dog(sbody)??/
dogs\P
dogs\P\P
/dog|dogsbody/
dogs\P
dogs\P\P
/dogsbody|dog/
dogs\P
dogs\P\P
/Z(*F)Q|ZXY/
Z\P
ZA\P
X\P
/\bthe cat\b/
the cat\P
the cat\P\P
/dog(sbody)?/
dogs\D\P
body\D\R
/dog(sbody)?/
dogs\D\P\P
body\D\R
/abc/
abc\P
abc\P\P
/abc\K123/
xyzabc123pqr
/(?<=abc)123/
xyzabc123pqr
xyzabc12\P
xyzabc12\P\P
/\babc\b/
+++abc+++
+++ab\P
+++ab\P\P
/(?=C)/g+
ABCDECBA
/(abc|def|xyz)/I
terhjk;abcdaadsfe
the quick xyz brown fox
\Yterhjk;abcdaadsfe
\Ythe quick xyz brown fox
** Failers
thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
\Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
/(abc|def|xyz)/SI
terhjk;abcdaadsfe
the quick xyz brown fox
\Yterhjk;abcdaadsfe
\Ythe quick xyz brown fox
** Failers
thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
\Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
/abcd*/+
xxxxabcd\P
xxxxabcd\P\P
dddxxx\R
xxxxabcd\P\P
xxx\R
/abcd*/i
xxxxabcd\P
xxxxabcd\P\P
XXXXABCD\P
XXXXABCD\P\P
/abc\d*/
xxxxabc1\P
xxxxabc1\P\P
/abc[de]*/
xxxxabcde\P
xxxxabcde\P\P
/(?:(?1)|B)(A(*F)|C)/
ABCD
CCD
** Failers
CAD
/^(?:(?1)|B)(A(*F)|C)/
CCD
BCD
** Failers
ABCD
CAD
BAD
/^(?!a(*SKIP)b)/
ac
/^(?=a(*SKIP)b|ac)/
** Failers
ac
/^(?=a(*THEN)b|ac)/
ac
/^(?=a(*PRUNE)b)/
ab
** Failers
ac
/^(?(?!a(*SKIP)b))/
ac
/(?<=abc)def/
abc\P\P
/abc$/
abc
abc\P
abc\P\P
/abc$/m
abc
abc\n
abc\P\P
abc\n\P\P
abc\P
abc\n\P
/abc\z/
abc
abc\P
abc\P\P
/abc\Z/
abc
abc\P
abc\P\P
/abc\b/
abc
abc\P
abc\P\P
/abc\B/
abc
abc\P
abc\P\P
/.+/
abc\>0
abc\>1
abc\>2
abc\>3
abc\>4
abc\>-4
/^(?:a)++\w/
aaaab
** Failers
aaaa
bbb
/^(?:aa|(?:a)++\w)/
aaaab
aaaa
** Failers
bbb
/^(?:a)*+\w/
aaaab
bbb
** Failers
aaaa
/^(a)++\w/
aaaab
** Failers
aaaa
bbb
/^(a|)++\w/
aaaab
** Failers
aaaa
bbb
/(?=abc){3}abc/+
abcabcabc
** Failers
xyz
/(?=abc)+abc/+
abcabcabc
** Failers
xyz
/(?=abc)++abc/+
abcabcabc
** Failers
xyz
/(?=abc){0}xyz/
xyz
/(?=abc){1}xyz/
** Failers
xyz
/(?=(a))?./
ab
bc
/(?=(a))??./
ab
bc
/^(?=(a)){0}b(?1)/
backgammon
/^(?=(?1))?[az]([abc])d/
abd
zcdxx
/^(?!a){0}\w+/
aaaaa
/(?<=(abc))?xyz/
abcxyz
pqrxyz
/((?2))((?1))/
abc
/(?(R)a+|(?R)b)/
aaaabcde
/(?(R)a+|((?R))b)/
aaaabcde
/((?(R)a+|(?1)b))/
aaaabcde
/((?(R2)a+|(?1)b))/
aaaabcde
/(?(R)a*(?1)|((?R))b)/
aaaabcde
/(a+)/O
\O6aaaa
\O8aaaa
/ab\Cde/
abXde
/(?<=ab\Cde)X/
abZdeX
/^\R/
\r\P
\r\P\P
/^\R{2,3}x/
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
\r\rx
\r\r\rx
/^\R{2,3}?x/
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
\r\rx
\r\r\rx
/^\R?x/
\r\P
\r\P\P
x
\rx
/^\R+x/
\r\P
\r\P\P
\r\n\P
\r\n\P\P
\rx
/^a$/<CRLF>
a\r\P
a\r\P\P
/^a$/m<CRLF>
a\r\P
a\r\P\P
/^(a$|a\r)/<CRLF>
a\r\P
a\r\P\P
/^(a$|a\r)/m<CRLF>
a\r\P
a\r\P\P
/./<CRLF>
\r\P
\r\P\P
/.{2,3}/<CRLF>
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
/.{2,3}?/<CRLF>
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
/-- Test simple validity check for restarts --/
/abcdef/
abc\R
/<H((?(?!<H|F>)(.)|(?R))++)*F>/
text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
/^(?>.{4})abc|^\w\w.xabcd/
xxxxabcd
xx\xa0xabcd
/^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
xxxxxxxxabcd
xx\xa0xxxxxabcd
/abcd/
abcd\O0
/-- These tests show up auto-possessification --/
/[ab]*/
aaaa
/[ab]*?/
aaaa
/[ab]?/
aaaa
/[ab]??/
aaaa
/[ab]+/
aaaa
/[ab]+?/
aaaa
/[ab]{2,3}/
aaaa
/[ab]{2,3}?/
aaaa
/[ab]{2,}/
aaaa
/[ab]{2,}?/
aaaa
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
/(?(?!)a|b)/
bbb
aaa
/()()a+/O=
aaa\D
a\D
/(02-)?[0-9]{3}-[0-9]{3}/
02-123-123
/-- End of testinput8 --/
+719
View File
@@ -0,0 +1,719 @@
/-- This set of tests checks UTF-8 support with the DFA matching functionality
of pcre_dfa_exec(), excluding Unicode property support. The -dfa flag must
be used with pcretest when running it. --/
< forbid W
/\x{100}ab/8
\x{100}ab
/a\x{100}*b/8
ab
a\x{100}b
a\x{100}\x{100}b
/a\x{100}+b/8
a\x{100}b
a\x{100}\x{100}b
*** Failers
ab
/\bX/8
Xoanon
+Xoanon
\x{300}Xoanon
*** Failers
YXoanon
/\BX/8
YXoanon
*** Failers
Xoanon
+Xoanon
\x{300}Xoanon
/X\b/8
X+oanon
ZX\x{300}oanon
FAX
*** Failers
Xoanon
/X\B/8
Xoanon
*** Failers
X+oanon
ZX\x{300}oanon
FAX
/[^a]/8
abcd
a\x{100}
/^[abc\x{123}\x{400}-\x{402}]{2,3}\d/8
ab99
\x{123}\x{123}45
\x{400}\x{401}\x{402}6
*** Failers
d99
\x{123}\x{122}4
\x{400}\x{403}6
\x{400}\x{401}\x{402}\x{402}6
/a.b/8
acb
a\x7fb
a\x{100}b
*** Failers
a\nb
/a(.{3})b/8
a\x{4000}xyb
a\x{4000}\x7fyb
a\x{4000}\x{100}yb
*** Failers
a\x{4000}b
ac\ncb
/a(.*?)(.)/
a\xc0\x88b
/a(.*?)(.)/8
a\x{100}b
/a(.*)(.)/
a\xc0\x88b
/a(.*)(.)/8
a\x{100}b
/a(.)(.)/
a\xc0\x92bcd
/a(.)(.)/8
a\x{240}bcd
/a(.?)(.)/
a\xc0\x92bcd
/a(.?)(.)/8
a\x{240}bcd
/a(.??)(.)/
a\xc0\x92bcd
/a(.??)(.)/8
a\x{240}bcd
/a(.{3})b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
*** Failers
a\x{1234}b
ac\ncb
/a(.{3,})b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
*** Failers
a\x{1234}b
/a(.{3,}?)b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
*** Failers
a\x{1234}b
/a(.{3,5})b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
axxxxxbcdefghijb
*** Failers
a\x{1234}b
axxxxxxbcdefghijb
/a(.{3,5}?)b/8
a\x{1234}xyb
a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
axxxxxbcdefghijb
*** Failers
a\x{1234}b
axxxxxxbcdefghijb
/^[a\x{c0}]/8
*** Failers
\x{100}
/(?<=aXb)cd/8
aXbcd
/(?<=a\x{100}b)cd/8
a\x{100}bcd
/(?<=a\x{100000}b)cd/8
a\x{100000}bcd
/(?:\x{100}){3}b/8
\x{100}\x{100}\x{100}b
*** Failers
\x{100}\x{100}b
/\x{ab}/8
\x{ab}
\xc2\xab
*** Failers
\x00{ab}
/(?<=(.))X/8
WXYZ
\x{256}XYZ
*** Failers
XYZ
/[^a]+/8g
bcd
\x{100}aY\x{256}Z
/^[^a]{2}/8
\x{100}bc
/^[^a]{2,}/8
\x{100}bcAa
/^[^a]{2,}?/8
\x{100}bca
/[^a]+/8ig
bcd
\x{100}aY\x{256}Z
/^[^a]{2}/8i
\x{100}bc
/^[^a]{2,}/8i
\x{100}bcAa
/^[^a]{2,}?/8i
\x{100}bca
/\x{100}{0,0}/8
abcd
/\x{100}?/8
abcd
\x{100}\x{100}
/\x{100}{0,3}/8
\x{100}\x{100}
\x{100}\x{100}\x{100}\x{100}
/\x{100}*/8
abce
\x{100}\x{100}\x{100}\x{100}
/\x{100}{1,1}/8
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}{1,3}/8
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}+/8
abcd\x{100}\x{100}\x{100}\x{100}
/\x{100}{3}/8
abcd\x{100}\x{100}\x{100}XX
/\x{100}{3,5}/8
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
/\x{100}{3,}/8O
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
/(?<=a\x{100}{2}b)X/8
Xyyya\x{100}\x{100}bXzzz
/\D*/8O
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\D*/8O
\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
/\D/8
1X2
1\x{100}2
/>\S/8
> >X Y
> >\x{100} Y
/\d/8
\x{100}3
/\s/8
\x{100} X
/\D+/8
12abcd34
*** Failers
1234
/\D{2,3}/8
12abcd34
12ab34
*** Failers
1234
12a34
/\D{2,3}?/8
12abcd34
12ab34
*** Failers
1234
12a34
/\d+/8
12abcd34
*** Failers
/\d{2,3}/8
12abcd34
1234abcd
*** Failers
1.4
/\d{2,3}?/8
12abcd34
1234abcd
*** Failers
1.4
/\S+/8
12abcd34
*** Failers
\ \
/\S{2,3}/8
12abcd34
1234abcd
*** Failers
\ \
/\S{2,3}?/8
12abcd34
1234abcd
*** Failers
\ \
/>\s+</8
12> <34
*** Failers
/>\s{2,3}</8
ab> <cd
ab> <ce
*** Failers
ab> <cd
/>\s{2,3}?</8
ab> <cd
ab> <ce
*** Failers
ab> <cd
/\w+/8
12 34
*** Failers
+++=*!
/\w{2,3}/8
ab cd
abcd ce
*** Failers
a.b.c
/\w{2,3}?/8
ab cd
abcd ce
*** Failers
a.b.c
/\W+/8
12====34
*** Failers
abcd
/\W{2,3}/8
ab====cd
ab==cd
*** Failers
a.b.c
/\W{2,3}?/8
ab====cd
ab==cd
*** Failers
a.b.c
/[\x{100}]/8
\x{100}
Z\x{100}
\x{100}Z
*** Failers
/[Z\x{100}]/8
Z\x{100}
\x{100}
\x{100}Z
*** Failers
/[\x{100}\x{200}]/8
ab\x{100}cd
ab\x{200}cd
*** Failers
/[\x{100}-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
*** Failers
/[z-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
abzcd
ab|cd
*** Failers
/[Q\x{100}\x{200}]/8
ab\x{100}cd
ab\x{200}cd
Q?
*** Failers
/[Q\x{100}-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
Q?
*** Failers
/[Qz-\x{200}]/8
ab\x{100}cd
ab\x{200}cd
ab\x{111}cd
abzcd
ab|cd
Q?
*** Failers
/[\x{100}\x{200}]{1,3}/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/[\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/[Q\x{100}\x{200}]{1,3}/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/[Q\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
ab\x{200}cd
ab\x{200}\x{100}\x{200}\x{100}cd
*** Failers
/(?<=[\x{100}\x{200}])X/8
abc\x{200}X
abc\x{100}X
*** Failers
X
/(?<=[Q\x{100}\x{200}])X/8
abc\x{200}X
abc\x{100}X
abQX
*** Failers
X
/(?<=[\x{100}\x{200}]{3})X/8
abc\x{100}\x{200}\x{100}X
*** Failers
abc\x{200}X
X
/[^\x{100}\x{200}]X/8
AX
\x{150}X
\x{500}X
*** Failers
\x{100}X
\x{200}X
/[^Q\x{100}\x{200}]X/8
AX
\x{150}X
\x{500}X
*** Failers
\x{100}X
\x{200}X
QX
/[^\x{100}-\x{200}]X/8
AX
\x{500}X
*** Failers
\x{100}X
\x{150}X
\x{200}X
/[z-\x{100}]/8i
z
Z
\x{100}
*** Failers
\x{102}
y
/[\xFF]/
>\xff<
/[\xff]/8
>\x{ff}<
/[^\xFF]/
XYZ
/[^\xff]/8
XYZ
\x{123}
/^[ac]*b/8
xb
/^[ac\x{100}]*b/8
xb
/^[^x]*b/8i
xb
/^[^x]*b/8
xb
/^\d*b/8
xb
/(|a)/g8
catac
a\x{256}a
/^\x{85}$/8i
\x{85}
/^abc./mgx8<any>
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
/abc.$/mgx8<any>
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
/^a\Rb/8<bsr_unicode>
a\nb
a\rb
a\r\nb
a\x0bb
a\x0cb
a\x{85}b
a\x{2028}b
a\x{2029}b
** Failers
a\n\rb
/^a\R*b/8<bsr_unicode>
ab
a\nb
a\rb
a\r\nb
a\x0bb
a\x0c\x{2028}\x{2029}b
a\x{85}b
a\n\rb
a\n\r\x{85}\x0cb
/^a\R+b/8<bsr_unicode>
a\nb
a\rb
a\r\nb
a\x0bb
a\x0c\x{2028}\x{2029}b
a\x{85}b
a\n\rb
a\n\r\x{85}\x0cb
** Failers
ab
/^a\R{1,3}b/8<bsr_unicode>
a\nb
a\n\rb
a\n\r\x{85}b
a\r\n\r\nb
a\r\n\r\n\r\nb
a\n\r\n\rb
a\n\n\r\nb
** Failers
a\n\n\n\rb
a\r
/\h+\V?\v{3,4}/8O
\x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
/\V?\v{3,4}/8O
\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
/\h+\V?\v{3,4}/8O
>\x09\x20\x{a0}X\x0a\x0a\x0a<
/\V?\v{3,4}/8O
>\x09\x20\x{a0}X\x0a\x0a\x0a<
/\H\h\V\v/8
X X\x0a
X\x09X\x0b
** Failers
\x{a0} X\x0a
/\H*\h+\V?\v{3,4}/8O
\x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
\x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
\x09\x20\x{a0}\x0a\x0b\x0c
** Failers
\x09\x20\x{a0}\x0a\x0b
/\H\h\V\v/8
\x{3001}\x{3000}\x{2030}\x{2028}
X\x{180e}X\x{85}
** Failers
\x{2009} X\x0a
/\H*\h+\V?\v{3,4}/8O
\x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
\x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
\x09\x20\x{202f}\x0a\x0b\x0c
** Failers
\x09\x{200a}\x{a0}\x{2028}\x0b
/a\Rb/I8<bsr_anycrlf>
a\rb
a\nb
a\r\nb
** Failers
a\x{85}b
a\x0bb
/a\Rb/I8<bsr_unicode>
a\rb
a\nb
a\r\nb
a\x{85}b
a\x0bb
** Failers
a\x{85}b\<bsr_anycrlf>
a\x0bb\<bsr_anycrlf>
/a\R?b/I8<bsr_anycrlf>
a\rb
a\nb
a\r\nb
** Failers
a\x{85}b
a\x0bb
/a\R?b/I8<bsr_unicode>
a\rb
a\nb
a\r\nb
a\x{85}b
a\x0bb
** Failers
a\x{85}b\<bsr_anycrlf>
a\x0bb\<bsr_anycrlf>
/X/8f<any>
A\x{1ec5}ABCXYZ
/abcd*/8
xxxxabcd\P
xxxxabcd\P\P
/abcd*/i8
xxxxabcd\P
xxxxabcd\P\P
XXXXABCD\P
XXXXABCD\P\P
/abc\d*/8
xxxxabc1\P
xxxxabc1\P\P
/abc[de]*/8
xxxxabcde\P
xxxxabcde\P\P
/\bthe cat\b/8
the cat\P
the cat\P\P
/ab\Cde/8
abXde
/(?<=ab\Cde)X/8
/./8<CRLF>
\r\P
\r\P\P
/.{2,3}/8<CRLF>
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
/.{2,3}?/8<CRLF>
\r\P
\r\P\P
\r\r\P
\r\r\P\P
\r\r\r\P
\r\r\r\P\P
/[^\x{100}]/8
\x{100}\x{101}X
/[^\x{100}]+/8
\x{100}\x{101}X
/-- End of testinput9 --/
+124
View File
@@ -0,0 +1,124 @@
/-- This is a specialized test for checking, when PCRE is compiled with the
EBCDIC option but in an ASCII environment, that newline and white space
functionality is working. It catches cases where explicit values such as 0x0a
have been used instead of names like CHAR_LF. Needless to say, it is not a
genuine EBCDIC test! In patterns, alphabetic characters that follow a backslash
must be in EBCDIC code. In data, newlines and other spacing characters must be
in EBCDIC, but can be specified as escapes. --/
/-- Test default newline and variations --/
/^A/m
ABC
12\x15ABC
/^A/m<any>
12\x15ABC
12\x0dABC
12\x0d\x15ABC
12\x25ABC
/^A/m<anycrlf>
12\x15ABC
12\x0dABC
12\x0d\x15ABC
** Fail
12\x25ABC
/-- Test \h --/
/^A\ˆ/
A B
A\x41B
/-- Test \H --/
/^A\È/
AB
A\x42B
** Fail
A B
A\x41B
/-- Test \R --/
/^A\Ù/
A\x15B
A\x0dB
A\x25B
A\x0bB
A\x0cB
** Fail
A B
/-- Test \v --/
/^A\¥/
A\x15B
A\x0dB
A\x25B
A\x0bB
A\x0cB
** Fail
A B
/-- Test \V --/
/^A\å/
A B
** Fail
A\x15B
A\x0dB
A\x25B
A\x0bB
A\x0cB
/-- For repeated items, use an atomic group so that the output is the same
for DFA matching (otherwise it may show multiple matches). --/
/-- Test \h+ --/
/^A(?>\ˆ+)/
A B
/-- Test \H+ --/
/^A(?>\È+)/
AB
** Fail
A B
/-- Test \R+ --/
/^A(?>\Ù+)/
A\x15B
A\x0dB
A\x25B
A\x0bB
A\x0cB
** Fail
A B
/-- Test \v+ --/
/^A(?>\¥+)/
A\x15B
A\x0dB
A\x25B
A\x0bB
A\x0cB
** Fail
A B
/-- Test \V+ --/
/^A(?>\å+)/
A B
** Fail
A\x15B
A\x0dB
A\x25B
A\x0bB
A\x0cB
/-- End --/
+9449
View File
@@ -0,0 +1,9449 @@
/-- This set of tests is for features that are compatible with all versions of
Perl >= 5.10, in non-UTF-8 mode. It should run clean for the 8-bit, 16-bit,
and 32-bit PCRE libraries. --/
< forbid 89?=ABCDEFfGILMNPTUWXZ<
/the quick brown fox/
the quick brown fox
0: the quick brown fox
The quick brown FOX
No match
What do you know about the quick brown fox?
0: the quick brown fox
What do you know about THE QUICK BROWN FOX?
No match
/The quick brown fox/i
the quick brown fox
0: the quick brown fox
The quick brown FOX
0: The quick brown FOX
What do you know about the quick brown fox?
0: the quick brown fox
What do you know about THE QUICK BROWN FOX?
0: THE QUICK BROWN FOX
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
abcd\t\n\r\f\a\e9;\$\\?caxyz
0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
abxyzpqrrrabbxyyyypqAzz
0: abxyzpqrrrabbxyyyypqAzz
abxyzpqrrrabbxyyyypqAzz
0: abxyzpqrrrabbxyyyypqAzz
aabxyzpqrrrabbxyyyypqAzz
0: aabxyzpqrrrabbxyyyypqAzz
aaabxyzpqrrrabbxyyyypqAzz
0: aaabxyzpqrrrabbxyyyypqAzz
aaaabxyzpqrrrabbxyyyypqAzz
0: aaaabxyzpqrrrabbxyyyypqAzz
abcxyzpqrrrabbxyyyypqAzz
0: abcxyzpqrrrabbxyyyypqAzz
aabcxyzpqrrrabbxyyyypqAzz
0: aabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypAzz
0: aaabcxyzpqrrrabbxyyyypAzz
aaabcxyzpqrrrabbxyyyypqAzz
0: aaabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypqqAzz
0: aaabcxyzpqrrrabbxyyyypqqAzz
aaabcxyzpqrrrabbxyyyypqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
aaaabcxyzpqrrrabbxyyyypqAzz
0: aaaabcxyzpqrrrabbxyyyypqAzz
abxyzzpqrrrabbxyyyypqAzz
0: abxyzzpqrrrabbxyyyypqAzz
aabxyzzzpqrrrabbxyyyypqAzz
0: aabxyzzzpqrrrabbxyyyypqAzz
aaabxyzzzzpqrrrabbxyyyypqAzz
0: aaabxyzzzzpqrrrabbxyyyypqAzz
aaaabxyzzzzpqrrrabbxyyyypqAzz
0: aaaabxyzzzzpqrrrabbxyyyypqAzz
abcxyzzpqrrrabbxyyyypqAzz
0: abcxyzzpqrrrabbxyyyypqAzz
aabcxyzzzpqrrrabbxyyyypqAzz
0: aabcxyzzzpqrrrabbxyyyypqAzz
aaabcxyzzzzpqrrrabbxyyyypqAzz
0: aaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbxyyyypqAzz
0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyypqAzz
0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
aaabcxyzpqrrrabbxyyyypABzz
0: aaabcxyzpqrrrabbxyyyypABzz
aaabcxyzpqrrrabbxyyyypABBzz
0: aaabcxyzpqrrrabbxyyyypABBzz
>>>aaabxyzpqrrrabbxyyyypqAzz
0: aaabxyzpqrrrabbxyyyypqAzz
>aaaabxyzpqrrrabbxyyyypqAzz
0: aaaabxyzpqrrrabbxyyyypqAzz
>>>>abcxyzpqrrrabbxyyyypqAzz
0: abcxyzpqrrrabbxyyyypqAzz
*** Failers
No match
abxyzpqrrabbxyyyypqAzz
No match
abxyzpqrrrrabbxyyyypqAzz
No match
abxyzpqrrrabxyyyypqAzz
No match
aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
No match
aaaabcxyzzzzpqrrrabbbxyyypqAzz
No match
aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
No match
/^(abc){1,2}zz/
abczz
0: abczz
1: abc
abcabczz
0: abcabczz
1: abc
*** Failers
No match
zz
No match
abcabcabczz
No match
>>abczz
No match
/^(b+?|a){1,2}?c/
bc
0: bc
1: b
bbc
0: bbc
1: b
bbbc
0: bbbc
1: bb
bac
0: bac
1: a
bbac
0: bbac
1: a
aac
0: aac
1: a
abbbbbbbbbbbc
0: abbbbbbbbbbbc
1: bbbbbbbbbbb
bbbbbbbbbbbac
0: bbbbbbbbbbbac
1: a
*** Failers
No match
aaac
No match
abbbbbbbbbbbac
No match
/^(b+|a){1,2}c/
bc
0: bc
1: b
bbc
0: bbc
1: bb
bbbc
0: bbbc
1: bbb
bac
0: bac
1: a
bbac
0: bbac
1: a
aac
0: aac
1: a
abbbbbbbbbbbc
0: abbbbbbbbbbbc
1: bbbbbbbbbbb
bbbbbbbbbbbac
0: bbbbbbbbbbbac
1: a
*** Failers
No match
aaac
No match
abbbbbbbbbbbac
No match
/^(b+|a){1,2}?bc/
bbc
0: bbc
1: b
/^(b*|ba){1,2}?bc/
babc
0: babc
1: ba
bbabc
0: bbabc
1: ba
bababc
0: bababc
1: ba
*** Failers
No match
bababbc
No match
babababc
No match
/^(ba|b*){1,2}?bc/
babc
0: babc
1: ba
bbabc
0: bbabc
1: ba
bababc
0: bababc
1: ba
*** Failers
No match
bababbc
No match
babababc
No match
/^\ca\cA\c[;\c:/
\x01\x01\e;z
0: \x01\x01\x1b;z
/^[ab\]cde]/
athing
0: a
bthing
0: b
]thing
0: ]
cthing
0: c
dthing
0: d
ething
0: e
*** Failers
No match
fthing
No match
[thing
No match
\\thing
No match
/^[]cde]/
]thing
0: ]
cthing
0: c
dthing
0: d
ething
0: e
*** Failers
No match
athing
No match
fthing
No match
/^[^ab\]cde]/
fthing
0: f
[thing
0: [
\\thing
0: \
*** Failers
0: *
athing
No match
bthing
No match
]thing
No match
cthing
No match
dthing
No match
ething
No match
/^[^]cde]/
athing
0: a
fthing
0: f
*** Failers
0: *
]thing
No match
cthing
No match
dthing
No match
ething
No match
/^\/
0: \x81
/^ÿ/
ÿ
0: \xff
/^[0-9]+$/
0
0: 0
1
0: 1
2
0: 2
3
0: 3
4
0: 4
5
0: 5
6
0: 6
7
0: 7
8
0: 8
9
0: 9
10
0: 10
100
0: 100
*** Failers
No match
abc
No match
/^.*nter/
enter
0: enter
inter
0: inter
uponter
0: uponter
/^xxx[0-9]+$/
xxx0
0: xxx0
xxx1234
0: xxx1234
*** Failers
No match
xxx
No match
/^.+[0-9][0-9][0-9]$/
x123
0: x123
xx123
0: xx123
123456
0: 123456
*** Failers
No match
123
No match
x1234
0: x1234
/^.+?[0-9][0-9][0-9]$/
x123
0: x123
xx123
0: xx123
123456
0: 123456
*** Failers
No match
123
No match
x1234
0: x1234
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
abc!pqr=apquxz.ixr.zzz.ac.uk
0: abc!pqr=apquxz.ixr.zzz.ac.uk
1: abc
2: pqr
*** Failers
No match
!pqr=apquxz.ixr.zzz.ac.uk
No match
abc!=apquxz.ixr.zzz.ac.uk
No match
abc!pqr=apquxz:ixr.zzz.ac.uk
No match
abc!pqr=apquxz.ixr.zzz.ac.ukk
No match
/:/
Well, we need a colon: somewhere
0: :
*** Fail if we don't
No match
/([\da-f:]+)$/i
0abc
0: 0abc
1: 0abc
abc
0: abc
1: abc
fed
0: fed
1: fed
E
0: E
1: E
::
0: ::
1: ::
5f03:12C0::932e
0: 5f03:12C0::932e
1: 5f03:12C0::932e
fed def
0: def
1: def
Any old stuff
0: ff
1: ff
*** Failers
No match
0zzz
No match
gzzz
No match
fed\x20
No match
Any old rubbish
No match
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
.1.2.3
0: .1.2.3
1: 1
2: 2
3: 3
A.12.123.0
0: A.12.123.0
1: 12
2: 123
3: 0
*** Failers
No match
.1.2.3333
No match
1.2.3
No match
1234.2.3
No match
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1 IN SOA non-sp1 non-sp2(
0: 1 IN SOA non-sp1 non-sp2(
1: 1
2: non-sp1
3: non-sp2
1 IN SOA non-sp1 non-sp2 (
0: 1 IN SOA non-sp1 non-sp2 (
1: 1
2: non-sp1
3: non-sp2
*** Failers
No match
1IN SOA non-sp1 non-sp2(
No match
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
a.
0: a.
Z.
0: Z.
2.
0: 2.
ab-c.pq-r.
0: ab-c.pq-r.
1: .pq-r
sxk.zzz.ac.uk.
0: sxk.zzz.ac.uk.
1: .uk
x-.y-.
0: x-.y-.
1: .y-
*** Failers
No match
-abc.peq.
No match
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
*.a
0: *.a
*.b0-a
0: *.b0-a
1: 0-a
*.c3-b.c
0: *.c3-b.c
1: 3-b
2: .c
*.c-a.b-c
0: *.c-a.b-c
1: -a
2: .b-c
3: -c
*** Failers
No match
*.0
No match
*.a-
No match
*.a-b.c-
No match
*.c-a.0-c
No match
/^(?=ab(de))(abd)(e)/
abde
0: abde
1: de
2: abd
3: e
/^(?!(ab)de|x)(abd)(f)/
abdf
0: abdf
1: <unset>
2: abd
3: f
/^(?=(ab(cd)))(ab)/
abcd
0: ab
1: abcd
2: cd
3: ab
/^[\da-f](\.[\da-f])*$/i
a.b.c.d
0: a.b.c.d
1: .d
A.B.C.D
0: A.B.C.D
1: .D
a.b.c.1.2.3.C
0: a.b.c.1.2.3.C
1: .C
/^\".*\"\s*(;.*)?$/
\"1234\"
0: "1234"
\"abcd\" ;
0: "abcd" ;
1: ;
\"\" ; rhubarb
0: "" ; rhubarb
1: ; rhubarb
*** Failers
No match
\"1234\" : things
No match
/^$/
\
0:
*** Failers
No match
/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
ab c
0: ab c
*** Failers
No match
abc
No match
ab cde
No match
/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
ab c
0: ab c
*** Failers
No match
abc
No match
ab cde
No match
/^ a\ b[c ]d $/x
a bcd
0: a bcd
a b d
0: a b d
*** Failers
No match
abcd
No match
ab d
No match
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
abcdefhijklm
0: abcdefhijklm
1: abc
2: bc
3: c
4: def
5: ef
6: f
7: hij
8: ij
9: j
10: klm
11: lm
12: m
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
abcdefhijklm
0: abcdefhijklm
1: bc
2: c
3: ef
4: f
5: ij
6: j
7: lm
8: m
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
a+ Z0+\x08\n\x1d\x12
0: a+ Z0+\x08\x0a\x1d\x12
/^[.^$|()*+?{,}]+/
.^\$(*+)|{?,?}
0: .^$(*+)|{?,?}
/^a*\w/
z
0: z
az
0: az
aaaz
0: aaaz
a
0: a
aa
0: aa
aaaa
0: aaaa
a+
0: a
aa+
0: aa
/^a*?\w/
z
0: z
az
0: a
aaaz
0: a
a
0: a
aa
0: a
aaaa
0: a
a+
0: a
aa+
0: a
/^a+\w/
az
0: az
aaaz
0: aaaz
aa
0: aa
aaaa
0: aaaa
aa+
0: aa
/^a+?\w/
az
0: az
aaaz
0: aa
aa
0: aa
aaaa
0: aa
aa+
0: aa
/^\d{8}\w{2,}/
1234567890
0: 1234567890
12345678ab
0: 12345678ab
12345678__
0: 12345678__
*** Failers
No match
1234567
No match
/^[aeiou\d]{4,5}$/
uoie
0: uoie
1234
0: 1234
12345
0: 12345
aaaaa
0: aaaaa
*** Failers
No match
123456
No match
/^[aeiou\d]{4,5}?/
uoie
0: uoie
1234
0: 1234
12345
0: 1234
aaaaa
0: aaaa
123456
0: 1234
/\A(abc|def)=(\1){2,3}\Z/
abc=abcabc
0: abc=abcabc
1: abc
2: abc
def=defdefdef
0: def=defdefdef
1: def
2: def
*** Failers
No match
abc=defdef
No match
/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
abcdefghijkcda2
0: abcdefghijkcda2
1: a
2: b
3: c
4: d
5: e
6: f
7: g
8: h
9: i
10: j
11: k
12: cd
abcdefghijkkkkcda2
0: abcdefghijkkkkcda2
1: a
2: b
3: c
4: d
5: e
6: f
7: g
8: h
9: i
10: j
11: k
12: cd
/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
cataract cataract23
0: cataract cataract23
1: cataract
2: aract
3: ract
4:
5: 3
catatonic catatonic23
0: catatonic catatonic23
1: catatonic
2: atonic
3: tonic
4:
5: 3
caterpillar caterpillar23
0: caterpillar caterpillar23
1: caterpillar
2: erpillar
3: <unset>
4:
5: 3
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
From abcd Mon Sep 01 12:33:02 1997
0: From abcd Mon Sep 01 12:33
1: abcd
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
From abcd Mon Sep 01 12:33:02 1997
0: From abcd Mon Sep 01 12:33
1: Sep
From abcd Mon Sep 1 12:33:02 1997
0: From abcd Mon Sep 1 12:33
1: Sep
*** Failers
No match
From abcd Sep 01 12:33:02 1997
No match
/^12.34/s
12\n34
0: 12\x0a34
12\r34
0: 12\x0d34
/\w+(?=\t)/
the quick brown\t fox
0: brown
/foo(?!bar)(.*)/
foobar is foolish see?
0: foolish see?
1: lish see?
/(?:(?!foo)...|^.{0,2})bar(.*)/
foobar crowbar etc
0: rowbar etc
1: etc
barrel
0: barrel
1: rel
2barrel
0: 2barrel
1: rel
A barrel
0: A barrel
1: rel
/^(\D*)(?=\d)(?!123)/
abc456
0: abc
1: abc
*** Failers
No match
abc123
No match
/^1234(?# test newlines
inside)/
1234
0: 1234
/^1234 #comment in extended re
/x
1234
0: 1234
/#rhubarb
abcd/x
abcd
0: abcd
/^abcd#rhubarb/x
abcd
0: abcd
/^(a)\1{2,3}(.)/
aaab
0: aaab
1: a
2: b
aaaab
0: aaaab
1: a
2: b
aaaaab
0: aaaaa
1: a
2: a
aaaaaab
0: aaaaa
1: a
2: a
/(?!^)abc/
the abc
0: abc
*** Failers
No match
abc
No match
/(?=^)abc/
abc
0: abc
*** Failers
No match
the abc
No match
/^[ab]{1,3}(ab*|b)/
aabbbbb
0: aabb
1: b
/^[ab]{1,3}?(ab*|b)/
aabbbbb
0: aabbbbb
1: abbbbb
/^[ab]{1,3}?(ab*?|b)/
aabbbbb
0: aa
1: a
/^[ab]{1,3}(ab*?|b)/
aabbbbb
0: aabb
1: b
/ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # one word, optionally followed by....
(?:
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
\(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) | # comments, or...
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
# quoted strings
)*
< (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # leading <
(?: @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* , (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
)* # further okay, if led by comma
: # closing colon
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* )? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
/x
Alan Other <user\@dom.ain>
0: Alan Other <user@dom.ain>
<user\@dom.ain>
0: user@dom.ain
user\@dom.ain
0: user@dom.ain
\"A. Other\" <user.1234\@dom.ain> (a comment)
0: "A. Other" <user.1234@dom.ain> (a comment)
A. Other <user.1234\@dom.ain> (a comment)
0: Other <user.1234@dom.ain> (a comment)
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
A missing angle <user\@some.where
0: user@some.where
*** Failers
No match
The quick brown fox
No match
/[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional leading comment
(?:
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
# leading word
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
(?:
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
|
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
) # "special" comment or quoted string
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
)*
<
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# <
(?:
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
(?: ,
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
)* # additional domains
:
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address spec
> # >
# name and address
)
/x
Alan Other <user\@dom.ain>
0: Alan Other <user@dom.ain>
<user\@dom.ain>
0: user@dom.ain
user\@dom.ain
0: user@dom.ain
\"A. Other\" <user.1234\@dom.ain> (a comment)
0: "A. Other" <user.1234@dom.ain>
A. Other <user.1234\@dom.ain> (a comment)
0: Other <user.1234@dom.ain>
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
A missing angle <user\@some.where
0: user@some.where
*** Failers
No match
The quick brown fox
No match
/abc\0def\00pqr\000xyz\0000AB/
abc\0def\00pqr\000xyz\0000AB
0: abc\x00def\x00pqr\x00xyz\x000AB
abc456 abc\0def\00pqr\000xyz\0000ABCDE
0: abc\x00def\x00pqr\x00xyz\x000AB
/abc\x0def\x00pqr\x000xyz\x0000AB/
abc\x0def\x00pqr\x000xyz\x0000AB
0: abc\x0def\x00pqr\x000xyz\x0000AB
abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
0: abc\x0def\x00pqr\x000xyz\x0000AB
/^[\000-\037]/
\0A
0: \x00
\01B
0: \x01
\037C
0: \x1f
/\0*/
\0\0\0\0
0: \x00\x00\x00\x00
/A\x0{2,3}Z/
The A\x0\x0Z
0: A\x00\x00Z
An A\0\x0\0Z
0: A\x00\x00\x00Z
*** Failers
No match
A\0Z
No match
A\0\x0\0\x0Z
No match
/^(cow|)\1(bell)/
cowcowbell
0: cowcowbell
1: cow
2: bell
bell
0: bell
1:
2: bell
*** Failers
No match
cowbell
No match
/^\s/
\040abc
0:
\x0cabc
0: \x0c
\nabc
0: \x0a
\rabc
0: \x0d
\tabc
0: \x09
*** Failers
No match
abc
No match
/^a b
c/x
abc
0: abc
/^(a|)\1*b/
ab
0: ab
1: a
aaaab
0: aaaab
1: a
b
0: b
1:
*** Failers
No match
acb
No match
/^(a|)\1+b/
aab
0: aab
1: a
aaaab
0: aaaab
1: a
b
0: b
1:
*** Failers
No match
ab
No match
/^(a|)\1?b/
ab
0: ab
1: a
aab
0: aab
1: a
b
0: b
1:
*** Failers
No match
acb
No match
/^(a|)\1{2}b/
aaab
0: aaab
1: a
b
0: b
1:
*** Failers
No match
ab
No match
aab
No match
aaaab
No match
/^(a|)\1{2,3}b/
aaab
0: aaab
1: a
aaaab
0: aaaab
1: a
b
0: b
1:
*** Failers
No match
ab
No match
aab
No match
aaaaab
No match
/ab{1,3}bc/
abbbbc
0: abbbbc
abbbc
0: abbbc
abbc
0: abbc
*** Failers
No match
abc
No match
abbbbbc
No match
/([^.]*)\.([^:]*):[T ]+(.*)/
track1.title:TBlah blah blah
0: track1.title:TBlah blah blah
1: track1
2: title
3: Blah blah blah
/([^.]*)\.([^:]*):[T ]+(.*)/i
track1.title:TBlah blah blah
0: track1.title:TBlah blah blah
1: track1
2: title
3: Blah blah blah
/([^.]*)\.([^:]*):[t ]+(.*)/i
track1.title:TBlah blah blah
0: track1.title:TBlah blah blah
1: track1
2: title
3: Blah blah blah
/^[W-c]+$/
WXY_^abc
0: WXY_^abc
*** Failers
No match
wxy
No match
/^[W-c]+$/i
WXY_^abc
0: WXY_^abc
wxy_^ABC
0: wxy_^ABC
/^[\x3f-\x5F]+$/i
WXY_^abc
0: WXY_^abc
wxy_^ABC
0: wxy_^ABC
/^abc$/m
abc
0: abc
qqq\nabc
0: abc
abc\nzzz
0: abc
qqq\nabc\nzzz
0: abc
/^abc$/
abc
0: abc
*** Failers
No match
qqq\nabc
No match
abc\nzzz
No match
qqq\nabc\nzzz
No match
/\Aabc\Z/m
abc
0: abc
abc\n
0: abc
*** Failers
No match
qqq\nabc
No match
abc\nzzz
No match
qqq\nabc\nzzz
No match
/\A(.)*\Z/s
abc\ndef
0: abc\x0adef
1: f
/\A(.)*\Z/m
*** Failers
0: *** Failers
1: s
abc\ndef
No match
/(?:b)|(?::+)/
b::c
0: b
c::b
0: ::
/[-az]+/
az-
0: az-
*** Failers
0: a
b
No match
/[az-]+/
za-
0: za-
*** Failers
0: a
b
No match
/[a\-z]+/
a-z
0: a-z
*** Failers
0: a
b
No match
/[a-z]+/
abcdxyz
0: abcdxyz
/[\d-]+/
12-34
0: 12-34
*** Failers
No match
aaa
No match
/[\d-z]+/
12-34z
0: 12-34z
*** Failers
No match
aaa
No match
/\x5c/
\\
0: \
/\x20Z/
the Zoo
0: Z
*** Failers
No match
Zulu
No match
/(abc)\1/i
abcabc
0: abcabc
1: abc
ABCabc
0: ABCabc
1: ABC
abcABC
0: abcABC
1: abc
/ab{3cd/
ab{3cd
0: ab{3cd
/ab{3,cd/
ab{3,cd
0: ab{3,cd
/ab{3,4a}cd/
ab{3,4a}cd
0: ab{3,4a}cd
/{4,5a}bc/
{4,5a}bc
0: {4,5a}bc
/abc$/
abc
0: abc
abc\n
0: abc
*** Failers
No match
abc\ndef
No match
/(abc)\123/
abc\x53
0: abcS
1: abc
/(abc)\223/
abc\x93
0: abc\x93
1: abc
/(abc)\323/
abc\xd3
0: abc\xd3
1: abc
/(abc)\100/
abc\x40
0: abc@
1: abc
abc\100
0: abc@
1: abc
/(abc)\1000/
abc\x400
0: abc@0
1: abc
abc\x40\x30
0: abc@0
1: abc
abc\1000
0: abc@0
1: abc
abc\100\x30
0: abc@0
1: abc
abc\100\060
0: abc@0
1: abc
abc\100\60
0: abc@0
1: abc
/^A\8B\9C$/
A8B9C
0: A8B9C
*** Failers
No match
A\08B\09C
No match
/^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
ABCDEFGHIHI
0: ABCDEFGHIHI
1: A
2: B
3: C
4: D
5: E
6: F
7: G
8: H
9: I
/^[A\8B\9C]+$/
A8B9C
0: A8B9C
*** Failers
No match
A8B9C\x00
No match
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
abcdefghijkllS
0: abcdefghijkllS
1: a
2: b
3: c
4: d
5: e
6: f
7: g
8: h
9: i
10: j
11: k
12: l
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
abcdefghijk\12S
0: abcdefghijk\x0aS
1: a
2: b
3: c
4: d
5: e
6: f
7: g
8: h
9: i
10: j
11: k
/ab\idef/
abidef
0: abidef
/a{0}bc/
bc
0: bc
/(a|(bc)){0,0}?xyz/
xyz
0: xyz
/abc[\10]de/
abc\010de
0: abc\x08de
/abc[\1]de/
abc\1de
0: abc\x01de
/(abc)[\1]de/
abc\1de
0: abc\x01de
1: abc
/(?s)a.b/
a\nb
0: a\x0ab
/^([^a])([^\b])([^c]*)([^d]{3,4})/
baNOTccccd
0: baNOTcccc
1: b
2: a
3: NOT
4: cccc
baNOTcccd
0: baNOTccc
1: b
2: a
3: NOT
4: ccc
baNOTccd
0: baNOTcc
1: b
2: a
3: NO
4: Tcc
bacccd
0: baccc
1: b
2: a
3:
4: ccc
*** Failers
0: *** Failers
1: *
2: *
3: * Fail
4: ers
anything
No match
b\bc
No match
baccd
No match
/[^a]/
Abc
0: A
/[^a]/i
Abc
0: b
/[^a]+/
AAAaAbc
0: AAA
/[^a]+/i
AAAaAbc
0: bc
/[^a]+/
bbb\nccc
0: bbb\x0accc
/[^k]$/
abc
0: c
*** Failers
0: s
abk
No match
/[^k]{2,3}$/
abc
0: abc
kbc
0: bc
kabc
0: abc
*** Failers
0: ers
abk
No match
akb
No match
akk
No match
/^\d{8,}\@.+[^k]$/
12345678\@a.b.c.d
0: 12345678@a.b.c.d
123456789\@x.y.z
0: 123456789@x.y.z
*** Failers
No match
12345678\@x.y.uk
No match
1234567\@a.b.c.d
No match
/(a)\1{8,}/
aaaaaaaaa
0: aaaaaaaaa
1: a
aaaaaaaaaa
0: aaaaaaaaaa
1: a
*** Failers
No match
aaaaaaa
No match
/[^a]/
aaaabcd
0: b
aaAabcd
0: A
/[^a]/i
aaaabcd
0: b
aaAabcd
0: b
/[^az]/
aaaabcd
0: b
aaAabcd
0: A
/[^az]/i
aaaabcd
0: b
aaAabcd
0: b
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
/P[^*]TAIRE[^*]{1,6}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
0: PSTAIREISLL
/P[^*]TAIRE[^*]{1,}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
0: PSTAIREISLL
/(\.\d\d[1-9]?)\d+/
1.230003938
0: .230003938
1: .23
1.875000282
0: .875000282
1: .875
1.235
0: .235
1: .23
/(\.\d\d((?=0)|\d(?=\d)))/
1.230003938
0: .23
1: .23
2:
1.875000282
0: .875
1: .875
2: 5
*** Failers
No match
1.235
No match
/a(?)b/
ab
0: ab
/\b(foo)\s+(\w+)/i
Food is on the foo table
0: foo table
1: foo
2: table
/foo(.*)bar/
The food is under the bar in the barn.
0: food is under the bar in the bar
1: d is under the bar in the
/foo(.*?)bar/
The food is under the bar in the barn.
0: food is under the bar
1: d is under the
/(.*)(\d*)/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2 numbers: 53147
2:
/(.*)(\d+)/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2 numbers: 5314
2: 7
/(.*?)(\d*)/
I have 2 numbers: 53147
0:
1:
2:
/(.*?)(\d+)/
I have 2 numbers: 53147
0: I have 2
1: I have
2: 2
/(.*)(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2 numbers: 5314
2: 7
/(.*?)(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2 numbers:
2: 53147
/(.*)\b(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2 numbers:
2: 53147
/(.*\D)(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2 numbers:
2: 53147
/^\D*(?!123)/
ABC123
0: AB
/^(\D*)(?=\d)(?!123)/
ABC445
0: ABC
1: ABC
*** Failers
No match
ABC123
No match
/^[W-]46]/
W46]789
0: W46]
-46]789
0: -46]
*** Failers
No match
Wall
No match
Zebra
No match
42
No match
[abcd]
No match
]abcd[
No match
/^[W-\]46]/
W46]789
0: W
Wall
0: W
Zebra
0: Z
Xylophone
0: X
42
0: 4
[abcd]
0: [
]abcd[
0: ]
\\backslash
0: \
*** Failers
No match
-46]789
No match
well
No match
/\d\d\/\d\d\/\d\d\d\d/
01/01/2000
0: 01/01/2000
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
No match
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
No match
/^(a){0,0}/
bcd
0:
abc
0:
aab
0:
/^(a){0,1}/
bcd
0:
abc
0: a
1: a
aab
0: a
1: a
/^(a){0,2}/
bcd
0:
abc
0: a
1: a
aab
0: aa
1: a
/^(a){0,3}/
bcd
0:
abc
0: a
1: a
aab
0: aa
1: a
aaa
0: aaa
1: a
/^(a){0,}/
bcd
0:
abc
0: a
1: a
aab
0: aa
1: a
aaa
0: aaa
1: a
aaaaaaaa
0: aaaaaaaa
1: a
/^(a){1,1}/
bcd
No match
abc
0: a
1: a
aab
0: a
1: a
/^(a){1,2}/
bcd
No match
abc
0: a
1: a
aab
0: aa
1: a
/^(a){1,3}/
bcd
No match
abc
0: a
1: a
aab
0: aa
1: a
aaa
0: aaa
1: a
/^(a){1,}/
bcd
No match
abc
0: a
1: a
aab
0: aa
1: a
aaa
0: aaa
1: a
aaaaaaaa
0: aaaaaaaa
1: a
/.*\.gif/
borfle\nbib.gif\nno
0: bib.gif
/.{0,}\.gif/
borfle\nbib.gif\nno
0: bib.gif
/.*\.gif/m
borfle\nbib.gif\nno
0: bib.gif
/.*\.gif/s
borfle\nbib.gif\nno
0: borfle\x0abib.gif
/.*\.gif/ms
borfle\nbib.gif\nno
0: borfle\x0abib.gif
/.*$/
borfle\nbib.gif\nno
0: no
/.*$/m
borfle\nbib.gif\nno
0: borfle
/.*$/s
borfle\nbib.gif\nno
0: borfle\x0abib.gif\x0ano
/.*$/ms
borfle\nbib.gif\nno
0: borfle\x0abib.gif\x0ano
/.*$/
borfle\nbib.gif\nno\n
0: no
/.*$/m
borfle\nbib.gif\nno\n
0: borfle
/.*$/s
borfle\nbib.gif\nno\n
0: borfle\x0abib.gif\x0ano\x0a
/.*$/ms
borfle\nbib.gif\nno\n
0: borfle\x0abib.gif\x0ano\x0a
/(.*X|^B)/
abcde\n1234Xyz
0: 1234X
1: 1234X
BarFoo
0: B
1: B
*** Failers
No match
abcde\nBar
No match
/(.*X|^B)/m
abcde\n1234Xyz
0: 1234X
1: 1234X
BarFoo
0: B
1: B
abcde\nBar
0: B
1: B
/(.*X|^B)/s
abcde\n1234Xyz
0: abcde\x0a1234X
1: abcde\x0a1234X
BarFoo
0: B
1: B
*** Failers
No match
abcde\nBar
No match
/(.*X|^B)/ms
abcde\n1234Xyz
0: abcde\x0a1234X
1: abcde\x0a1234X
BarFoo
0: B
1: B
abcde\nBar
0: B
1: B
/(?s)(.*X|^B)/
abcde\n1234Xyz
0: abcde\x0a1234X
1: abcde\x0a1234X
BarFoo
0: B
1: B
*** Failers
No match
abcde\nBar
No match
/(?s:.*X|^B)/
abcde\n1234Xyz
0: abcde\x0a1234X
BarFoo
0: B
*** Failers
No match
abcde\nBar
No match
/^.*B/
**** Failers
No match
abc\nB
No match
/(?s)^.*B/
abc\nB
0: abc\x0aB
/(?m)^.*B/
abc\nB
0: B
/(?ms)^.*B/
abc\nB
0: abc\x0aB
/(?ms)^B/
abc\nB
0: B
/(?s)B$/
B\n
0: B
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
123456654321
0: 123456654321
/^\d\d\d\d\d\d\d\d\d\d\d\d/
123456654321
0: 123456654321
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
123456654321
0: 123456654321
/^[abc]{12}/
abcabcabcabc
0: abcabcabcabc
/^[a-c]{12}/
abcabcabcabc
0: abcabcabcabc
/^(a|b|c){12}/
abcabcabcabc
0: abcabcabcabc
1: c
/^[abcdefghijklmnopqrstuvwxy0123456789]/
n
0: n
*** Failers
No match
z
No match
/abcde{0,0}/
abcd
0: abcd
*** Failers
No match
abce
No match
/ab[cd]{0,0}e/
abe
0: abe
*** Failers
No match
abcde
No match
/ab(c){0,0}d/
abd
0: abd
*** Failers
No match
abcd
No match
/a(b*)/
a
0: a
1:
ab
0: ab
1: b
abbbb
0: abbbb
1: bbbb
*** Failers
0: a
1:
bbbbb
No match
/ab\d{0}e/
abe
0: abe
*** Failers
No match
ab1e
No match
/"([^\\"]+|\\.)*"/
the \"quick\" brown fox
0: "quick"
1: quick
\"the \\\"quick\\\" brown fox\"
0: "the \"quick\" brown fox"
1: brown fox
/.*?/g+
abc
0:
0+ abc
0: a
0+ bc
0:
0+ bc
0: b
0+ c
0:
0+ c
0: c
0+
0:
0+
/\b/g+
abc
0:
0+ abc
0:
0+
/\b/+g
abc
0:
0+ abc
0:
0+
//g
abc
0:
0:
0:
0:
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
1: BGCOLOR='#DBE9E9'
2: align=left valign=top
3: 43.
4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
5:
6:
7: <unset>
8: align=left valign=top
9: Lega lstaff.com
10: align=left valign=top
11: CA - Statewide
/a[^a]b/
acb
0: acb
a\nb
0: a\x0ab
/a.b/
acb
0: acb
*** Failers
No match
a\nb
No match
/a[^a]b/s
acb
0: acb
a\nb
0: a\x0ab
/a.b/s
acb
0: acb
a\nb
0: a\x0ab
/^(b+?|a){1,2}?c/
bac
0: bac
1: a
bbac
0: bbac
1: a
bbbac
0: bbbac
1: a
bbbbac
0: bbbbac
1: a
bbbbbac
0: bbbbbac
1: a
/^(b+|a){1,2}?c/
bac
0: bac
1: a
bbac
0: bbac
1: a
bbbac
0: bbbac
1: a
bbbbac
0: bbbbac
1: a
bbbbbac
0: bbbbbac
1: a
/(?!\A)x/m
x\nb\n
No match
a\bx\n
0: x
/\x0{ab}/
\0{ab}
0: \x00{ab}
/(A|B)*?CD/
CD
0: CD
/(A|B)*CD/
CD
0: CD
/(AB)*?\1/
ABABAB
0: ABAB
1: AB
/(AB)*\1/
ABABAB
0: ABABAB
1: AB
/(?<!bar)foo/
foo
0: foo
catfood
0: foo
arfootle
0: foo
rfoosh
0: foo
*** Failers
No match
barfoo
No match
towbarfoo
No match
/\w{3}(?<!bar)foo/
catfood
0: catfoo
*** Failers
No match
foo
No match
barfoo
No match
towbarfoo
No match
/(?<=(foo)a)bar/
fooabar
0: bar
1: foo
*** Failers
No match
bar
No match
foobbar
No match
/\Aabc\z/m
abc
0: abc
*** Failers
No match
abc\n
No match
qqq\nabc
No match
abc\nzzz
No match
qqq\nabc\nzzz
No match
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
No match
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
/(?>(\.\d\d[1-9]?))\d+/
1.230003938
0: .230003938
1: .23
1.875000282
0: .875000282
1: .875
*** Failers
No match
1.235
No match
/^((?>\w+)|(?>\s+))*$/
now is the time for all good men to come to the aid of the party
0: now is the time for all good men to come to the aid of the party
1: party
*** Failers
No match
this is not a line with only words and spaces!
No match
/(\d+)(\w)/
12345a
0: 12345a
1: 12345
2: a
12345+
0: 12345
1: 1234
2: 5
/((?>\d+))(\w)/
12345a
0: 12345a
1: 12345
2: a
*** Failers
No match
12345+
No match
/(?>a+)b/
aaab
0: aaab
/((?>a+)b)/
aaab
0: aaab
1: aaab
/(?>(a+))b/
aaab
0: aaab
1: aaa
/(?>b)+/
aaabbbccc
0: bbb
/(?>a+|b+|c+)*c/
aaabbbbccccd
0: aaabbbbc
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
0: abc(ade)ufh()()x
1: x
/\(((?>[^()]+)|\([^()]+\))+\)/
(abc)
0: (abc)
1: abc
(abc(def)xyz)
0: (abc(def)xyz)
1: xyz
*** Failers
No match
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
/a(?-i)b/i
ab
0: ab
Ab
0: Ab
*** Failers
No match
aB
No match
AB
No match
/(a (?x)b c)d e/
a bcd e
0: a bcd e
1: a bc
*** Failers
No match
a b cd e
No match
abcd e
No match
a bcde
No match
/(a b(?x)c d (?-x)e f)/
a bcde f
0: a bcde f
1: a bcde f
*** Failers
No match
abcdef
No match
/(a(?i)b)c/
abc
0: abc
1: ab
aBc
0: aBc
1: aB
*** Failers
No match
abC
No match
aBC
No match
Abc
No match
ABc
No match
ABC
No match
AbC
No match
/a(?i:b)c/
abc
0: abc
aBc
0: aBc
*** Failers
No match
ABC
No match
abC
No match
aBC
No match
/a(?i:b)*c/
aBc
0: aBc
aBBc
0: aBBc
*** Failers
No match
aBC
No match
aBBC
No match
/a(?=b(?i)c)\w\wd/
abcd
0: abcd
abCd
0: abCd
*** Failers
No match
aBCd
No match
abcD
No match
/(?s-i:more.*than).*million/i
more than million
0: more than million
more than MILLION
0: more than MILLION
more \n than Million
0: more \x0a than Million
*** Failers
No match
MORE THAN MILLION
No match
more \n than \n million
No match
/(?:(?s-i)more.*than).*million/i
more than million
0: more than million
more than MILLION
0: more than MILLION
more \n than Million
0: more \x0a than Million
*** Failers
No match
MORE THAN MILLION
No match
more \n than \n million
No match
/(?>a(?i)b+)+c/
abc
0: abc
aBbc
0: aBbc
aBBc
0: aBBc
*** Failers
No match
Abc
No match
abAb
No match
abbC
No match
/(?=a(?i)b)\w\wc/
abc
0: abc
aBc
0: aBc
*** Failers
No match
Ab
No match
abC
No match
aBC
No match
/(?<=a(?i)b)(\w\w)c/
abxxc
0: xxc
1: xx
aBxxc
0: xxc
1: xx
*** Failers
No match
Abxxc
No match
ABxxc
No match
abxxC
No match
/(?:(a)|b)(?(1)A|B)/
aA
0: aA
1: a
bB
0: bB
*** Failers
No match
aB
No match
bA
No match
/^(a)?(?(1)a|b)+$/
aa
0: aa
1: a
b
0: b
bb
0: bb
*** Failers
No match
ab
No match
/^(?(?=abc)\w{3}:|\d\d)$/
abc:
0: abc:
12
0: 12
*** Failers
No match
123
No match
xyz
No match
/^(?(?!abc)\d\d|\w{3}:)$/
abc:
0: abc:
12
0: 12
*** Failers
No match
123
No match
xyz
No match
/(?(?<=foo)bar|cat)/
foobar
0: bar
cat
0: cat
fcat
0: cat
focat
0: cat
*** Failers
No match
foocat
No match
/(?(?<!foo)cat|bar)/
foobar
0: bar
cat
0: cat
fcat
0: cat
focat
0: cat
*** Failers
No match
foocat
No match
/( \( )? [^()]+ (?(1) \) |) /x
abcd
0: abcd
(abcd)
0: (abcd)
1: (
the quick (abcd) fox
0: the quick
(abcd
0: abcd
/( \( )? [^()]+ (?(1) \) ) /x
abcd
0: abcd
(abcd)
0: (abcd)
1: (
the quick (abcd) fox
0: the quick
(abcd
0: abcd
/^(?(2)a|(1)(2))+$/
12
0: 12
1: 1
2: 2
12a
0: 12a
1: 1
2: 2
12aa
0: 12aa
1: 1
2: 2
*** Failers
No match
1234
No match
/((?i)blah)\s+\1/
blah blah
0: blah blah
1: blah
BLAH BLAH
0: BLAH BLAH
1: BLAH
Blah Blah
0: Blah Blah
1: Blah
blaH blaH
0: blaH blaH
1: blaH
*** Failers
No match
blah BLAH
No match
Blah blah
No match
blaH blah
No match
/((?i)blah)\s+(?i:\1)/
blah blah
0: blah blah
1: blah
BLAH BLAH
0: BLAH BLAH
1: BLAH
Blah Blah
0: Blah Blah
1: Blah
blaH blaH
0: blaH blaH
1: blaH
blah BLAH
0: blah BLAH
1: blah
Blah blah
0: Blah blah
1: Blah
blaH blah
0: blaH blah
1: blaH
/(?>a*)*/
a
0: a
aa
0: aa
aaaa
0: aaaa
/(abc|)+/
abc
0: abc
1:
abcabc
0: abcabc
1:
abcabcabc
0: abcabcabc
1:
xyz
0:
1:
/([a]*)*/
a
0: a
1:
aaaaa
0: aaaaa
1:
/([ab]*)*/
a
0: a
1:
b
0: b
1:
ababab
0: ababab
1:
aaaabcde
0: aaaab
1:
bbbb
0: bbbb
1:
/([^a]*)*/
b
0: b
1:
bbbb
0: bbbb
1:
aaa
0:
1:
/([^ab]*)*/
cccc
0: cccc
1:
abab
0:
1:
/([a]*?)*/
a
0:
1:
aaaa
0:
1:
/([ab]*?)*/
a
0:
1:
b
0:
1:
abab
0:
1:
baba
0:
1:
/([^a]*?)*/
b
0:
1:
bbbb
0:
1:
aaa
0:
1:
/([^ab]*?)*/
c
0:
1:
cccc
0:
1:
baba
0:
1:
/(?>a*)*/
a
0: a
aaabcde
0: aaa
/((?>a*))*/
aaaaa
0: aaaaa
1:
aabbaa
0: aa
1:
/((?>a*?))*/
aaaaa
0:
1:
aabbaa
0:
1:
/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
12-sep-98
0: 12-sep-98
12-09-98
0: 12-09-98
*** Failers
No match
sep-12-98
No match
/(?<=(foo))bar\1/
foobarfoo
0: barfoo
1: foo
foobarfootling
0: barfoo
1: foo
*** Failers
No match
foobar
No match
barfoo
No match
/(?i:saturday|sunday)/
saturday
0: saturday
sunday
0: sunday
Saturday
0: Saturday
Sunday
0: Sunday
SATURDAY
0: SATURDAY
SUNDAY
0: SUNDAY
SunDay
0: SunDay
/(a(?i)bc|BB)x/
abcx
0: abcx
1: abc
aBCx
0: aBCx
1: aBC
bbx
0: bbx
1: bb
BBx
0: BBx
1: BB
*** Failers
No match
abcX
No match
aBCX
No match
bbX
No match
BBX
No match
/^([ab](?i)[cd]|[ef])/
ac
0: ac
1: ac
aC
0: aC
1: aC
bD
0: bD
1: bD
elephant
0: e
1: e
Europe
0: E
1: E
frog
0: f
1: f
France
0: F
1: F
*** Failers
No match
Africa
No match
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
ab
0: ab
1: ab
aBd
0: aBd
1: aBd
xy
0: xy
1: xy
xY
0: xY
1: xY
zebra
0: z
1: z
Zambesi
0: Z
1: Z
*** Failers
No match
aCD
No match
XY
No match
/(?<=foo\n)^bar/m
foo\nbar
0: bar
*** Failers
No match
bar
No match
baz\nbar
No match
/(?<=(?<!foo)bar)baz/
barbaz
0: baz
barbarbaz
0: baz
koobarbaz
0: baz
*** Failers
No match
baz
No match
foobarbaz
No match
/The cases of aaaa and aaaaaa are missed out below because Perl does things/
/differently. We know that odd, and maybe incorrect, things happen with/
No match
/recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
No match
/^(a\1?){4}$/
a
No match
aa
No match
aaa
No match
aaaaa
0: aaaaa
1: a
aaaaaaa
0: aaaaaaa
1: a
aaaaaaaa
No match
aaaaaaaaa
No match
aaaaaaaaaa
0: aaaaaaaaaa
1: aaaa
aaaaaaaaaaa
No match
aaaaaaaaaaaa
No match
aaaaaaaaaaaaa
No match
aaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaa
No match
/^(a\1?)(a\1?)(a\2?)(a\3?)$/
a
No match
aa
No match
aaa
No match
aaaa
0: aaaa
1: a
2: a
3: a
4: a
aaaaa
0: aaaaa
1: a
2: aa
3: a
4: a
aaaaaa
0: aaaaaa
1: a
2: aa
3: a
4: aa
aaaaaaa
0: aaaaaaa
1: a
2: aa
3: aaa
4: a
aaaaaaaa
No match
aaaaaaaaa
No match
aaaaaaaaaa
0: aaaaaaaaaa
1: a
2: aa
3: aaa
4: aaaa
aaaaaaaaaaa
No match
aaaaaaaaaaaa
No match
aaaaaaaaaaaaa
No match
aaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaa
No match
/The following tests are taken from the Perl 5.005 test suite; some of them/
/are compatible with 5.004, but I'd rather not have to sort them out./
No match
/abc/
abc
0: abc
xabcy
0: abc
ababc
0: abc
*** Failers
No match
xbc
No match
axc
No match
abx
No match
/ab*c/
abc
0: abc
/ab*bc/
abc
0: abc
abbc
0: abbc
abbbbc
0: abbbbc
/.{1}/
abbbbc
0: a
/.{3,4}/
abbbbc
0: abbb
/ab{0,}bc/
abbbbc
0: abbbbc
/ab+bc/
abbc
0: abbc
*** Failers
No match
abc
No match
abq
No match
/ab{1,}bc/
/ab+bc/
abbbbc
0: abbbbc
/ab{1,}bc/
abbbbc
0: abbbbc
/ab{1,3}bc/
abbbbc
0: abbbbc
/ab{3,4}bc/
abbbbc
0: abbbbc
/ab{4,5}bc/
*** Failers
No match
abq
No match
abbbbc
No match
/ab?bc/
abbc
0: abbc
abc
0: abc
/ab{0,1}bc/
abc
0: abc
/ab?bc/
/ab?c/
abc
0: abc
/ab{0,1}c/
abc
0: abc
/^abc$/
abc
0: abc
*** Failers
No match
abbbbc
No match
abcc
No match
/^abc/
abcc
0: abc
/^abc$/
/abc$/
aabc
0: abc
*** Failers
No match
aabc
0: abc
aabcd
No match
/^/
abc
0:
/$/
abc
0:
/a.c/
abc
0: abc
axc
0: axc
/a.*c/
axyzc
0: axyzc
/a[bc]d/
abd
0: abd
*** Failers
No match
axyzd
No match
abc
No match
/a[b-d]e/
ace
0: ace
/a[b-d]/
aac
0: ac
/a[-b]/
a-
0: a-
/a[b-]/
a-
0: a-
/a]/
a]
0: a]
/a[]]b/
a]b
0: a]b
/a[^bc]d/
aed
0: aed
*** Failers
No match
abd
No match
abd
No match
/a[^-b]c/
adc
0: adc
/a[^]b]c/
adc
0: adc
*** Failers
No match
a-c
0: a-c
a]c
No match
/\ba\b/
a-
0: a
-a
0: a
-a-
0: a
/\by\b/
*** Failers
No match
xy
No match
yz
No match
xyz
No match
/\Ba\B/
*** Failers
0: a
a-
No match
-a
No match
-a-
No match
/\By\b/
xy
0: y
/\by\B/
yz
0: y
/\By\B/
xyz
0: y
/\w/
a
0: a
/\W/
-
0: -
*** Failers
0: *
-
0: -
a
No match
/a\sb/
a b
0: a b
/a\Sb/
a-b
0: a-b
*** Failers
No match
a-b
0: a-b
a b
No match
/\d/
1
0: 1
/\D/
-
0: -
*** Failers
0: *
-
0: -
1
No match
/[\w]/
a
0: a
/[\W]/
-
0: -
*** Failers
0: *
-
0: -
a
No match
/a[\s]b/
a b
0: a b
/a[\S]b/
a-b
0: a-b
*** Failers
No match
a-b
0: a-b
a b
No match
/[\d]/
1
0: 1
/[\D]/
-
0: -
*** Failers
0: *
-
0: -
1
No match
/ab|cd/
abc
0: ab
abcd
0: ab
/()ef/
def
0: ef
1:
/$b/
/a\(b/
a(b
0: a(b
/a\(*b/
ab
0: ab
a((b
0: a((b
/a\\b/
a\b
No match
/((a))/
abc
0: a
1: a
2: a
/(a)b(c)/
abc
0: abc
1: a
2: c
/a+b+c/
aabbabc
0: abc
/a{1,}b{1,}c/
aabbabc
0: abc
/a.+?c/
abcabc
0: abc
/(a+|b)*/
ab
0: ab
1: b
/(a+|b){0,}/
ab
0: ab
1: b
/(a+|b)+/
ab
0: ab
1: b
/(a+|b){1,}/
ab
0: ab
1: b
/(a+|b)?/
ab
0: a
1: a
/(a+|b){0,1}/
ab
0: a
1: a
/[^ab]*/
cde
0: cde
/abc/
*** Failers
No match
b
No match
/a*/
/([abc])*d/
abbbcd
0: abbbcd
1: c
/([abc])*bcd/
abcd
0: abcd
1: a
/a|b|c|d|e/
e
0: e
/(a|b|c|d|e)f/
ef
0: ef
1: e
/abcd*efg/
abcdefg
0: abcdefg
/ab*/
xabyabbbz
0: ab
xayabbbz
0: a
/(ab|cd)e/
abcde
0: cde
1: cd
/[abhgefdc]ij/
hij
0: hij
/^(ab|cd)e/
/(abc|)ef/
abcdef
0: ef
1:
/(a|b)c*d/
abcd
0: bcd
1: b
/(ab|ab*)bc/
abc
0: abc
1: a
/a([bc]*)c*/
abc
0: abc
1: bc
/a([bc]*)(c*d)/
abcd
0: abcd
1: bc
2: d
/a([bc]+)(c*d)/
abcd
0: abcd
1: bc
2: d
/a([bc]*)(c+d)/
abcd
0: abcd
1: b
2: cd
/a[bcd]*dcdcde/
adcdcde
0: adcdcde
/a[bcd]+dcdcde/
*** Failers
No match
abcde
No match
adcdcde
No match
/(ab|a)b*c/
abc
0: abc
1: ab
/((a)(b)c)(d)/
abcd
0: abcd
1: abc
2: a
3: b
4: d
/[a-zA-Z_][a-zA-Z0-9_]*/
alpha
0: alpha
/^a(bc+|b[eh])g|.h$/
abh
0: bh
/(bc+d$|ef*g.|h?i(j|k))/
effgz
0: effgz
1: effgz
ij
0: ij
1: ij
2: j
reffgz
0: effgz
1: effgz
*** Failers
No match
effg
No match
bcdd
No match
/((((((((((a))))))))))/
a
0: a
1: a
2: a
3: a
4: a
5: a
6: a
7: a
8: a
9: a
10: a
/((((((((((a))))))))))\10/
aa
0: aa
1: a
2: a
3: a
4: a
5: a
6: a
7: a
8: a
9: a
10: a
/(((((((((a)))))))))/
a
0: a
1: a
2: a
3: a
4: a
5: a
6: a
7: a
8: a
9: a
/multiple words of text/
*** Failers
No match
aa
No match
uh-uh
No match
/multiple words/
multiple words, yeah
0: multiple words
/(.*)c(.*)/
abcde
0: abcde
1: ab
2: de
/\((.*), (.*)\)/
(a, b)
0: (a, b)
1: a
2: b
/[k]/
/abcd/
abcd
0: abcd
/a(bc)d/
abcd
0: abcd
1: bc
/a[-]?c/
ac
0: ac
/(abc)\1/
abcabc
0: abcabc
1: abc
/([a-c]*)\1/
abcabc
0: abcabc
1: abc
/(a)|\1/
a
0: a
1: a
*** Failers
0: a
1: a
ab
0: a
1: a
x
No match
/(([a-c])b*?\2)*/
ababbbcbc
0: ababb
1: bb
2: b
/(([a-c])b*?\2){3}/
ababbbcbc
0: ababbbcbc
1: cbc
2: c
/((\3|b)\2(a)x)+/
aaaxabaxbaaxbbax
0: bbax
1: bbax
2: b
3: a
/((\3|b)\2(a)){2,}/
bbaababbabaaaaabbaaaabba
0: bbaaaabba
1: bba
2: b
3: a
/abc/i
ABC
0: ABC
XABCY
0: ABC
ABABC
0: ABC
*** Failers
No match
aaxabxbaxbbx
No match
XBC
No match
AXC
No match
ABX
No match
/ab*c/i
ABC
0: ABC
/ab*bc/i
ABC
0: ABC
ABBC
0: ABBC
/ab*?bc/i
ABBBBC
0: ABBBBC
/ab{0,}?bc/i
ABBBBC
0: ABBBBC
/ab+?bc/i
ABBC
0: ABBC
/ab+bc/i
*** Failers
No match
ABC
No match
ABQ
No match
/ab{1,}bc/i
/ab+bc/i
ABBBBC
0: ABBBBC
/ab{1,}?bc/i
ABBBBC
0: ABBBBC
/ab{1,3}?bc/i
ABBBBC
0: ABBBBC
/ab{3,4}?bc/i
ABBBBC
0: ABBBBC
/ab{4,5}?bc/i
*** Failers
No match
ABQ
No match
ABBBBC
No match
/ab??bc/i
ABBC
0: ABBC
ABC
0: ABC
/ab{0,1}?bc/i
ABC
0: ABC
/ab??bc/i
/ab??c/i
ABC
0: ABC
/ab{0,1}?c/i
ABC
0: ABC
/^abc$/i
ABC
0: ABC
*** Failers
No match
ABBBBC
No match
ABCC
No match
/^abc/i
ABCC
0: ABC
/^abc$/i
/abc$/i
AABC
0: ABC
/^/i
ABC
0:
/$/i
ABC
0:
/a.c/i
ABC
0: ABC
AXC
0: AXC
/a.*?c/i
AXYZC
0: AXYZC
/a.*c/i
*** Failers
No match
AABC
0: AABC
AXYZD
No match
/a[bc]d/i
ABD
0: ABD
/a[b-d]e/i
ACE
0: ACE
*** Failers
No match
ABC
No match
ABD
No match
/a[b-d]/i
AAC
0: AC
/a[-b]/i
A-
0: A-
/a[b-]/i
A-
0: A-
/a]/i
A]
0: A]
/a[]]b/i
A]B
0: A]B
/a[^bc]d/i
AED
0: AED
/a[^-b]c/i
ADC
0: ADC
*** Failers
No match
ABD
No match
A-C
No match
/a[^]b]c/i
ADC
0: ADC
/ab|cd/i
ABC
0: AB
ABCD
0: AB
/()ef/i
DEF
0: EF
1:
/$b/i
*** Failers
No match
A]C
No match
B
No match
/a\(b/i
A(B
0: A(B
/a\(*b/i
AB
0: AB
A((B
0: A((B
/a\\b/i
A\B
No match
/((a))/i
ABC
0: A
1: A
2: A
/(a)b(c)/i
ABC
0: ABC
1: A
2: C
/a+b+c/i
AABBABC
0: ABC
/a{1,}b{1,}c/i
AABBABC
0: ABC
/a.+?c/i
ABCABC
0: ABC
/a.*?c/i
ABCABC
0: ABC
/a.{0,5}?c/i
ABCABC
0: ABC
/(a+|b)*/i
AB
0: AB
1: B
/(a+|b){0,}/i
AB
0: AB
1: B
/(a+|b)+/i
AB
0: AB
1: B
/(a+|b){1,}/i
AB
0: AB
1: B
/(a+|b)?/i
AB
0: A
1: A
/(a+|b){0,1}/i
AB
0: A
1: A
/(a+|b){0,1}?/i
AB
0:
/[^ab]*/i
CDE
0: CDE
/abc/i
/a*/i
/([abc])*d/i
ABBBCD
0: ABBBCD
1: C
/([abc])*bcd/i
ABCD
0: ABCD
1: A
/a|b|c|d|e/i
E
0: E
/(a|b|c|d|e)f/i
EF
0: EF
1: E
/abcd*efg/i
ABCDEFG
0: ABCDEFG
/ab*/i
XABYABBBZ
0: AB
XAYABBBZ
0: A
/(ab|cd)e/i
ABCDE
0: CDE
1: CD
/[abhgefdc]ij/i
HIJ
0: HIJ
/^(ab|cd)e/i
ABCDE
No match
/(abc|)ef/i
ABCDEF
0: EF
1:
/(a|b)c*d/i
ABCD
0: BCD
1: B
/(ab|ab*)bc/i
ABC
0: ABC
1: A
/a([bc]*)c*/i
ABC
0: ABC
1: BC
/a([bc]*)(c*d)/i
ABCD
0: ABCD
1: BC
2: D
/a([bc]+)(c*d)/i
ABCD
0: ABCD
1: BC
2: D
/a([bc]*)(c+d)/i
ABCD
0: ABCD
1: B
2: CD
/a[bcd]*dcdcde/i
ADCDCDE
0: ADCDCDE
/a[bcd]+dcdcde/i
/(ab|a)b*c/i
ABC
0: ABC
1: AB
/((a)(b)c)(d)/i
ABCD
0: ABCD
1: ABC
2: A
3: B
4: D
/[a-zA-Z_][a-zA-Z0-9_]*/i
ALPHA
0: ALPHA
/^a(bc+|b[eh])g|.h$/i
ABH
0: BH
/(bc+d$|ef*g.|h?i(j|k))/i
EFFGZ
0: EFFGZ
1: EFFGZ
IJ
0: IJ
1: IJ
2: J
REFFGZ
0: EFFGZ
1: EFFGZ
*** Failers
No match
ADCDCDE
No match
EFFG
No match
BCDD
No match
/((((((((((a))))))))))/i
A
0: A
1: A
2: A
3: A
4: A
5: A
6: A
7: A
8: A
9: A
10: A
/((((((((((a))))))))))\10/i
AA
0: AA
1: A
2: A
3: A
4: A
5: A
6: A
7: A
8: A
9: A
10: A
/(((((((((a)))))))))/i
A
0: A
1: A
2: A
3: A
4: A
5: A
6: A
7: A
8: A
9: A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
A
0: A
1: A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
C
0: C
1: C
/multiple words of text/i
*** Failers
No match
AA
No match
UH-UH
No match
/multiple words/i
MULTIPLE WORDS, YEAH
0: MULTIPLE WORDS
/(.*)c(.*)/i
ABCDE
0: ABCDE
1: AB
2: DE
/\((.*), (.*)\)/i
(A, B)
0: (A, B)
1: A
2: B
/[k]/i
/abcd/i
ABCD
0: ABCD
/a(bc)d/i
ABCD
0: ABCD
1: BC
/a[-]?c/i
AC
0: AC
/(abc)\1/i
ABCABC
0: ABCABC
1: ABC
/([a-c]*)\1/i
ABCABC
0: ABCABC
1: ABC
/a(?!b)./
abad
0: ad
/a(?=d)./
abad
0: ad
/a(?=c|d)./
abad
0: ad
/a(?:b|c|d)(.)/
ace
0: ace
1: e
/a(?:b|c|d)*(.)/
ace
0: ace
1: e
/a(?:b|c|d)+?(.)/
ace
0: ace
1: e
acdbcdbe
0: acd
1: d
/a(?:b|c|d)+(.)/
acdbcdbe
0: acdbcdbe
1: e
/a(?:b|c|d){2}(.)/
acdbcdbe
0: acdb
1: b
/a(?:b|c|d){4,5}(.)/
acdbcdbe
0: acdbcdb
1: b
/a(?:b|c|d){4,5}?(.)/
acdbcdbe
0: acdbcd
1: d
/((foo)|(bar))*/
foobar
0: foobar
1: bar
2: foo
3: bar
/a(?:b|c|d){6,7}(.)/
acdbcdbe
0: acdbcdbe
1: e
/a(?:b|c|d){6,7}?(.)/
acdbcdbe
0: acdbcdbe
1: e
/a(?:b|c|d){5,6}(.)/
acdbcdbe
0: acdbcdbe
1: e
/a(?:b|c|d){5,6}?(.)/
acdbcdbe
0: acdbcdb
1: b
/a(?:b|c|d){5,7}(.)/
acdbcdbe
0: acdbcdbe
1: e
/a(?:b|c|d){5,7}?(.)/
acdbcdbe
0: acdbcdb
1: b
/a(?:b|(c|e){1,2}?|d)+?(.)/
ace
0: ace
1: c
2: e
/^(.+)?B/
AB
0: AB
1: A
/^([^a-z])|(\^)$/
.
0: .
1: .
/^[<>]&/
<&OUT
0: <&
/^(a\1?){4}$/
aaaaaaaaaa
0: aaaaaaaaaa
1: aaaa
*** Failers
No match
AB
No match
aaaaaaaaa
No match
aaaaaaaaaaa
No match
/^(a(?(1)\1)){4}$/
aaaaaaaaaa
0: aaaaaaaaaa
1: aaaa
*** Failers
No match
aaaaaaaaa
No match
aaaaaaaaaaa
No match
/(?:(f)(o)(o)|(b)(a)(r))*/
foobar
0: foobar
1: f
2: o
3: o
4: b
5: a
6: r
/(?<=a)b/
ab
0: b
*** Failers
No match
cb
No match
b
No match
/(?<!c)b/
ab
0: b
b
0: b
b
0: b
/(?:..)*a/
aba
0: aba
/(?:..)*?a/
aba
0: a
/^(?:b|a(?=(.)))*\1/
abc
0: ab
1: b
/^(){3,5}/
abc
0:
1:
/^(a+)*ax/
aax
0: aax
1: a
/^((a|b)+)*ax/
aax
0: aax
1: a
2: a
/^((a|bc)+)*ax/
aax
0: aax
1: a
2: a
/(a|x)*ab/
cab
0: ab
/(a)*ab/
cab
0: ab
/(?:(?i)a)b/
ab
0: ab
/((?i)a)b/
ab
0: ab
1: a
/(?:(?i)a)b/
Ab
0: Ab
/((?i)a)b/
Ab
0: Ab
1: A
/(?:(?i)a)b/
*** Failers
No match
cb
No match
aB
No match
/((?i)a)b/
/(?i:a)b/
ab
0: ab
/((?i:a))b/
ab
0: ab
1: a
/(?i:a)b/
Ab
0: Ab
/((?i:a))b/
Ab
0: Ab
1: A
/(?i:a)b/
*** Failers
No match
aB
No match
aB
No match
/((?i:a))b/
/(?:(?-i)a)b/i
ab
0: ab
/((?-i)a)b/i
ab
0: ab
1: a
/(?:(?-i)a)b/i
aB
0: aB
/((?-i)a)b/i
aB
0: aB
1: a
/(?:(?-i)a)b/i
*** Failers
No match
aB
0: aB
Ab
No match
/((?-i)a)b/i
/(?:(?-i)a)b/i
aB
0: aB
/((?-i)a)b/i
aB
0: aB
1: a
/(?:(?-i)a)b/i
*** Failers
No match
Ab
No match
AB
No match
/((?-i)a)b/i
/(?-i:a)b/i
ab
0: ab
/((?-i:a))b/i
ab
0: ab
1: a
/(?-i:a)b/i
aB
0: aB
/((?-i:a))b/i
aB
0: aB
1: a
/(?-i:a)b/i
*** Failers
No match
AB
No match
Ab
No match
/((?-i:a))b/i
/(?-i:a)b/i
aB
0: aB
/((?-i:a))b/i
aB
0: aB
1: a
/(?-i:a)b/i
*** Failers
No match
Ab
No match
AB
No match
/((?-i:a))b/i
/((?-i:a.))b/i
*** Failers
No match
AB
No match
a\nB
No match
/((?s-i:a.))b/i
a\nB
0: a\x0aB
1: a\x0a
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
cabbbb
0: cabbbb
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
/(ab)\d\1/i
Ab4ab
0: Ab4ab
1: Ab
ab4Ab
0: ab4Ab
1: ab
/foo\w*\d{4}baz/
foobar1234baz
0: foobar1234baz
/x(~~)*(?:(?:F)?)?/
x~~
0: x~~
1: ~~
/^a(?#xxx){3}c/
aaac
0: aaac
/^a (?#xxx) (?#yyy) {3}c/x
aaac
0: aaac
/(?<![cd])b/
*** Failers
No match
B\nB
No match
dbcb
No match
/(?<![cd])[ab]/
dbaacb
0: a
/(?<!(c|d))b/
/(?<!(c|d))[ab]/
dbaacb
0: a
/(?<!cd)[ab]/
cdaccb
0: b
/^(?:a?b?)*$/
\
0:
a
0: a
ab
0: ab
aaa
0: aaa
*** Failers
No match
dbcb
No match
a--
No match
aa--
No match
/((?s)^a(.))((?m)^b$)/
a\nb\nc\n
0: a\x0ab
1: a\x0a
2: \x0a
3: b
/((?m)^b$)/
a\nb\nc\n
0: b
1: b
/(?m)^b/
a\nb\n
0: b
/(?m)^(b)/
a\nb\n
0: b
1: b
/((?m)^b)/
a\nb\n
0: b
1: b
/\n((?m)^b)/
a\nb\n
0: \x0ab
1: b
/((?s).)c(?!.)/
a\nb\nc\n
0: \x0ac
1: \x0a
a\nb\nc\n
0: \x0ac
1: \x0a
/((?s)b.)c(?!.)/
a\nb\nc\n
0: b\x0ac
1: b\x0a
a\nb\nc\n
0: b\x0ac
1: b\x0a
/^b/
/()^b/
*** Failers
No match
a\nb\nc\n
No match
a\nb\nc\n
No match
/((?m)^b)/
a\nb\nc\n
0: b
1: b
/(x)?(?(1)a|b)/
*** Failers
No match
a
No match
a
No match
/(x)?(?(1)b|a)/
a
0: a
/()?(?(1)b|a)/
a
0: a
/()(?(1)b|a)/
/()?(?(1)a|b)/
a
0: a
1:
/^(\()?blah(?(1)(\)))$/
(blah)
0: (blah)
1: (
2: )
blah
0: blah
*** Failers
No match
a
No match
blah)
No match
(blah
No match
/^(\(+)?blah(?(1)(\)))$/
(blah)
0: (blah)
1: (
2: )
blah
0: blah
*** Failers
No match
blah)
No match
(blah
No match
/(?(?!a)a|b)/
/(?(?!a)b|a)/
a
0: a
/(?(?=a)b|a)/
*** Failers
No match
a
No match
a
No match
/(?(?=a)a|b)/
a
0: a
/(?=(a+?))(\1ab)/
aaab
0: aab
1: a
2: aab
/^(?=(a+?))\1ab/
/(\w+:)+/
one:
0: one:
1: one:
/$(?<=^(a))/
a
0:
1: a
/(?=(a+?))(\1ab)/
aaab
0: aab
1: a
2: aab
/^(?=(a+?))\1ab/
*** Failers
No match
aaab
No match
aaab
No match
/([\w:]+::)?(\w+)$/
abcd
0: abcd
1: <unset>
2: abcd
xy:z:::abcd
0: xy:z:::abcd
1: xy:z:::
2: abcd
/^[^bcd]*(c+)/
aexycd
0: aexyc
1: c
/(a*)b+/
caab
0: aab
1: aa
/([\w:]+::)?(\w+)$/
abcd
0: abcd
1: <unset>
2: abcd
xy:z:::abcd
0: xy:z:::abcd
1: xy:z:::
2: abcd
*** Failers
0: Failers
1: <unset>
2: Failers
abcd:
No match
abcd:
No match
/^[^bcd]*(c+)/
aexycd
0: aexyc
1: c
/(>a+)ab/
/(?>a+)b/
aaab
0: aaab
/([[:]+)/
a:[b]:
0: :[
1: :[
/([[=]+)/
a=[b]=
0: =[
1: =[
/([[.]+)/
a.[b].
0: .[
1: .[
/((?>a+)b)/
aaab
0: aaab
1: aaab
/(?>(a+))b/
aaab
0: aaab
1: aaa
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
0: abc(ade)ufh()()x
1: x
/a\Z/
*** Failers
No match
aaab
No match
a\nb\n
No match
/b\Z/
a\nb\n
0: b
/b\z/
/b\Z/
a\nb
0: b
/b\z/
a\nb
0: b
*** Failers
No match
/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
a
0: a
1:
abc
0: abc
1:
a-b
0: a-b
1:
0-9
0: 0-9
1:
a.b
0: a.b
1:
5.6.7
0: 5.6.7
1:
the.quick.brown.fox
0: the.quick.brown.fox
1:
a100.b200.300c
0: a100.b200.300c
1:
12-ab.1245
0: 12-ab.1245
1:
*** Failers
No match
\
No match
.a
No match
-a
No match
a-
No match
a.
No match
a_b
No match
a.-
No match
a..
No match
ab..bc
No match
the.quick.brown.fox-
No match
the.quick.brown.fox.
No match
the.quick.brown.fox_
No match
the.quick.brown.fox+
No match
/(?>.*)(?<=(abcd|wxyz))/
alphabetabcd
0: alphabetabcd
1: abcd
endingwxyz
0: endingwxyz
1: wxyz
*** Failers
No match
a rather long string that doesn't end with one of them
No match
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
No match
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
No match
/(?<=\d{3}(?!999))foo/
999foo
0: foo
123999foo
0: foo
*** Failers
No match
123abcfoo
No match
/(?<=(?!...999)\d{3})foo/
999foo
0: foo
123999foo
0: foo
*** Failers
No match
123abcfoo
No match
/(?<=\d{3}(?!999)...)foo/
123abcfoo
0: foo
123456foo
0: foo
*** Failers
No match
123999foo
No match
/(?<=\d{3}...)(?<!999)foo/
123abcfoo
0: foo
123456foo
0: foo
*** Failers
No match
123999foo
No match
/<a[\s]+href[\s]*=[\s]* # find <a href=
([\"\'])? # find single or double quote
(?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
# quote, otherwise match up to next space
/isx
<a href=abcd xyz
0: <a href=abcd
1: <unset>
2: <unset>
3: abcd
<a href=\"abcd xyz pqr\" cats
0: <a href="abcd xyz pqr"
1: "
2: abcd xyz pqr
<a href=\'abcd xyz pqr\' cats
0: <a href='abcd xyz pqr'
1: '
2: abcd xyz pqr
/<a\s+href\s*=\s* # find <a href=
(["'])? # find single or double quote
(?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space
/isx
<a href=abcd xyz
0: <a href=abcd
1: <unset>
2: <unset>
3: abcd
<a href=\"abcd xyz pqr\" cats
0: <a href="abcd xyz pqr"
1: "
2: abcd xyz pqr
<a href = \'abcd xyz pqr\' cats
0: <a href = 'abcd xyz pqr'
1: '
2: abcd xyz pqr
/<a\s+href(?>\s*)=(?>\s*) # find <a href=
(["'])? # find single or double quote
(?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
# quote, otherwise match up to next space
/isx
<a href=abcd xyz
0: <a href=abcd
1: <unset>
2: <unset>
3: abcd
<a href=\"abcd xyz pqr\" cats
0: <a href="abcd xyz pqr"
1: "
2: abcd xyz pqr
<a href = \'abcd xyz pqr\' cats
0: <a href = 'abcd xyz pqr'
1: '
2: abcd xyz pqr
/((Z)+|A)*/
ZABCDEFG
0: ZA
1: A
2: Z
/(Z()|A)*/
ZABCDEFG
0: ZA
1: A
2:
/(Z(())|A)*/
ZABCDEFG
0: ZA
1: A
2:
3:
/((?>Z)+|A)*/
ZABCDEFG
0: ZA
1: A
/((?>)+|A)*/
ZABCDEFG
0:
1:
/a*/g
abbab
0: a
0:
0:
0: a
0:
0:
/^[\d-a]/
abcde
0: a
-things
0: -
0digit
0: 0
*** Failers
No match
bcdef
No match
/[[:space:]]+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09\x0a\x0c\x0d\x0b
/[[:blank:]]+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09
/[\s]+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09\x0a\x0c\x0d\x0b
/\s+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09\x0a\x0c\x0d\x0b
/a b/x
ab
0: ab
/(?!\A)x/m
a\nxb\n
0: x
/(?!^)x/m
a\nxb\n
No match
/abc\Qabc\Eabc/
abcabcabc
0: abcabcabc
/abc\Q(*+|\Eabc/
abc(*+|abc
0: abc(*+|abc
/ abc\Q abc\Eabc/x
abc abcabc
0: abc abcabc
*** Failers
No match
abcabcabc
No match
/abc#comment
\Q#not comment
literal\E/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/abc#comment
\Q#not comment
literal/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/abc#comment
\Q#not comment
literal\E #more comment
/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/abc#comment
\Q#not comment
literal\E #more comment/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/\Qabc\$xyz\E/
abc\\\$xyz
0: abc\$xyz
/\Qabc\E\$\Qxyz\E/
abc\$xyz
0: abc$xyz
/\Gabc/
abc
0: abc
*** Failers
No match
xyzabc
No match
/\Gabc./g
abc1abc2xyzabc3
0: abc1
0: abc2
/abc./g
abc1abc2xyzabc3
0: abc1
0: abc2
0: abc3
/a(?x: b c )d/
XabcdY
0: abcd
*** Failers
No match
Xa b c d Y
No match
/((?x)x y z | a b c)/
XabcY
0: abc
1: abc
AxyzB
0: xyz
1: xyz
/(?i)AB(?-i)C/
XabCY
0: abC
*** Failers
No match
XabcY
No match
/((?i)AB(?-i)C|D)E/
abCE
0: abCE
1: abC
DE
0: DE
1: D
*** Failers
No match
abcE
No match
abCe
No match
dE
No match
De
No match
/(.*)\d+\1/
abc123abc
0: abc123abc
1: abc
abc123bc
0: bc123bc
1: bc
/(.*)\d+\1/s
abc123abc
0: abc123abc
1: abc
abc123bc
0: bc123bc
1: bc
/((.*))\d+\1/
abc123abc
0: abc123abc
1: abc
2: abc
abc123bc
0: bc123bc
1: bc
2: bc
/-- This tests for an IPv6 address in the form where it can have up to
eight components, one and only one of which is empty. This must be
an internal component. --/
/^(?!:) # colon disallowed at start
(?: # start of item
(?: [0-9a-f]{1,4} | # 1-4 hex digits or
(?(1)0 | () ) ) # if null previously matched, fail; else null
: # followed by colon
){1,7} # end item; 1-7 of them required
[0-9a-f]{1,4} $ # final hex number at end of string
(?(1)|.) # check that there was an empty component
/xi
a123::a123
0: a123::a123
1:
a123:b342::abcd
0: a123:b342::abcd
1:
a123:b342::324e:abcd
0: a123:b342::324e:abcd
1:
a123:ddde:b342::324e:abcd
0: a123:ddde:b342::324e:abcd
1:
a123:ddde:b342::324e:dcba:abcd
0: a123:ddde:b342::324e:dcba:abcd
1:
a123:ddde:9999:b342::324e:dcba:abcd
0: a123:ddde:9999:b342::324e:dcba:abcd
1:
*** Failers
No match
1:2:3:4:5:6:7:8
No match
a123:bce:ddde:9999:b342::324e:dcba:abcd
No match
a123::9999:b342::324e:dcba:abcd
No match
abcde:2:3:4:5:6:7:8
No match
::1
No match
abcd:fee0:123::
No match
:1
No match
1:
No match
/[z\Qa-d]\E]/
z
0: z
a
0: a
-
0: -
d
0: d
]
0: ]
*** Failers
0: a
b
No match
/[\z\C]/
z
0: z
C
0: C
/\M/
M
0: M
/(a+)*b/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
REGular
0: REGular
regulaer
0: regulaer
Regex
0: Regex
regulär
0: regul\xe4r
/Åæåä[à-ÿÀ-ß]+/
Åæåäà
0: \xc5\xe6\xe5\xe4\xe0
Åæåäÿ
0: \xc5\xe6\xe5\xe4\xff
ÅæåäÀ
0: \xc5\xe6\xe5\xe4\xc0
Åæåäß
0: \xc5\xe6\xe5\xe4\xdf
/(?<=Z)X./
\x84XAZXB
0: XB
/ab cd (?x) de fg/
ab cd defg
0: ab cd defg
/ab cd(?x) de fg/
ab cddefg
0: ab cddefg
** Failers
No match
abcddefg
No match
/(?<![^f]oo)(bar)/
foobarX
0: bar
1: bar
** Failers
No match
boobarX
No match
/(?<![^f])X/
offX
0: X
** Failers
No match
onyX
No match
/(?<=[^f])X/
onyX
0: X
** Failers
No match
offX
No match
/^/mg
a\nb\nc\n
0:
0:
0:
\
0:
/(?<=C\n)^/mg
A\nC\nC\n
0:
/(?:(?(1)a|b)(X))+/
bXaX
0: bXaX
1: X
/(?:(?(1)\1a|b)(X|Y))+/
bXXaYYaY
0: bXXaYYaY
1: Y
bXYaXXaX
0: bX
1: X
/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
bXXaYYaY
0: bX
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: X
/[[,abc,]+]/
abc]
0: abc]
a,b]
0: a,b]
[a,b,c]
0: [a,b,c]
/(?-x: )/x
A\x20B
0:
"(?x)(?-x: \s*#\s*)"
A # B
0: #
** Failers
No match
#
No match
"(?x-is)(?:(?-ixs) \s*#\s*) include"
A #include
0: #include
** Failers
No match
A#include
No match
A #Include
No match
/a*b*\w/
aaabbbb
0: aaabbbb
aaaa
0: aaaa
a
0: a
/a*b?\w/
aaabbbb
0: aaabb
aaaa
0: aaaa
a
0: a
/a*b{0,4}\w/
aaabbbb
0: aaabbbb
aaaa
0: aaaa
a
0: a
/a*b{0,}\w/
aaabbbb
0: aaabbbb
aaaa
0: aaaa
a
0: a
/a*\d*\w/
0a
0: 0a
a
0: a
/a*b *\w/x
a
0: a
/a*b#comment
*\w/x
a
0: a
/a* b *\w/x
a
0: a
/^\w+=.*(\\\n.*)*/
abc=xyz\\\npqr
0: abc=xyz\
/(?=(\w+))\1:/
abcd:
0: abcd:
1: abcd
/^(?=(\w+))\1:/
abcd:
0: abcd:
1: abcd
/^\Eabc/
abc
0: abc
/^[\Eabc]/
a
0: a
** Failers
No match
E
No match
/^[a-\Ec]/
b
0: b
** Failers
No match
-
No match
E
No match
/^[a\E\E-\Ec]/
b
0: b
** Failers
No match
-
No match
E
No match
/^[\E\Qa\E-\Qz\E]+/
b
0: b
** Failers
No match
-
No match
/^[a\Q]bc\E]/
a
0: a
]
0: ]
c
0: c
/^[a-\Q\E]/
a
0: a
-
0: -
/^(a()*)*/
aaaa
0: aaaa
1: a
2:
/^(?:a(?:(?:))*)*/
aaaa
0: aaaa
/^(a()+)+/
aaaa
0: aaaa
1: a
2:
/^(?:a(?:(?:))+)+/
aaaa
0: aaaa
/(a){0,3}(?(1)b|(c|))*D/
abbD
0: abbD
1: a
ccccD
0: ccccD
1: <unset>
2:
D
0: D
1: <unset>
2:
/(a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
1:
/(?>a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?:a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/\Z/g
abc\n
0:
0:
/^(?s)(?>.*)(?<!\n)/
abc
0: abc
abc\n
No match
/^(?![^\n]*\n\z)/
abc
0:
abc\n
No match
/\z(?<!\n)/
abc
0:
abc\n
No match
/(.*(.)?)*/
abcd
0: abcd
1:
/( (A | (?(1)0|) )* )/x
abcd
0:
1:
2:
/( ( (?(1)0|) )* )/x
abcd
0:
1:
2:
/( (?(1)0|)* )/x
abcd
0:
1:
/[[:abcd:xyz]]/
a]
0: a]
:]
0: :]
/[abc[:x\]pqr]/
a
0: a
[
0: [
:
0: :
]
0: ]
p
0: p
/.*[op][xyz]/
fooabcfoo
No match
/(?(?=.*b)b|^)/
adc
0:
abc
0: b
/(?(?=^.*b)b|^)/
adc
0:
abc
No match
/(?(?=.*b)b|^)*/
adc
0:
abc
0:
/(?(?=.*b)b|^)+/
adc
0:
abc
0: b
/(?(?=b).*b|^d)/
abc
0: b
/(?(?=.*b).*b|^d)/
abc
0: ab
/^%((?(?=[a])[^%])|b)*%$/
%ab%
0: %ab%
1:
/(?i)a(?-i)b|c/
XabX
0: ab
XAbX
0: Ab
CcC
0: c
** Failers
No match
XABX
No match
/[\x00-\xff\s]+/
\x0a\x0b\x0c\x0d
0: \x0a\x0b\x0c\x0d
/^\c/
?
0: ?
/(abc)\1/i
abc
No match
/(abc)\1/
abc
No match
/[^a]*/i
12abc
0: 12
12ABC
0: 12
/[^a]*+/i
12abc
0: 12
12ABC
0: 12
/[^a]*?X/i
** Failers
No match
12abc
No match
12ABC
No match
/[^a]+?X/i
** Failers
No match
12abc
No match
12ABC
No match
/[^a]?X/i
12aXbcX
0: X
12AXBCX
0: X
BCX
0: CX
/[^a]??X/i
12aXbcX
0: X
12AXBCX
0: X
BCX
0: CX
/[^a]?+X/i
12aXbcX
0: cX
12AXBCX
0: CX
BCX
0: CX
/[^a]{2,3}/i
abcdef
0: bcd
ABCDEF
0: BCD
/[^a]{2,3}?/i
abcdef
0: bc
ABCDEF
0: BC
/[^a]{2,3}+/i
abcdef
0: bcd
ABCDEF
0: BCD
/((a|)+)+Z/
Z
0: Z
1:
2:
/(a)b|(a)c/
ac
0: ac
1: <unset>
2: a
/(?>(a))b|(a)c/
ac
0: ac
1: <unset>
2: a
/(?=(a))ab|(a)c/
ac
0: ac
1: <unset>
2: a
/((?>(a))b|(a)c)/
ac
0: ac
1: ac
2: <unset>
3: a
/((?>(a))b|(a)c)++/
ac
0: ac
1: ac
2: <unset>
3: a
/(?:(?>(a))b|(a)c)++/
ac
0: ac
1: <unset>
2: a
/(?=(?>(a))b|(a)c)(..)/
ac
0: ac
1: <unset>
2: a
3: ac
/(?>(?>(a))b|(a)c)/
ac
0: ac
1: <unset>
2: a
/(?:(?>([ab])))+a=/+
=ba=
0: ba=
0+
1: b
/(?>([ab]))+a=/+
=ba=
0: ba=
0+
1: b
/((?>(a+)b)+(aabab))/
aaaabaaabaabab
0: aaaabaaabaabab
1: aaaabaaabaabab
2: aaa
3: aabab
/(?>a+|ab)+?c/
aabc
No match
/(?>a+|ab)+c/
aabc
No match
/(?:a+|ab)+c/
aabc
0: aabc
/(?(?=(a))a)/
a
0: a
1: a
/(?(?=(a))a)(b)/
ab
0: ab
1: a
2: b
/^(?:a|ab)++c/
aaaabc
No match
/^(?>a|ab)++c/
aaaabc
No match
/^(?:a|ab)+c/
aaaabc
0: aaaabc
/(?=abc){3}abc/+
abcabcabc
0: abc
0+ abcabc
** Failers
No match
xyz
No match
/(?=abc)+abc/+
abcabcabc
0: abc
0+ abcabc
** Failers
No match
xyz
No match
/(?=abc)++abc/+
abcabcabc
0: abc
0+ abcabc
** Failers
No match
xyz
No match
/(?=abc){0}xyz/
xyz
0: xyz
/(?=abc){1}xyz/
** Failers
No match
xyz
No match
/(?=(a))?./
ab
0: a
1: a
bc
0: b
/(?=(a))??./
ab
0: a
bc
0: b
/^(?=(?1))?[az]([abc])d/
abd
0: abd
1: b
zcdxx
0: zcd
1: c
/^(?!a){0}\w+/
aaaaa
0: aaaaa
/(?<=(abc))?xyz/
abcxyz
0: xyz
1: abc
pqrxyz
0: xyz
/^[\g<a>]+/
ggg<<<aaa>>>
0: ggg<<<aaa>>>
** Failers
No match
\\ga
No match
/^[\ga]+/
gggagagaxyz
0: gggagaga
/^[:a[:digit:]]+/
aaaa444:::Z
0: aaaa444:::
/^[:a[:digit:]:b]+/
aaaa444:::bbbZ
0: aaaa444:::bbb
/[:a]xxx[b:]/
:xxx:
0: :xxx:
/(?<=a{2})b/i
xaabc
0: b
** Failers
No match
xabc
No match
/(?<!a{2})b/i
xabc
0: b
** Failers
No match
xaabc
No match
/(?<=a\h)c/
xa c
0: c
/(?<=[^a]{2})b/
axxbc
0: b
aAAbc
0: b
** Failers
No match
xaabc
No match
/(?<=[^a]{2})b/i
axxbc
0: b
** Failers
No match
aAAbc
No match
xaabc
No match
/(?<=a\H)c/
abc
0: c
/(?<=a\V)c/
abc
0: c
/(?<=a\v)c/
a\nc
0: c
/(?(?=c)c|d)++Y/
XcccddYX
0: cccddY
/(?(?=c)c|d)*+Y/
XcccddYX
0: cccddY
/^(a{2,3}){2,}+a/
aaaaaaa
0: aaaaaaa
1: aaa
** Failers
No match
aaaaaa
No match
aaaaaaaaa
No match
/^(a{2,3})++a/
** Failers
No match
aaaaaa
No match
/^(a{2,3})*+a/
** Failers
No match
aaaaaa
No match
/ab\Cde/
abXde
0: abXde
/(?<=ab\Cde)X/
abZdeX
0: X
/a[\CD]b/
aCb
0: aCb
aDb
0: aDb
/a[\C-X]b/
aJb
0: aJb
/\H\h\V\v/
X X\x0a
0: X X\x0a
X\x09X\x0b
0: X\x09X\x0b
** Failers
No match
\xa0 X\x0a
No match
/\H*\h+\V?\v{3,4}/
\x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
0: \x09 \xa0X\x0a\x0b\x0c\x0d
\x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
0: \x09 \xa0\x0a\x0b\x0c\x0d
\x09\x20\xa0\x0a\x0b\x0c
0: \x09 \xa0\x0a\x0b\x0c
** Failers
No match
\x09\x20\xa0\x0a\x0b
No match
/\H{3,4}/
XY ABCDE
0: ABCD
XY PQR ST
0: PQR
/.\h{3,4}./
XY AB PQRS
0: B P
/\h*X\h?\H+Y\H?Z/
>XNNNYZ
0: XNNNYZ
> X NYQZ
0: X NYQZ
** Failers
No match
>XYZ
No match
> X NY Z
No match
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
>XY\x0aZ\x0aA\x0bNN\x0c
0: XY\x0aZ\x0aA\x0bNN\x0c
>\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
/(foo)\Kbar/
foobar
0: bar
1: foo
/(foo)(\Kbar|baz)/
foobar
0: bar
1: foo
2: bar
foobaz
0: foobaz
1: foo
2: baz
/(foo\Kbar)baz/
foobarbaz
0: barbaz
1: foobar
/abc\K|def\K/g+
Xabcdefghi
0:
0+ defghi
0:
0+ ghi
/ab\Kc|de\Kf/g+
Xabcdefghi
0: c
0+ defghi
0: f
0+ ghi
/(?=C)/g+
ABCDECBA
0:
0+ CDECBA
0:
0+ CBA
/^abc\K/+
abcdef
0:
0+ def
** Failers
No match
defabcxyz
No match
/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
ababababbbabZXXXX
0: ababababbbabZ
1: ab
2: b
/(?<A>tom|bon)-\g{A}/
tom-tom
0: tom-tom
1: tom
bon-bon
0: bon-bon
1: bon
/(^(a|b\g{-1}))/
bacxxx
No match
/(?|(abc)|(xyz))\1/
abcabc
0: abcabc
1: abc
xyzxyz
0: xyzxyz
1: xyz
** Failers
No match
abcxyz
No match
xyzabc
No match
/(?|(abc)|(xyz))(?1)/
abcabc
0: abcabc
1: abc
xyzabc
0: xyzabc
1: xyz
** Failers
No match
xyzxyz
No match
/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
XYabcdY
0: XYabcdY
1: a
2: b
3: c
4: d
5: Y
/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
XYabcdY
0: XYabcdY
1: a
2: b
3: <unset>
4: <unset>
5: c
6: d
7: Y
/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
XYabcdY
0: XYabcdY
1: a
2: b
3: <unset>
4: <unset>
5: c
6: d
7: Y
/(?'abc'\w+):\k<abc>{2}/
a:aaxyz
0: a:aa
1: a
ab:ababxyz
0: ab:abab
1: ab
** Failers
No match
a:axyz
No match
ab:abxyz
No match
/(?'abc'\w+):\g{abc}{2}/
a:aaxyz
0: a:aa
1: a
ab:ababxyz
0: ab:abab
1: ab
** Failers
No match
a:axyz
No match
ab:abxyz
No match
/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
abd
0: abd
1: a
ce
0: ce
/^(a.)\g-1Z/
aXaXZ
0: aXaXZ
1: aX
/^(a.)\g{-1}Z/
aXaXZ
0: aXaXZ
1: aX
/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
abcd
0: ab
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
(?(DEFINE)
(?<NAME_PAT>[a-z]+)
(?<ADDRESS_PAT>\d+)
)/x
metcalfe 33
0: metcalfe 33
1: metcalfe
2: 33
/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
1.2.3.4
0: 1.2.3.4
1: <unset>
2: .4
131.111.10.206
0: 131.111.10.206
1: <unset>
2: .206
10.0.0.0
0: 10.0.0.0
1: <unset>
2: .0
** Failers
No match
10.6
No match
455.3.4.5
No match
/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
1.2.3.4
0: 1.2.3.4
1: .4
131.111.10.206
0: 131.111.10.206
1: .206
10.0.0.0
0: 10.0.0.0
1: .0
** Failers
No match
10.6
No match
455.3.4.5
No match
/^(\w++|\s++)*$/
now is the time for all good men to come to the aid of the party
0: now is the time for all good men to come to the aid of the party
1: party
*** Failers
No match
this is not a line with only words and spaces!
No match
/(\d++)(\w)/
12345a
0: 12345a
1: 12345
2: a
*** Failers
No match
12345+
No match
/a++b/
aaab
0: aaab
/(a++b)/
aaab
0: aaab
1: aaab
/(a++)b/
aaab
0: aaab
1: aaa
/([^()]++|\([^()]*\))+/
((abc(ade)ufh()()x
0: abc(ade)ufh()()x
1: x
/\(([^()]++|\([^()]+\))+\)/
(abc)
0: (abc)
1: abc
(abc(def)xyz)
0: (abc(def)xyz)
1: xyz
*** Failers
No match
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
/^([^()]|\((?1)*\))*$/
abc
0: abc
1: c
a(b)c
0: a(b)c
1: c
a(b(c))d
0: a(b(c))d
1: d
*** Failers)
No match
a(b(c)d
No match
/^>abc>([^()]|\((?1)*\))*<xyz<$/
>abc>123<xyz<
0: >abc>123<xyz<
1: 3
>abc>1(2)3<xyz<
0: >abc>1(2)3<xyz<
1: 3
>abc>(1(2)3)<xyz<
0: >abc>(1(2)3)<xyz<
1: (1(2)3)
/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
1221
0: 1221
1: 1221
2: 1
Satanoscillatemymetallicsonatas
0: Satanoscillatemymetallicsonatas
1: <unset>
2: <unset>
3: Satanoscillatemymetallicsonatas
4: S
AmanaplanacanalPanama
0: AmanaplanacanalPanama
1: <unset>
2: <unset>
3: AmanaplanacanalPanama
4: A
AblewasIereIsawElba
0: AblewasIereIsawElba
1: <unset>
2: <unset>
3: AblewasIereIsawElba
4: A
*** Failers
No match
Thequickbrownfox
No match
/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
12
0: 12
1: 12
(((2+2)*-3)-7)
0: (((2+2)*-3)-7)
1: (((2+2)*-3)-7)
2: -
-12
0: -12
1: -12
*** Failers
No match
((2+2)*-3)-7)
No match
/^(x(y|(?1){2})z)/
xyz
0: xyz
1: xyz
2: y
xxyzxyzz
0: xxyzxyzz
1: xxyzxyzz
2: xyzxyz
*** Failers
No match
xxyzz
No match
xxyzxyzxyzz
No match
/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x
<>
0: <>
1: <>
2: <>
<abcd>
0: <abcd>
1: <abcd>
2: <abcd>
<abc <123> hij>
0: <abc <123> hij>
1: <abc <123> hij>
2: <abc <123> hij>
<abc <def> hij>
0: <def>
1: <def>
2: <def>
<abc<>def>
0: <abc<>def>
1: <abc<>def>
2: <abc<>def>
<abc<>
0: <>
1: <>
2: <>
*** Failers
No match
<abc
No match
/^a+(*FAIL)/
aaaaaa
No match
/a+b?c+(*FAIL)/
aaabccc
No match
/a+b?(*PRUNE)c+(*FAIL)/
aaabccc
No match
/a+b?(*COMMIT)c+(*FAIL)/
aaabccc
No match
/a+b?(*SKIP)c+(*FAIL)/
aaabcccaaabccc
No match
/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
aaaxxxxxx
0: aaaxxxxxx
aaa++++++
0: aaa
bbbxxxxx
0: bbbxxxxx
bbb+++++
0: bbb
cccxxxx
0: cccxxxx
ccc++++
0: ccc
dddddddd
0: ddd
/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
aaaxxxxxx
0: aaaxxxxxx
1: aaaxxxxxx
aaa++++++
0: aaa
1: aaa
bbbxxxxx
0: bbbxxxxx
1: bbbxxxxx
bbb+++++
0: bbb
1: bbb
cccxxxx
0: cccxxxx
1: cccxxxx
ccc++++
0: ccc
1: ccc
dddddddd
0: ddd
1: ddd
/a+b?(*THEN)c+(*FAIL)/
aaabccc
No match
/(A (A|B(*ACCEPT)|C) D)(E)/x
AB
0: AB
1: AB
2: B
ABX
0: AB
1: AB
2: B
AADE
0: AADE
1: AAD
2: A
3: E
ACDE
0: ACDE
1: ACD
2: C
3: E
** Failers
No match
AD
No match
/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
1221
0: 1221
1: 1221
2: 1
Satan, oscillate my metallic sonatas!
0: Satan, oscillate my metallic sonatas!
1: <unset>
2: <unset>
3: Satan, oscillate my metallic sonatas
4: S
A man, a plan, a canal: Panama!
0: A man, a plan, a canal: Panama!
1: <unset>
2: <unset>
3: A man, a plan, a canal: Panama
4: A
Able was I ere I saw Elba.
0: Able was I ere I saw Elba.
1: <unset>
2: <unset>
3: Able was I ere I saw Elba
4: A
*** Failers
No match
The quick brown fox
No match
/^((.)(?1)\2|.)$/
a
0: a
1: a
aba
0: aba
1: aba
2: a
aabaa
0: aabaa
1: aabaa
2: a
abcdcba
0: abcdcba
1: abcdcba
2: a
pqaabaaqp
0: pqaabaaqp
1: pqaabaaqp
2: p
ablewasiereisawelba
0: ablewasiereisawelba
1: ablewasiereisawelba
2: a
rhubarb
No match
the quick brown fox
No match
/(a)(?<=b(?1))/
baz
0: a
1: a
** Failers
No match
caz
No match
/(?<=b(?1))(a)/
zbaaz
0: a
1: a
** Failers
No match
aaa
No match
/(?<X>a)(?<=b(?&X))/
baz
0: a
1: a
/^(?|(abc)|(def))\1/
abcabc
0: abcabc
1: abc
defdef
0: defdef
1: def
** Failers
No match
abcdef
No match
defabc
No match
/^(?|(abc)|(def))(?1)/
abcabc
0: abcabc
1: abc
defabc
0: defabc
1: def
** Failers
No match
defdef
No match
abcdef
No match
/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
a\"aaaaa
0: a"aaaaa
1: "
2: <unset>
3: "
b\"aaaaa
0: b"aaaaa
1: <unset>
2: <unset>
3: <unset>
4: "
5: <unset>
6: "
** Failers
No match
b\"11111
No match
/(?:(?1)|B)(A(*F)|C)/
ABCD
0: BC
1: C
CCD
0: CC
1: C
** Failers
No match
CAD
No match
/^(?:(?1)|B)(A(*F)|C)/
CCD
0: CC
1: C
BCD
0: BC
1: C
** Failers
No match
ABCD
No match
CAD
No match
BAD
No match
/(?:(?1)|B)(A(*ACCEPT)XX|C)D/
AAD
0: AA
1: A
ACD
0: ACD
1: C
BAD
0: BA
1: A
BCD
0: BCD
1: C
BAX
0: BA
1: A
** Failers
No match
ACX
No match
ABC
No match
/(?(DEFINE)(A))B(?1)C/
BAC
0: BAC
/(?(DEFINE)((A)\2))B(?1)C/
BAAC
0: BAAC
/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
(ab(cd)ef)
0: (ab(cd)ef)
1: (ab(cd)ef)
2: ef
/^(?=a(*SKIP)b|ac)/
** Failers
No match
ac
No match
/^(?=a(*PRUNE)b)/
ab
0:
** Failers
No match
ac
No match
/^(?=a(*ACCEPT)b)/
ac
0:
/(?>a\Kb)/
ab
0: b
/((?>a\Kb))/
ab
0: b
1: ab
/(a\Kb)/
ab
0: b
1: ab
/^a\Kcz|ac/
ac
0: ac
/(?>a\Kbz|ab)/
ab
0: ab
/^(?&t)(?(DEFINE)(?<t>a\Kb))$/
ab
0: b
/^([^()]|\((?1)*\))*$/
a(b)c
0: a(b)c
1: c
a(b(c)d)e
0: a(b(c)d)e
1: e
/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
0
0: 0
1: 0
00
0: 00
1: 00
2: 0
0000
0: 0000
1: 0000
2: 0
/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
0
0: 0
1: 0
2: 0
00
0: 0
1: 0
2: 0
0000
0: 0
1: 0
2: 0
/--- This one does fail, as expected, in Perl. It needs the complex item at the
end of the pattern. A single letter instead of (B|D) makes it not fail,
which I think is a Perl bug. --- /
/A(*COMMIT)(B|D)/
ACABX
No match
/--- Check the use of names for failure ---/
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
** Failers
No match
AC
No match, mark = A
CB
No match, mark = B
/--- Force no study, otherwise mark is not seen. The studied version is in
test 2 because it isn't Perl-compatible. ---/
/(*MARK:A)(*SKIP:B)(C|X)/KSS
C
0: C
1: C
MK: A
D
No match, mark = A
/^(A(*THEN:A)B|C(*THEN:B)D)/K
** Failers
No match
CB
No match, mark = B
/^(?:A(*THEN:A)B|C(*THEN:B)D)/K
CB
No match, mark = B
/^(?>A(*THEN:A)B|C(*THEN:B)D)/K
CB
No match, mark = B
/--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
that we have to have something complicated such as (B|Z) at the end because,
for Perl, a simple character somehow causes an unwanted optimization to mess
with the handling of backtracking verbs. ---/
/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
AAAC
0: AC
/--- Test skipping over a non-matching mark. ---/
/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
AAAC
0: AC
/--- Check shorthand for MARK ---/
/A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
AAAC
0: AC
/--- Don't loop! Force no study, otherwise mark is not seen. ---/
/(*:A)A+(*SKIP:A)(B|Z)/KSS
AAAC
No match, mark = A
/--- This should succeed, as a non-existent skip name disables the skip ---/
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
AAAC
0: AC
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
AAAC
0: AC
MK: B
/--- COMMIT at the start of a pattern should act like an anchor. Again,
however, we need the complication for Perl. ---/
/(*COMMIT)(A|P)(B|P)(C|P)/
ABCDEFG
0: ABC
1: A
2: B
3: C
** Failers
No match
DEFGABC
No match
/--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
/(\w+)(?>b(*COMMIT))\w{2}/
abbb
0: abbb
1: a
/(\w+)b(*COMMIT)\w{2}/
abbb
No match
/--- Check opening parens in comment when seeking forward reference. ---/
/(?&t)(?#()(?(DEFINE)(?<t>a))/
bac
0: a
/--- COMMIT should override THEN ---/
/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
yes
No match
/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
yes
No match
/b?(*SKIP)c/
bc
0: bc
abc
0: bc
/(*SKIP)bc/
a
No match
/(*SKIP)b/
a
No match
/(?P<abn>(?P=abn)xxx|)+/
xxx
0:
1:
/(?i:([^b]))(?1)/
aa
0: aa
1: a
aA
0: aA
1: a
** Failers
0: **
1: *
ab
No match
aB
No match
Ba
No match
ba
No match
/^(?&t)*+(?(DEFINE)(?<t>a))\w$/
aaaaaaX
0: aaaaaaX
** Failers
No match
aaaaaa
No match
/^(?&t)*(?(DEFINE)(?<t>a))\w$/
aaaaaaX
0: aaaaaaX
aaaaaa
0: aaaaaa
/^(a)*+(\w)/
aaaaX
0: aaaaX
1: a
2: X
YZ
0: Y
1: <unset>
2: Y
** Failers
No match
aaaa
No match
/^(?:a)*+(\w)/
aaaaX
0: aaaaX
1: X
YZ
0: Y
1: Y
** Failers
No match
aaaa
No match
/^(a)++(\w)/
aaaaX
0: aaaaX
1: a
2: X
** Failers
No match
aaaa
No match
YZ
No match
/^(?:a)++(\w)/
aaaaX
0: aaaaX
1: X
** Failers
No match
aaaa
No match
YZ
No match
/^(a)?+(\w)/
aaaaX
0: aa
1: a
2: a
YZ
0: Y
1: <unset>
2: Y
/^(?:a)?+(\w)/
aaaaX
0: aa
1: a
YZ
0: Y
1: Y
/^(a){2,}+(\w)/
aaaaX
0: aaaaX
1: a
2: X
** Failers
No match
aaa
No match
YZ
No match
/^(?:a){2,}+(\w)/
aaaaX
0: aaaaX
1: X
** Failers
No match
aaa
No match
YZ
No match
/(a|)*(?1)b/
b
0: b
1:
ab
0: ab
1:
aab
0: aab
1:
/(a)++(?1)b/
** Failers
No match
ab
No match
aab
No match
/(a)*+(?1)b/
** Failers
No match
ab
No match
aab
No match
/(?1)(?:(b)){0}/
b
0: b
/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
foo(bar(baz)+baz(bop))
0: foo(bar(baz)+baz(bop))
1: foo(bar(baz)+baz(bop))
2: (bar(baz)+baz(bop))
3: bar(baz)+baz(bop)
/(A (A|B(*ACCEPT)|C) D)(E)/x
AB
0: AB
1: AB
2: B
/\A.*?(a|bc)/
ba
0: ba
1: a
/\A.*?(?:a|bc)++/
ba
0: ba
/\A.*?(a|bc)++/
ba
0: ba
1: a
/\A.*?(?:a|bc|d)/
ba
0: ba
/(?:(b))++/
beetle
0: b
1: b
/(?(?=(a(*ACCEPT)z))a)/
a
0: a
1: a
/^(a)(?1)+ab/
aaaab
0: aaaab
1: a
/^(a)(?1)++ab/
aaaab
No match
/^(?=a(*:M))aZ/K
aZbc
0: aZ
MK: M
/^(?!(*:M)b)aZ/K
aZbc
0: aZ
/(?(DEFINE)(a))?b(?1)/
backgammon
0: ba
/^\N+/
abc\ndef
0: abc
/^\N{1,}/
abc\ndef
0: abc
/(?(R)a+|(?R)b)/
aaaabcde
0: aaaab
/(?(R)a+|((?R))b)/
aaaabcde
0: aaaab
1: aaaa
/((?(R)a+|(?1)b))/
aaaabcde
0: aaaab
1: aaaab
/((?(R1)a+|(?1)b))/
aaaabcde
0: aaaab
1: aaaab
/((?(R)a|(?1)))*/
aaa
0: aaa
1: a
/((?(R)a|(?1)))+/
aaa
0: aaa
1: a
/a(*:any
name)/K
abc
0: a
MK: any \x0aname
/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
a
0: a
ba
0: a
bba
0: a
/--- Checking revised (*THEN) handling ---/
/--- Capture ---/
/^.*? (a(*THEN)b) c/x
aabc
No match
/^.*? (a(*THEN)b|(*F)) c/x
aabc
0: aabc
1: ab
/^.*? ( (a(*THEN)b) | (*F) ) c/x
aabc
0: aabc
1: ab
2: ab
/^.*? ( (a(*THEN)b) ) c/x
aabc
No match
/--- Non-capture ---/
/^.*? (?:a(*THEN)b) c/x
aabc
No match
/^.*? (?:a(*THEN)b|(*F)) c/x
aabc
0: aabc
/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
aabc
0: aabc
/^.*? (?: (?:a(*THEN)b) ) c/x
aabc
No match
/--- Atomic ---/
/^.*? (?>a(*THEN)b) c/x
aabc
No match
/^.*? (?>a(*THEN)b|(*F)) c/x
aabc
0: aabc
/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
aabc
0: aabc
/^.*? (?> (?>a(*THEN)b) ) c/x
aabc
No match
/--- Possessive capture ---/
/^.*? (a(*THEN)b)++ c/x
aabc
No match
/^.*? (a(*THEN)b|(*F))++ c/x
aabc
0: aabc
1: ab
/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
aabc
0: aabc
1: ab
2: ab
/^.*? ( (a(*THEN)b)++ )++ c/x
aabc
No match
/--- Possessive non-capture ---/
/^.*? (?:a(*THEN)b)++ c/x
aabc
No match
/^.*? (?:a(*THEN)b|(*F))++ c/x
aabc
0: aabc
/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
aabc
0: aabc
/^.*? (?: (?:a(*THEN)b)++ )++ c/x
aabc
No match
/--- Condition assertion ---/
/^(?(?=a(*THEN)b)ab|ac)/
ac
0: ac
/--- Condition ---/
/^.*?(?(?=a)a|b(*THEN)c)/
ba
No match
/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
ba
0: ba
/^.*?(?(?=a)a(*THEN)b|c)/
ac
No match
/--- Assertion ---/
/^.*(?=a(*THEN)b)/
aabc
0: a
/------------------------------/
/(?>a(*:m))/imsxSK
a
0: a
MK: m
/(?>(a)(*:m))/imsxSK
a
0: a
1: a
MK: m
/(?<=a(*ACCEPT)b)c/
xacd
0: c
/(?<=(a(*ACCEPT)b))c/
xacd
0: c
1: a
/(?<=(a(*COMMIT)b))c/
xabcd
0: c
1: ab
** Failers
No match
xacd
No match
/(?<!a(*FAIL)b)c/
xcd
0: c
acd
0: c
/(?<=a(*:N)b)c/K
xabcd
0: c
MK: N
/(?<=a(*PRUNE)b)c/
xabcd
0: c
/(?<=a(*SKIP)b)c/
xabcd
0: c
/(?<=a(*THEN)b)c/
xabcd
0: c
/(a)(?2){2}(.)/
abcd
0: abcd
1: a
2: d
/(*MARK:A)(*PRUNE:B)(C|X)/KS
C
0: C
1: C
MK: B
D
No match, mark = B
/(*MARK:A)(*PRUNE:B)(C|X)/KSS
C
0: C
1: C
MK: B
D
No match, mark = B
/(*MARK:A)(*THEN:B)(C|X)/KS
C
0: C
1: C
MK: B
D
No match, mark = B
/(*MARK:A)(*THEN:B)(C|X)/KSY
C
0: C
1: C
MK: B
D
No match, mark = B
/(*MARK:A)(*THEN:B)(C|X)/KSS
C
0: C
1: C
MK: B
D
No match, mark = B
/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
AAAC
No match, mark = A
/--- Same --/
/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
AAAC
No match, mark = B
/A(*:A)A+(*SKIP)(B|Z) | AC/xK
AAAC
No match, mark = A
/--- This should fail, as a null name is the same as no name ---/
/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
AAAC
No match, mark = A
/--- A check on what happens after hitting a mark and them bumping along to
something that does not even start. Perl reports tags after the failures here,
though it does not when the individual letters are made into something
more complicated. ---/
/A(*:A)B|XX(*:B)Y/K
AABC
0: AB
MK: A
XXYZ
0: XXY
MK: B
** Failers
No match
XAQQ
No match, mark = A
XAQQXZZ
No match, mark = A
AXQQQ
No match, mark = A
AXXQQQ
No match, mark = B
/^(A(*THEN:A)B|C(*THEN:B)D)/K
AB
0: AB
1: AB
MK: A
CD
0: CD
1: CD
MK: B
** Failers
No match
AC
No match, mark = A
CB
No match, mark = B
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
AB
0: AB
1: AB
MK: A
CD
0: CD
1: CD
MK: B
** Failers
No match
AC
No match, mark = A
CB
No match, mark = B
/--- An empty name does not pass back an empty string. It is the same as if no
name were given. ---/
/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
AB
0: AB
1: AB
CD
0: CD
1: CD
MK: B
/--- PRUNE goes to next bumpalong; COMMIT does not. ---/
/A(*PRUNE:A)B/K
ACAB
0: AB
MK: A
/--- Mark names can be duplicated ---/
/A(*:A)B|X(*:A)Y/K
AABC
0: AB
MK: A
XXYZ
0: XY
MK: A
/b(*:m)f|a(*:n)w/K
aw
0: aw
MK: n
** Failers
No match, mark = n
abc
No match, mark = m
/b(*:m)f|aw/K
abaw
0: aw
** Failers
No match
abc
No match, mark = m
abax
No match, mark = m
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
AAAC
0: AAC
/a(*PRUNE:X)bc|qq/KY
** Failers
No match, mark = X
axy
No match, mark = X
/a(*THEN:X)bc|qq/KY
** Failers
No match, mark = X
axy
No match, mark = X
/(?=a(*MARK:A)b)..x/K
abxy
0: abx
MK: A
** Failers
No match
abpq
No match
/(?=a(*MARK:A)b)..(*:Y)x/K
abxy
0: abx
MK: Y
** Failers
No match
abpq
No match
/(?=a(*PRUNE:A)b)..x/K
abxy
0: abx
MK: A
** Failers
No match
abpq
No match
/(?=a(*PRUNE:A)b)..(*:Y)x/K
abxy
0: abx
MK: Y
** Failers
No match
abpq
No match
/(?=a(*THEN:A)b)..x/K
abxy
0: abx
MK: A
** Failers
No match
abpq
No match
/(?=a(*THEN:A)b)..(*:Y)x/K
abxy
0: abx
MK: Y
** Failers
No match
abpq
No match
/(another)?(\1?)test/
hello world test
0: test
1: <unset>
2:
/(another)?(\1+)test/
hello world test
No match
/(a(*COMMIT)b){0}a(?1)|aac/
aac
0: aac
/((?:a?)*)*c/
aac
0: aac
1:
/((?>a?)*)*c/
aac
0: aac
1:
/(?>.*?a)(?<=ba)/
aba
0: ba
/(?:.*?a)(?<=ba)/
aba
0: aba
/.*?a(*PRUNE)b/
aab
0: ab
/.*?a(*PRUNE)b/s
aab
0: ab
/^a(*PRUNE)b/s
aab
No match
/.*?a(*SKIP)b/
aab
0: ab
/(?>.*?a)b/s
aab
0: ab
/(?>.*?a)b/
aab
0: ab
/(?>^a)b/s
aab
No match
/(?>.*?)(?<=(abcd)|(wxyz))/
alphabetabcd
0:
1: abcd
endingwxyz
0:
1: <unset>
2: wxyz
/(?>.*)(?<=(abcd)|(wxyz))/
alphabetabcd
0: alphabetabcd
1: abcd
endingwxyz
0: endingwxyz
1: <unset>
2: wxyz
"(?>.*)foo"
abcdfooxyz
No match
"(?>.*?)foo"
abcdfooxyz
0: foo
/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
ac
0: ac
/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
ac
0: ac
/(?<=(*SKIP)ac)a/
aa
No match
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
AAAC
0: AC
/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K
acacd
0: acd
MK: n
/A(*SKIP:m)x|A(*SKIP:n)x|AB/K
AB
0: AB
/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K
acacd
0: ac
MK: n
/-- Tests that try to figure out how Perl works. My hypothesis is that the
first verb that is backtracked onto is the one that acts. This seems to be
the case almost all the time, but there is one exception that is perhaps a
bug. --/
/-- This matches "aaaac"; each PRUNE advances one character until the subject
no longer starts with 5 'a's. --/
/aaaaa(*PRUNE)b|a+c/
aaaaaac
0: aaaac
/-- Putting SKIP in front of PRUNE makes no difference, as it is never
backtracked onto, whether or not it has a label. --/
/aaaaa(*SKIP)(*PRUNE)b|a+c/
aaaaaac
0: aaaac
/aaaaa(*SKIP:N)(*PRUNE)b|a+c/
aaaaaac
0: aaaac
/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
aaaaaac
0: aaaac
/-- Putting THEN in front makes no difference. */
/aaaaa(*THEN)(*PRUNE)b|a+c/
aaaaaac
0: aaaac
/-- However, putting COMMIT in front of the prune changes it to "no match". I
think this is inconsistent and possibly a bug. For the moment, running this
test is moved out of the Perl-compatible file. --/
/aaaaa(*COMMIT)(*PRUNE)b|a+c/
/---- OK, lets play the same game again using SKIP instead of PRUNE. ----/
/-- This matches "ac" because SKIP forces the next match to start on the
sixth "a". --/
/aaaaa(*SKIP)b|a+c/
aaaaaac
0: ac
/-- Putting PRUNE in front makes no difference. --/
/aaaaa(*PRUNE)(*SKIP)b|a+c/
aaaaaac
0: ac
/-- Putting THEN in front makes no difference. --/
/aaaaa(*THEN)(*SKIP)b|a+c/
aaaaaac
0: ac
/-- In this case, neither does COMMIT. This still matches "ac". --/
/aaaaa(*COMMIT)(*SKIP)b|a+c/
aaaaaac
0: ac
/-- This gives "no match", as expected. --/
/aaaaa(*COMMIT)b|a+c/
aaaaaac
No match
/------ Tests using THEN ------/
/-- This matches "aaaaaac", as expected. --/
/aaaaa(*THEN)b|a+c/
aaaaaac
0: aaaaaac
/-- Putting SKIP in front makes no difference. --/
/aaaaa(*SKIP)(*THEN)b|a+c/
aaaaaac
0: aaaaaac
/-- Putting PRUNE in front makes no difference. --/
/aaaaa(*PRUNE)(*THEN)b|a+c/
aaaaaac
0: aaaaaac
/-- Putting COMMIT in front makes no difference. --/
/aaaaa(*COMMIT)(*THEN)b|a+c/
aaaaaac
0: aaaaaac
/-- End of "priority" tests --/
/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
aaaaaa
0: a
/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
aaaaaa
0: a
/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
aaaaaa
0: aaaa
/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
aaaaaa
0: a
/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
aaaac
0: aac
/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
aaaac
0: ac
/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
aaaac
0: aac
/aaa(*MARK:A)a(*SKIP:A)b|a+c/
aaaac
0: ac
/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K
aaaaaac
0: ac
/.?(a|b(*THEN)c)/
ba
0: ba
1: a
/(a(*COMMIT)b)c|abd/
abc
0: abc
1: ab
abd
No match
/(?=a(*COMMIT)b)abc|abd/
abc
0: abc
abd
0: abd
/(?>a(*COMMIT)b)c|abd/
abc
0: abc
abd
0: abd
/a(?=b(*COMMIT)c)[^d]|abd/
abd
No match
abc
0: ab
/a(?=bc).|abd/
abd
0: abd
abc
0: ab
/a(?>b(*COMMIT)c)d|abd/
abceabd
No match
/a(?>bc)d|abd/
abceabd
0: abd
/(?>a(*COMMIT)b)c|abd/
abd
0: abd
/(?>a(*COMMIT)c)d|abd/
abd
No match
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
ac
0: ac
1: <unset>
2: c
/-- These tests were formerly in test 2, but changes in PCRE and Perl have
made them compatible. --/
/^(a)?(?(1)a|b)+$/
*** Failers
No match
a
No match
/(?=a\Kb)ab/
ab
0: b
/(?!a\Kb)ac/
ac
0: ac
/^abc(?<=b\Kc)d/
abcd
0: cd
/^abc(?<!b\Kq)d/
abcd
0: abcd
/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
AAAC
No match, mark = A
/^((abc|abcx)(*THEN)y|abcd)/
abcd
0: abcd
1: abcd
*** Failers
No match
abcxy
No match
/^((yes|no)(*THEN)(*F))?/
yes
No match
/(A (.*) C? (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
No match
/(A (.*) C? (*THEN) | A D) z/x
AbcdCBefgBhiBqz
No match
/(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
AbcdCBefgBhiBqz
No match
/(A (.*) C? (*THEN) | A D) \s* z/x
AbcdCBefgBhiBqz
No match
/(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
No match
/(A (.*) (?:C|) (*THEN) | A D) z/x
AbcdCBefgBhiBqz
No match
/(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
No match
/(A (.*) C{0,6} (*THEN) | A D) z/x
AbcdCBefgBhiBqz
No match
/(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
AbcdCEBefgBhiBqz
No match
/(A (.*) (CE){0,6} (*THEN) | A D) z/x
AbcdCEBefgBhiBqz
No match
/(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
AbcdCBefgBhiBqz
No match
/(A (.*) (CE*){0,6} (*THEN) | A D) z/x
AbcdCBefgBhiBqz
No match
/(?=a(*COMMIT)b|ac)ac|ac/
ac
No match
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x
ac
No match
/--------/
/(?(?!b(*THEN)a)bn|bnn)/
bnn
0: bn
/(?!b(*SKIP)a)bn|bnn/
bnn
0: bn
/(?(?!b(*SKIP)a)bn|bnn)/
bnn
0: bn
/(?!b(*PRUNE)a)bn|bnn/
bnn
0: bn
/(?(?!b(*PRUNE)a)bn|bnn)/
bnn
0: bn
/(?!b(*COMMIT)a)bn|bnn/
bnn
0: bn
/(?(?!b(*COMMIT)a)bn|bnn)/
bnn
0: bn
/(?=b(*SKIP)a)bn|bnn/
bnn
No match
/(?=b(*THEN)a)bn|bnn/
bnn
0: bnn
/^(?!a(*SKIP)b)/
ac
0:
/^(?!a(*SKIP)b)../
acd
0: ac
/(?!a(*SKIP)b)../
acd
0: ac
/^(?(?!a(*SKIP)b))/
ac
0:
/^(?!a(*PRUNE)b)../
acd
0: ac
/(?!a(*PRUNE)b)../
acd
0: ac
/(?!a(*COMMIT)b)ac|cd/
ac
0: ac
/\A.*?(?:a|bc)/
ba
0: ba
/^(A(*THEN)B|C(*THEN)D)/
CD
0: CD
1: CD
/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
0: b
MK: m(m
/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
0: b
MK: m(m
/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
0: b
/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K
abc
0: b
MK: m(m
/^\d*\w{4}/
1234
0: 1234
123
No match
/^[^b]*\w{4}/
aaaa
0: aaaa
aaa
No match
/^[^b]*\w{4}/i
aaaa
0: aaaa
aaa
No match
/^a*\w{4}/
aaaa
0: aaaa
aaa
No match
/^a*\w{4}/i
aaaa
0: aaaa
aaa
No match
/(?(?=ab)ab)/+
ca
0:
0+ ca
cd
0:
0+ cd
/(?:(?<n>foo)|(?<n>bar))\k<n>/J
foofoo
0: foofoo
1: foo
barbar
0: barbar
1: <unset>
2: bar
/(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/J
AfooA
0: AfooA
1: A
2: foo
AbarA
0: AbarA
1: A
2: <unset>
3: bar
** Failers
No match
Afoofoo
No match
Abarbar
No match
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1 IN SOA non-sp1 non-sp2(
0: 1 IN SOA non-sp1 non-sp2(
1: 1
2: non-sp1
3: non-sp2
/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/xJ
Ax
0: Ax
1: A
BAxy
0: BAxy
1: <unset>
2: B
3: A
/^A\xZ/
A\0Z
0: A\x00Z
/^A\o{123}B/
A\123B
0: ASB
/ ^ a + + b $ /x
aaaab
0: aaaab
/ ^ a + #comment
+ b $ /x
aaaab
0: aaaab
/ ^ a + #comment
#comment
+ b $ /x
aaaab
0: aaaab
/ ^ (?> a + ) b $ /x
aaaab
0: aaaab
/ ^ ( a + ) + + \w $ /x
aaaab
0: aaaab
1: aaaa
/(?:a\Kb)*+/+
ababc
0: b
0+ c
/(?>a\Kb)*/+
ababc
0: b
0+ c
/(?:a\Kb)*/+
ababc
0: b
0+ c
/(a\Kb)*+/+
ababc
0: b
0+ c
1: ab
/(a\Kb)*/+
ababc
0: b
0+ c
1: ab
/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
acb
No match
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER
'\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER
1: AFTER
2:
/^\w+(?>\s*)(?<=\w)/
test test
0: tes
/(?P<same>a)(?P<same>b)/gJ
abbaba
0: ab
1: a
2: b
0: ab
1: a
2: b
/(?P<same>a)(?P<same>b)(?P=same)/gJ
abbaba
0: aba
1: a
2: b
/(?P=same)?(?P<same>a)(?P<same>b)/gJ
abbaba
0: ab
1: a
2: b
0: ab
1: a
2: b
/(?:(?P=same)?(?:(?P<same>a)|(?P<same>b))(?P=same))+/gJ
bbbaaabaabb
0: bbbaaaba
1: a
2: b
0: bb
1: <unset>
2: b
/(?:(?P=same)?(?:(?P=same)(?P<same>a)(?P=same)|(?P=same)?(?P<same>b)(?P=same)){2}(?P=same)(?P<same>c)(?P=same)){2}(?P<same>z)?/gJ
bbbaaaccccaaabbbcc
No match
/(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
acl
0: acl
1: a
bdl
0: bdl
1: <unset>
2: b
adl
0: dl
bcl
0: l
/\sabc/
\x{0b}abc
0: \x0babc
/[\Qa]\E]+/
aa]]
0: aa]]
/[\Q]a\E]+/
aa]]
0: aa]]
/(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
1234abcd
0:
1: <unset>
2: <unset>
3: <unset>
4: <unset>
5:
/(\2)(\1)/
"Z*(|d*){216}"
"(?1)(?#?'){8}(a)"
baaaaaaaaac
0: aaaaaaaaa
1: a
"(?|(\k'Pm')|(?'Pm'))"
abcd
0:
1:
/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])/
\ Fred:099
0:
/(?=.*X)X$/
\ X
0: X
/X+(?#comment)?/
>XXX<
0: X
/-- End of testinput1 --/
+2547
View File
@@ -0,0 +1,2547 @@
/-- This set of tests check Unicode property support with the DFA matching
functionality of pcre_dfa_exec(). The -dfa flag must be used with pcretest
when running it. --/
/\pL\P{Nd}/8
AB
0: AB
*** Failers
0: Fa
A0
No match
00
No match
/\X./8
AB
0: AB
A\x{300}BC
0: A\x{300}B
A\x{300}\x{301}\x{302}BC
0: A\x{300}\x{301}\x{302}B
*** Failers
0: **
\x{300}
No match
/\X\X/8
ABC
0: AB
A\x{300}B\x{300}\x{301}C
0: A\x{300}B\x{300}\x{301}
A\x{300}\x{301}\x{302}BC
0: A\x{300}\x{301}\x{302}B
*** Failers
0: **
\x{300}
No match
/^\pL+/8
abcd
0: abcd
a
0: a
*** Failers
No match
/^\PL+/8
1234
0: 1234
=
0: =
*** Failers
0: ***
abcd
No match
/^\X+/8
abcdA\x{300}\x{301}\x{302}
0: abcdA\x{300}\x{301}\x{302}
A\x{300}\x{301}\x{302}
0: A\x{300}\x{301}\x{302}
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}
0: A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}
a
0: a
*** Failers
0: *** Failers
\x{300}\x{301}\x{302}
0: \x{300}\x{301}\x{302}
/\X?abc/8
abc
0: abc
A\x{300}abc
0: A\x{300}abc
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
0: A\x{300}abc
\x{300}abc
0: \x{300}abc
*** Failers
No match
/^\X?abc/8
abc
0: abc
A\x{300}abc
0: A\x{300}abc
*** Failers
No match
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
No match
\x{300}abc
0: \x{300}abc
/\X*abc/8
abc
0: abc
A\x{300}abc
0: A\x{300}abc
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
0: A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abc
\x{300}abc
0: \x{300}abc
*** Failers
No match
/^\X*abc/8
abc
0: abc
A\x{300}abc
0: A\x{300}abc
A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abcxyz
0: A\x{300}\x{301}\x{302}A\x{300}A\x{300}A\x{300}abc
*** Failers
No match
\x{300}abc
0: \x{300}abc
/^\pL?=./8
A=b
0: A=b
=c
0: =c
*** Failers
No match
1=2
No match
AAAA=b
No match
/^\pL*=./8
AAAA=b
0: AAAA=b
=c
0: =c
*** Failers
No match
1=2
No match
/^\X{2,3}X/8
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
0: A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
0: A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
*** Failers
No match
X
No match
A\x{300}\x{301}\x{302}X
No match
A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}A\x{300}\x{301}\x{302}X
No match
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
\np\x{300}9!\$ <
0: \x{0a}p\x{300}9!$ <
** Failers
No match
ap\x{300}9!\$ <
No match
/^\PC/8
X
0: X
** Failers
0: *
\x7f
No match
/^\PL/8
9
0: 9
** Failers
0: *
\x{c0}
No match
/^\PM/8
X
0: X
** Failers
0: *
\x{30f}
No match
/^\PN/8
X
0: X
** Failers
0: *
\x{660}
No match
/^\PP/8
X
0: X
** Failers
No match
\x{66c}
No match
/^\PS/8
X
0: X
** Failers
0: *
\x{f01}
No match
/^\PZ/8
X
0: X
** Failers
0: *
\x{1680}
No match
/^\p{Cc}/8
\x{017}
0: \x{17}
\x{09f}
0: \x{9f}
** Failers
No match
\x{0600}
No match
/^\p{Cf}/8
\x{601}
0: \x{601}
\x{180e}
0: \x{180e}
\x{061c}
0: \x{61c}
\x{2066}
0: \x{2066}
\x{2067}
0: \x{2067}
\x{2068}
0: \x{2068}
\x{2069}
0: \x{2069}
** Failers
No match
\x{09f}
No match
/^\p{Cn}/8
** Failers
No match
\x{09f}
No match
/^\p{Co}/8
\x{f8ff}
0: \x{f8ff}
** Failers
No match
\x{09f}
No match
/^\p{Cs}/8
\?\x{dfff}
0: \x{dfff}
** Failers
No match
\x{09f}
No match
/^\p{Ll}/8
a
0: a
** Failers
No match
Z
No match
\x{e000}
No match
/^\p{Lm}/8
\x{2b0}
0: \x{2b0}
** Failers
No match
a
No match
/^\p{Lo}/8
\x{1bb}
0: \x{1bb}
** Failers
No match
a
No match
\x{2b0}
No match
/^\p{Lt}/8
\x{1c5}
0: \x{1c5}
** Failers
No match
a
No match
\x{2b0}
No match
/^\p{Lu}/8
A
0: A
** Failers
No match
\x{2b0}
No match
/^\p{Mc}/8
\x{903}
0: \x{903}
** Failers
No match
X
No match
\x{300}
No match
/^\p{Me}/8
\x{488}
0: \x{488}
** Failers
No match
X
No match
\x{903}
No match
\x{300}
No match
/^\p{Mn}/8
\x{300}
0: \x{300}
\x{1a1b}
0: \x{1a1b}
** Failers
No match
X
No match
\x{903}
No match
/^\p{Nd}+/8O
0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
0: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}
1: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}
2: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}
3: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}
4: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}
5: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}
6: 0123456789\x{660}\x{661}\x{662}\x{663}
7: 0123456789\x{660}\x{661}\x{662}
8: 0123456789\x{660}\x{661}
9: 0123456789\x{660}
10: 0123456789
11: 012345678
12: 01234567
13: 0123456
14: 012345
15: 01234
16: 0123
17: 012
18: 01
19: 0
\x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
0: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}
1: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}
2: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}
3: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}
4: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}
5: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}
6: \x{6f0}\x{6f1}\x{6f2}\x{6f3}
7: \x{6f0}\x{6f1}\x{6f2}
8: \x{6f0}\x{6f1}
9: \x{6f0}
\x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
0: \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}
1: \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}
2: \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}
3: \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}
4: \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}
5: \x{966}\x{967}\x{968}\x{969}\x{96a}
6: \x{966}\x{967}\x{968}\x{969}
7: \x{966}\x{967}\x{968}
8: \x{966}\x{967}
9: \x{966}
** Failers
No match
X
No match
/^\p{Nl}/8
\x{16ee}
0: \x{16ee}
** Failers
No match
X
No match
\x{966}
No match
/^\p{No}/8
\x{b2}
0: \x{b2}
\x{b3}
0: \x{b3}
** Failers
No match
X
No match
\x{16ee}
No match
/^\p{Pc}/8
\x5f
0: _
\x{203f}
0: \x{203f}
** Failers
No match
X
No match
-
No match
\x{58a}
No match
/^\p{Pd}/8
-
0: -
\x{58a}
0: \x{58a}
** Failers
No match
X
No match
\x{203f}
No match
/^\p{Pe}/8
)
0: )
]
0: ]
}
0: }
\x{f3b}
0: \x{f3b}
\x{2309}
0: \x{2309}
\x{230b}
0: \x{230b}
** Failers
No match
X
No match
\x{203f}
No match
(
No match
[
No match
{
No match
\x{f3c}
No match
/^\p{Pf}/8
\x{bb}
0: \x{bb}
\x{2019}
0: \x{2019}
** Failers
No match
X
No match
\x{203f}
No match
/^\p{Pi}/8
\x{ab}
0: \x{ab}
\x{2018}
0: \x{2018}
** Failers
No match
X
No match
\x{203f}
No match
/^\p{Po}/8
!
0: !
\x{37e}
0: \x{37e}
** Failers
0: *
X
No match
\x{203f}
No match
/^\p{Ps}/8
(
0: (
[
0: [
{
0: {
\x{f3c}
0: \x{f3c}
\x{2308}
0: \x{2308}
\x{230a}
0: \x{230a}
** Failers
No match
X
No match
)
No match
]
No match
}
No match
\x{f3b}
No match
/^\p{Sc}+/8
$\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
0: $\x{a2}\x{a3}\x{a4}\x{a5}
\x{9f2}
0: \x{9f2}
** Failers
No match
X
No match
\x{2c2}
No match
/^\p{Sk}/8
\x{2c2}
0: \x{2c2}
** Failers
No match
X
No match
\x{9f2}
No match
/^\p{Sm}+/8
+<|~\x{ac}\x{2044}
0: +<|~\x{ac}\x{2044}
** Failers
No match
X
No match
\x{9f2}
No match
/^\p{So}/8
\x{a6}
0: \x{a6}
\x{482}
0: \x{482}
** Failers
No match
X
No match
\x{9f2}
No match
/^\p{Zl}/8
\x{2028}
0: \x{2028}
** Failers
No match
X
No match
\x{2029}
No match
/^\p{Zp}/8
\x{2029}
0: \x{2029}
** Failers
No match
X
No match
\x{2028}
No match
/^\p{Zs}/8
\ \
0:
\x{a0}
0: \x{a0}
\x{1680}
0: \x{1680}
\x{2000}
0: \x{2000}
\x{2001}
0: \x{2001}
** Failers
No match
\x{2028}
No match
\x{200d}
No match
/\p{Nd}+(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
2: \x{660}\x{661}\x{662}
/\p{Nd}+?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
2: \x{660}\x{661}\x{662}
/\p{Nd}{2,}(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
/\p{Nd}{2,}?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
/\p{Nd}*(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
2: \x{660}\x{661}\x{662}
3: \x{660}\x{661}
/\p{Nd}*?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
2: \x{660}\x{661}\x{662}
3: \x{660}\x{661}
/\p{Nd}{2}(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
/\p{Nd}{2,3}(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
/\p{Nd}{2,3}?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: \x{660}\x{661}\x{662}A
/\p{Nd}?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}
1: \x{660}\x{661}
/\p{Nd}??(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}
1: \x{660}\x{661}
/\p{Nd}*+(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
/\p{Nd}*+(...)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}ABC
/\p{Nd}*+(....)/8
** Failers
0: ** F
\x{660}\x{661}\x{662}ABC
No match
/\p{Lu}/8i
A
0: A
a\x{10a0}B
0: \x{10a0}
** Failers
0: F
a
No match
\x{1d00}
No match
/\p{^Lu}/8i
1234
0: 1
** Failers
0: *
ABC
No match
/\P{Lu}/8i
1234
0: 1
** Failers
0: *
ABC
No match
/(?<=A\p{Nd})XYZ/8
A2XYZ
0: XYZ
123A5XYZPQR
0: XYZ
ABA\x{660}XYZpqr
0: XYZ
** Failers
No match
AXYZ
No match
XYZ
No match
/(?<!\pL)XYZ/8
1XYZ
0: XYZ
AB=XYZ..
0: XYZ
XYZ
0: XYZ
** Failers
No match
WXYZ
No match
/[\p{Nd}]/8
1234
0: 1
/[\p{Nd}+-]+/8
1234
0: 1234
12-34
0: 12-34
12+\x{661}-34
0: 12+\x{661}-34
** Failers
No match
abcd
No match
/[\P{Nd}]+/8
abcd
0: abcd
** Failers
0: ** Failers
1234
No match
/\D+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\P{Nd}+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D]+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\P{Nd}]+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D\P{Nd}]+/8O
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\pL/8
a
0: a
A
0: A
/\pL/8i
a
0: a
A
0: A
/\p{Lu}/8
A
0: A
aZ
0: Z
** Failers
0: F
abc
No match
/\p{Lu}/8i
A
0: A
aZ
0: Z
** Failers
0: F
abc
No match
/\p{Ll}/8
a
0: a
Az
0: z
** Failers
0: a
ABC
No match
/\p{Ll}/8i
a
0: a
Az
0: z
** Failers
0: a
ABC
No match
/^\x{c0}$/8i
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/^\x{e0}$/8i
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
** Failers
No match
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
No match
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
No match
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
No match
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
No match
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
No match
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8i
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
0: A\x{391}\x{1044f}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/\x{391}+/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
0: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
/\x{391}{3,5}(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
0: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
2: \x{391}\x{3b1}\x{3b1}\x{3b1}
/\x{391}{3,5}?(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
0: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
2: \x{391}\x{3b1}\x{3b1}\x{3b1}
/[\x{391}\x{ff3a}]/8i
\x{391}
0: \x{391}
\x{ff3a}
0: \x{ff3a}
\x{3b1}
0: \x{3b1}
\x{ff5a}
0: \x{ff5a}
/[\x{c0}\x{391}]/8i
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/[\x{105}-\x{109}]/8i
\x{104}
0: \x{104}
\x{105}
0: \x{105}
\x{109}
0: \x{109}
** Failers
No match
\x{100}
No match
\x{10a}
No match
/[z-\x{100}]/8i
Z
0: Z
z
0: z
\x{39c}
0: \x{39c}
\x{178}
0: \x{178}
|
0: |
\x{80}
0: \x{80}
\x{ff}
0: \x{ff}
\x{100}
0: \x{100}
\x{101}
0: \x{101}
** Failers
No match
\x{102}
No match
Y
No match
y
No match
/[z-\x{100}]/8i
/^\X/8
A
0: A
A\x{300}BC
0: A\x{300}
A\x{300}\x{301}\x{302}BC
0: A\x{300}\x{301}\x{302}
*** Failers
0: *
\x{300}
0: \x{300}
/^[\X]/8
X123
0: X
*** Failers
No match
AXYZ
No match
/^(\X*)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BC
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BC
/^(\X*?)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BC
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BC
/^(\X*)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BCA
1: A\x{300}\x{301}\x{302}BC
2: A\x{300}\x{301}\x{302}B
3: A
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BCA
2: A\x{300}\x{301}\x{302}BC
3: A\x{300}\x{301}\x{302}B
4: A
/^(\X*?)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BCA
1: A\x{300}\x{301}\x{302}BC
2: A\x{300}\x{301}\x{302}B
3: A
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BCA
2: A\x{300}\x{301}\x{302}BC
3: A\x{300}\x{301}\x{302}B
4: A
/^\X(.)/8
*** Failers
0: **
A\x{300}\x{301}\x{302}
No match
/^\X{2,3}(.)/8
A\x{300}\x{301}B\x{300}X
0: A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
0: A\x{300}\x{301}B\x{300}C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1: A\x{300}\x{301}B\x{300}C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}D
1: A\x{300}\x{301}B\x{300}C
/^\X{2,3}?(.)/8
A\x{300}\x{301}B\x{300}X
0: A\x{300}\x{301}B\x{300}X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
0: A\x{300}\x{301}B\x{300}C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1: A\x{300}\x{301}B\x{300}C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}D
1: A\x{300}\x{301}B\x{300}C
/^\pN{2,3}X/
12X
0: 12X
123X
0: 123X
*** Failers
No match
X
No match
1X
No match
1234X
No match
/\x{100}/i8
\x{100}
0: \x{100}
\x{101}
0: \x{101}
/^\p{Han}+/8
\x{2e81}\x{3007}\x{2f804}\x{31a0}
0: \x{2e81}\x{3007}\x{2f804}
** Failers
No match
\x{2e7f}
No match
/^\P{Katakana}+/8
\x{3105}
0: \x{3105}
** Failers
0: ** Failers
\x{30ff}
No match
/^[\p{Arabic}]/8
\x{06e9}
0: \x{6e9}
\x{060b}
0: \x{60b}
** Failers
No match
X\x{06e9}
No match
/^[\P{Yi}]/8
\x{2f800}
0: \x{2f800}
** Failers
0: *
\x{a014}
No match
\x{a4c6}
No match
/^\p{Any}X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
X
No match
/^\P{Any}X/8
** Failers
No match
AX
No match
/^\p{Any}?X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
ABXYZ
No match
/^\P{Any}?X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
ABXYZ
No match
/^\p{Any}+X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
XYZ
No match
/^\P{Any}+X/8
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
XYZ
No match
/^\p{Any}*X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
/^\P{Any}*X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
/^[\p{Any}]X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
X
No match
/^[\P{Any}]X/8
** Failers
No match
AX
No match
/^[\p{Any}]?X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
ABXYZ
No match
/^[\P{Any}]?X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
ABXYZ
No match
/^[\p{Any}]+X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
XYZ
No match
/^[\P{Any}]+X/8
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
XYZ
No match
/^[\p{Any}]*X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
/^[\P{Any}]*X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
/^\p{Any}{3,5}?/8
abcdefgh
0: abcde
1: abcd
2: abc
\x{1234}\n\r\x{3456}xyz
0: \x{1234}\x{0a}\x{0d}\x{3456}x
1: \x{1234}\x{0a}\x{0d}\x{3456}
2: \x{1234}\x{0a}\x{0d}
/^\p{Any}{3,5}/8
abcdefgh
0: abcde
\x{1234}\n\r\x{3456}xyz
0: \x{1234}\x{0a}\x{0d}\x{3456}x
/^\P{Any}{3,5}?/8
** Failers
No match
abcdefgh
No match
\x{1234}\n\r\x{3456}xyz
No match
/^\p{L&}X/8
AXY
0: AX
aXY
0: aX
\x{1c5}XY
0: \x{1c5}X
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^[\p{L&}]X/8
AXY
0: AX
aXY
0: aX
\x{1c5}XY
0: \x{1c5}X
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^\p{L&}+X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEXypqreX
1: abcDEX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^[\p{L&}]+X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEXypqreX
1: abcDEX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^\p{L&}+?X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEXypqreX
1: abcDEX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^[\p{L&}]+?X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEXypqreX
1: abcDEX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^\P{L&}X/8
!XY
0: !X
\x{1bb}XY
0: \x{1bb}X
\x{2b0}XY
0: \x{2b0}X
** Failers
No match
\x{1c5}XY
No match
AXY
No match
/^[\P{L&}]X/8
!XY
0: !X
\x{1bb}XY
0: \x{1bb}X
\x{2b0}XY
0: \x{2b0}X
** Failers
No match
\x{1c5}XY
No match
AXY
No match
/^\x{023a}+?(\x{0130}+)/8i
\x{023a}\x{2c65}\x{0130}
0: \x{23a}\x{2c65}\x{130}
/^\x{023a}+([^X])/8i
\x{023a}\x{2c65}X
0: \x{23a}\x{2c65}
/\x{c0}+\x{116}+/8i
\x{c0}\x{e0}\x{116}\x{117}
0: \x{c0}\x{e0}\x{116}\x{117}
/[\x{c0}\x{116}]+/8i
\x{c0}\x{e0}\x{116}\x{117}
0: \x{c0}\x{e0}\x{116}\x{117}
/Check property support in non-UTF-8 mode/
/\p{L}{4}/
123abcdefg
0: abcd
123abc\xc4\xc5zz
0: abc\xc4
/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8
\x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
0: \x{102a4}\x{aa52}\x{a91d}\x{1c46}\x{10283}\x{1092e}\x{1c6b}\x{a93b}\x{a8bf}\x{1ba0}\x{a50a}
/\x{a77d}\x{1d79}/8i
\x{a77d}\x{1d79}
0: \x{a77d}\x{1d79}
\x{1d79}\x{a77d}
0: \x{1d79}\x{a77d}
/\x{a77d}\x{1d79}/8
\x{a77d}\x{1d79}
0: \x{a77d}\x{1d79}
** Failers
No match
\x{1d79}\x{a77d}
No match
/^\p{Xan}/8
ABCD
0: A
1234
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
** Failers
No match
_ABC
No match
/^\p{Xan}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
** Failers
No match
_ABC
No match
/^\p{Xan}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
/^\p{Xan}{2,9}/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}
/^[\p{Xan}]/8
ABCD1234_
0: A
1234abcd_
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
** Failers
No match
_ABC
No match
/^[\p{Xan}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
** Failers
No match
_ABC
No match
/^>\p{Xsp}/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}
** Failers
No match
\x{0b}
No match
/^>\p{Xsp}+/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
2: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}
3: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}
4: > \x{09}\x{0a}\x{0c}\x{0d}
5: > \x{09}\x{0a}\x{0c}
6: > \x{09}\x{0a}
7: > \x{09}
8: >
/^>\p{Xsp}*/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
2: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}
3: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}
4: > \x{09}\x{0a}\x{0c}\x{0d}
5: > \x{09}\x{0a}\x{0c}
6: > \x{09}\x{0a}
7: > \x{09}
8: >
9: >
/^>\p{Xsp}{2,9}/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
2: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}
3: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}
4: > \x{09}\x{0a}\x{0c}\x{0d}
5: > \x{09}\x{0a}\x{0c}
6: > \x{09}\x{0a}
7: > \x{09}
/^>[\p{Xsp}]/8O
>\x{2028}\x{0b}
0: >\x{2028}
/^>[\p{Xsp}]+/8O
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
2: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}
3: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}
4: > \x{09}\x{0a}\x{0c}\x{0d}
5: > \x{09}\x{0a}\x{0c}
6: > \x{09}\x{0a}
7: > \x{09}
8: >
/^>\p{Xps}/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}
>\x{a0}
0: >\x{a0}
** Failers
No match
\x{0b}
No match
/^>\p{Xps}+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}+?/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}\x{2028}\x{0b}
1: >\x{1680}\x{2028}
2: >\x{1680}
/^>\p{Xps}*/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}?/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
1: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
2: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}
3: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}
4: > \x{09}\x{0a}\x{0c}\x{0d}
5: > \x{09}\x{0a}\x{0c}
6: > \x{09}\x{0a}
7: > \x{09}
/^>[\p{Xps}]/8
>\x{2028}\x{0b}
0: >\x{2028}
/^>[\p{Xps}]+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^\p{Xwd}/8
ABCD
0: A
1234
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
_ABC
0: _
** Failers
No match
[]
No match
/^\p{Xwd}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}{2,9}/8
A_12\x{6ca}\x{a6c}\x{10a7}
0: A_12\x{6ca}\x{a6c}\x{10a7}
/^[\p{Xwd}]/8
ABCD1234_
0: A
1234abcd_
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
_ABC
0: _
** Failers
No match
[]
No match
/^[\p{Xwd}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/-- Unicode properties for \b abd \B --/
/\b...\B/8W
abc_
0: abc
\x{37e}abc\x{376}
0: abc
\x{37e}\x{376}\x{371}\x{393}\x{394}
0: \x{376}\x{371}\x{393}
!\x{c0}++\x{c1}\x{c2}
0: ++\x{c1}
!\x{c0}+++++
0: \x{c0}++
/-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/
/\b...\B/8
abc_
0: abc
** Failers
0: Fai
\x{37e}abc\x{376}
No match
\x{37e}\x{376}\x{371}\x{393}\x{394}
No match
!\x{c0}++\x{c1}\x{c2}
No match
!\x{c0}+++++
No match
/-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/
/\b...\B/W
abc_
0: abc
!\x{c0}++\x{c1}\x{c2}
0: ++\xc1
!\x{c0}+++++
0: \xc0++
/-- Caseless single negated characters > 127 need UCP support --/
/[^\x{100}]/8i
\x{100}\x{101}X
0: X
/[^\x{100}]+/8i
\x{100}\x{101}XX
0: XX
/^\X/8
A\P
0: A
A\P\P
Partial match: A
A\x{300}\x{301}\P
0: A\x{300}\x{301}
A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}
A\x{301}\P
0: A\x{301}
A\x{301}\P\P
Partial match: A\x{301}
/^\X{2,3}/8
A\P
Partial match: A
A\P\P
Partial match: A
AA\P
0: AA
AA\P\P
Partial match: AA
A\x{300}\x{301}\P
Partial match: A\x{300}\x{301}
A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}
A\x{300}\x{301}A\x{300}\x{301}\P
0: A\x{300}\x{301}A\x{300}\x{301}
A\x{300}\x{301}A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}A\x{300}\x{301}
/^\X{2}/8
AA\P
0: AA
AA\P\P
Partial match: AA
A\x{300}\x{301}A\x{300}\x{301}\P
0: A\x{300}\x{301}A\x{300}\x{301}
A\x{300}\x{301}A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}A\x{300}\x{301}
/^\X+/8
AA\P
0: AA
AA\P\P
Partial match: AA
/^\X+?Z/8
AA\P
Partial match: AA
AA\P\P
Partial match: AA
/-- These are tests for extended grapheme clusters --/
/^\X/8+
G\x{34e}\x{34e}X
0: G\x{34e}\x{34e}
0+ X
\x{34e}\x{34e}X
0: \x{34e}\x{34e}
0+ X
\x04X
0: \x{04}
0+ X
\x{1100}X
0: \x{1100}
0+ X
\x{1100}\x{34e}X
0: \x{1100}\x{34e}
0+ X
\x{1b04}\x{1b04}X
0: \x{1b04}\x{1b04}
0+ X
*These match up to the roman letters
0: *
0+ These match up to the roman letters
\x{1111}\x{1111}L,L
0: \x{1111}\x{1111}
0+ L,L
\x{1111}\x{1111}\x{1169}L,L,V
0: \x{1111}\x{1111}\x{1169}
0+ L,L,V
\x{1111}\x{ae4c}L, LV
0: \x{1111}\x{ae4c}
0+ L, LV
\x{1111}\x{ad89}L, LVT
0: \x{1111}\x{ad89}
0+ L, LVT
\x{1111}\x{ae4c}\x{1169}L, LV, V
0: \x{1111}\x{ae4c}\x{1169}
0+ L, LV, V
\x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
0: \x{1111}\x{ae4c}\x{1169}\x{1169}
0+ L, LV, V, V
\x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
0: \x{1111}\x{ae4c}\x{1169}\x{11fe}
0+ L, LV, V, T
\x{1111}\x{ad89}\x{11fe}L, LVT, T
0: \x{1111}\x{ad89}\x{11fe}
0+ L, LVT, T
\x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
0: \x{1111}\x{ad89}\x{11fe}\x{11fe}
0+ L, LVT, T, T
\x{ad89}\x{11fe}\x{11fe}LVT, T, T
0: \x{ad89}\x{11fe}\x{11fe}
0+ LVT, T, T
*These match just the first codepoint (invalid sequence)
0: *
0+ These match just the first codepoint (invalid sequence)
\x{1111}\x{11fe}L, T
0: \x{1111}
0+ \x{11fe}L, T
\x{ae4c}\x{1111}LV, L
0: \x{ae4c}
0+ \x{1111}LV, L
\x{ae4c}\x{ae4c}LV, LV
0: \x{ae4c}
0+ \x{ae4c}LV, LV
\x{ae4c}\x{ad89}LV, LVT
0: \x{ae4c}
0+ \x{ad89}LV, LVT
\x{1169}\x{1111}V, L
0: \x{1169}
0+ \x{1111}V, L
\x{1169}\x{ae4c}V, LV
0: \x{1169}
0+ \x{ae4c}V, LV
\x{1169}\x{ad89}V, LVT
0: \x{1169}
0+ \x{ad89}V, LVT
\x{ad89}\x{1111}LVT, L
0: \x{ad89}
0+ \x{1111}LVT, L
\x{ad89}\x{1169}LVT, V
0: \x{ad89}
0+ \x{1169}LVT, V
\x{ad89}\x{ae4c}LVT, LV
0: \x{ad89}
0+ \x{ae4c}LVT, LV
\x{ad89}\x{ad89}LVT, LVT
0: \x{ad89}
0+ \x{ad89}LVT, LVT
\x{11fe}\x{1111}T, L
0: \x{11fe}
0+ \x{1111}T, L
\x{11fe}\x{1169}T, V
0: \x{11fe}
0+ \x{1169}T, V
\x{11fe}\x{ae4c}T, LV
0: \x{11fe}
0+ \x{ae4c}T, LV
\x{11fe}\x{ad89}T, LVT
0: \x{11fe}
0+ \x{ad89}T, LVT
*Test extend and spacing mark
0: *
0+ Test extend and spacing mark
\x{1111}\x{ae4c}\x{0711}L, LV, extend
0: \x{1111}\x{ae4c}\x{711}
0+ L, LV, extend
\x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
0: \x{1111}\x{ae4c}\x{1b04}
0+ L, LV, spacing mark
\x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
0: \x{1111}\x{ae4c}\x{1b04}\x{711}\x{1b04}
0+ L, LV, spacing mark, extend, spacing mark
*Test CR, LF, and control
0: *
0+ Test CR, LF, and control
\x0d\x{0711}CR, extend
0: \x{0d}
0+ \x{711}CR, extend
\x0d\x{1b04}CR, spacingmark
0: \x{0d}
0+ \x{1b04}CR, spacingmark
\x0a\x{0711}LF, extend
0: \x{0a}
0+ \x{711}LF, extend
\x0a\x{1b04}LF, spacingmark
0: \x{0a}
0+ \x{1b04}LF, spacingmark
\x0b\x{0711}Control, extend
0: \x{0b}
0+ \x{711}Control, extend
\x09\x{1b04}Control, spacingmark
0: \x{09}
0+ \x{1b04}Control, spacingmark
*There are no Prepend characters, so we can't test Prepend, CR
0: *
0+ There are no Prepend characters, so we can't test Prepend, CR
/^(?>\X{2})X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
/^\X{2,4}X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
/^\X{2,4}?X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
/-- --/
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/[z\x{1e9e}]+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/[z\x{00df}]+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/[z\x{1f88}]+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/-- Perl matches these --/
/\x{00b5}+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/\x{039c}+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/\x{03bc}+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/\x{00c5}+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/\x{00e5}+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/\x{212b}+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/\x{01c4}+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/\x{01c5}+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/\x{01c6}+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/\x{01c7}+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/\x{01c8}+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/\x{01c9}+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/\x{01ca}+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/\x{01cb}+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/\x{01cc}+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/\x{01f1}+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/\x{01f2}+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/\x{01f3}+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/\x{0345}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{0399}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{03b9}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{1fbe}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{0392}+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/\x{03b2}+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/\x{03d0}+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/\x{0395}+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/\x{03b5}+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/\x{03f5}+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/\x{0398}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{03b8}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{03d1}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{03f4}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{039a}+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/\x{03ba}+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/\x{03f0}+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/\x{03a0}+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03c0}+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03d6}+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03a1}+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/\x{03c1}+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/\x{03f1}+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/\x{03a3}+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/\x{03c2}+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/\x{03c3}+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/\x{03a6}+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03c6}+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03d5}+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03c9}+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/\x{03a9}+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/\x{2126}+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/\x{1e60}+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/\x{1e61}+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/\x{1e9b}+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/\x{1f80}+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/\x{004b}+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/\x{006b}+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/\x{212a}+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/\x{0053}+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/\x{0073}+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/\x{017f}+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/ist/8i
ikt
No match
/is+t/8i
iSs\x{17f}t
0: iSs\x{17f}t
ikt
No match
/is+?t/8i
ikt
No match
/is?t/8i
ikt
No match
/is{2}t/8i
iskt
No match
/^\p{Xuc}/8
$abc
0: $
@abc
0: @
`abc
0: `
\x{1234}abc
0: \x{1234}
** Failers
No match
abc
No match
/^\p{Xuc}+/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
** Failers
No match
\x{9f}
No match
/^\p{Xuc}+?/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
1: $@`\x{a0}\x{1234}
2: $@`\x{a0}
3: $@`
4: $@
5: $
** Failers
No match
\x{9f}
No match
/^\p{Xuc}+?\*/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}*
** Failers
No match
\x{9f}
No match
/^\p{Xuc}++/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
** Failers
No match
\x{9f}
No match
/^\p{Xuc}{3,5}/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}
** Failers
No match
\x{9f}
No match
/^\p{Xuc}{3,5}?/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}
1: $@`\x{a0}
2: $@`
** Failers
No match
\x{9f}
No match
/^[\p{Xuc}]/8
$@`\x{a0}\x{1234}\x{e000}**
0: $
** Failers
No match
\x{9f}
No match
/^[\p{Xuc}]+/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
** Failers
No match
\x{9f}
No match
/^\P{Xuc}/8
abc
0: a
** Failers
0: *
$abc
No match
@abc
No match
`abc
No match
\x{1234}abc
No match
/^[\P{Xuc}]/8
abc
0: a
** Failers
0: *
$abc
No match
@abc
No match
`abc
No match
\x{1234}abc
No match
/^A\s+Z/8W
A\x{2005}Z
0: A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
0: A\x{85}\x{180e}\x{2005}Z
/^A[\s]+Z/8W
A\x{2005}Z
0: A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
0: A\x{85}\x{180e}\x{2005}Z
/-- End of testinput10 --/
+771
View File
@@ -0,0 +1,771 @@
/-- These are a few representative patterns whose lengths and offsets are to be
shown when the link size is 2. This is just a doublecheck test to ensure the
sizes don't go horribly wrong when something is changed. The pattern contents
are all themselves checked in other tests. Unicode, including property support,
is required for these tests. --/
/((?i)b)/BM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 5 CBra 1
5 /i b
7 5 Ket
9 9 Ket
11 End
------------------------------------------------------------------
/(?s)(.*X|^B)/BM
Memory allocation (code space): 38
------------------------------------------------------------------
0 16 Bra
2 7 CBra 1
5 AllAny*
7 X
9 5 Alt
11 ^
12 B
14 12 Ket
16 16 Ket
18 End
------------------------------------------------------------------
/(?s:.*X|^B)/BM
Memory allocation (code space): 36
------------------------------------------------------------------
0 15 Bra
2 6 Bra
4 AllAny*
6 X
8 5 Alt
10 ^
11 B
13 11 Ket
15 15 Ket
17 End
------------------------------------------------------------------
/^[[:alnum:]]/BM
Memory allocation (code space): 46
------------------------------------------------------------------
0 20 Bra
2 ^
3 [0-9A-Za-z]
20 20 Ket
22 End
------------------------------------------------------------------
/#/IxMD
Memory allocation (code space): 10
------------------------------------------------------------------
0 2 Bra
2 2 Ket
4 End
------------------------------------------------------------------
Capturing subpattern count = 0
May match empty string
Options: extended
No first char
No need char
/a#/IxMD
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 a
4 4 Ket
6 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: extended
First char = 'a'
No need char
/x?+/BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 x?+
4 4 Ket
6 End
------------------------------------------------------------------
/x++/BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 x++
4 4 Ket
6 End
------------------------------------------------------------------
/x{1,3}+/BM
Memory allocation (code space): 20
------------------------------------------------------------------
0 7 Bra
2 x
4 x{0,2}+
7 7 Ket
9 End
------------------------------------------------------------------
/(x)*+/BM
Memory allocation (code space): 26
------------------------------------------------------------------
0 10 Bra
2 Braposzero
3 5 CBraPos 1
6 x
8 5 KetRpos
10 10 Ket
12 End
------------------------------------------------------------------
/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/BM
Memory allocation (code space): 142
------------------------------------------------------------------
0 68 Bra
2 ^
3 63 CBra 1
6 5 CBra 2
9 a+
11 5 Ket
13 21 CBra 3
16 [ab]+?
34 21 Ket
36 21 CBra 4
39 [bc]+
57 21 Ket
59 5 CBra 5
62 \w*+
64 5 Ket
66 63 Ket
68 68 Ket
70 End
------------------------------------------------------------------
|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
Memory allocation (code space): 1648
------------------------------------------------------------------
0 821 Bra
2 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
820 \b
821 821 Ket
823 End
------------------------------------------------------------------
|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
Memory allocation (code space): 1628
------------------------------------------------------------------
0 811 Bra
2 $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
810 \b
811 811 Ket
813 End
------------------------------------------------------------------
/(a(?1)b)/BM
Memory allocation (code space): 32
------------------------------------------------------------------
0 13 Bra
2 9 CBra 1
5 a
7 2 Recurse
9 b
11 9 Ket
13 13 Ket
15 End
------------------------------------------------------------------
/(a(?1)+b)/BM
Memory allocation (code space): 40
------------------------------------------------------------------
0 17 Bra
2 13 CBra 1
5 a
7 4 Once
9 2 Recurse
11 4 KetRmax
13 b
15 13 Ket
17 17 Ket
19 End
------------------------------------------------------------------
/a(?P<name1>b|c)d(?P<longername2>e)/BM
Memory allocation (code space): 80
------------------------------------------------------------------
0 24 Bra
2 a
4 5 CBra 1
7 b
9 4 Alt
11 c
13 9 Ket
15 d
17 5 CBra 2
20 e
22 5 Ket
24 24 Ket
26 End
------------------------------------------------------------------
/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/BM
Memory allocation (code space): 73
------------------------------------------------------------------
0 29 Bra
2 18 Bra
4 a
6 12 CBra 1
9 c
11 5 CBra 2
14 d
16 5 Ket
18 12 Ket
20 18 Ket
22 5 CBra 3
25 a
27 5 Ket
29 29 Ket
31 End
------------------------------------------------------------------
/(?P<a>a)...(?P=a)bbb(?P>a)d/BM
Memory allocation (code space): 93
------------------------------------------------------------------
0 24 Bra
2 5 CBra 1
5 a
7 5 Ket
9 Any
10 Any
11 Any
12 \1
14 bbb
20 2 Recurse
22 d
24 24 Ket
26 End
------------------------------------------------------------------
/abc(?C255)de(?C)f/BM
Memory allocation (code space): 50
------------------------------------------------------------------
0 22 Bra
2 abc
8 Callout 255 10 1
12 de
16 Callout 0 16 1
20 f
22 22 Ket
24 End
------------------------------------------------------------------
/abcde/CBM
Memory allocation (code space): 78
------------------------------------------------------------------
0 36 Bra
2 Callout 255 0 1
6 a
8 Callout 255 1 1
12 b
14 Callout 255 2 1
18 c
20 Callout 255 3 1
24 d
26 Callout 255 4 1
30 e
32 Callout 255 5 0
36 36 Ket
38 End
------------------------------------------------------------------
/\x{100}/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{100}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{1000}/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{1000}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{10000}/8BM
Memory allocation (code space): 16
------------------------------------------------------------------
0 5 Bra
2 \x{10000}
5 5 Ket
7 End
------------------------------------------------------------------
/\x{100000}/8BM
Memory allocation (code space): 16
------------------------------------------------------------------
0 5 Bra
2 \x{100000}
5 5 Ket
7 End
------------------------------------------------------------------
/\x{10ffff}/8BM
Memory allocation (code space): 16
------------------------------------------------------------------
0 5 Bra
2 \x{10ffff}
5 5 Ket
7 End
------------------------------------------------------------------
/\x{110000}/8BM
Failed: character value in \x{} or \o{} is too large at offset 9
/[\x{ff}]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{ff}
4 4 Ket
6 End
------------------------------------------------------------------
/[\x{100}]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{100}
4 4 Ket
6 End
------------------------------------------------------------------
/\x80/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x80
4 4 Ket
6 End
------------------------------------------------------------------
/\xff/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{ff}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{0041}\x{2262}\x{0391}\x{002e}/D8M
Memory allocation (code space): 26
------------------------------------------------------------------
0 10 Bra
2 A\x{2262}\x{391}.
10 10 Ket
12 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = '.'
/\x{D55c}\x{ad6d}\x{C5B4}/D8M
Memory allocation (code space): 22
------------------------------------------------------------------
0 8 Bra
2 \x{d55c}\x{ad6d}\x{c5b4}
8 8 Ket
10 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d55c}
Need char = \x{c5b4}
/\x{65e5}\x{672c}\x{8a9e}/D8M
Memory allocation (code space): 22
------------------------------------------------------------------
0 8 Bra
2 \x{65e5}\x{672c}\x{8a9e}
8 8 Ket
10 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{65e5}
Need char = \x{8a9e}
/[\x{100}]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{100}
4 4 Ket
6 End
------------------------------------------------------------------
/[Z\x{100}]/8BM
Memory allocation (code space): 54
------------------------------------------------------------------
0 24 Bra
2 [Z\x{100}]
24 24 Ket
26 End
------------------------------------------------------------------
/^[\x{100}\E-\Q\E\x{150}]/B8M
Memory allocation (code space): 26
------------------------------------------------------------------
0 10 Bra
2 ^
3 [\x{100}-\x{150}]
10 10 Ket
12 End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E]/B8M
Memory allocation (code space): 26
------------------------------------------------------------------
0 10 Bra
2 ^
3 [\x{100}-\x{150}]
10 10 Ket
12 End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E/B8M
Failed: missing terminating ] for character class at offset 13
/[\p{L}]/BM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 [\p{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\p{^L}]/BM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 [\P{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\P{L}]/BM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 [\P{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\P{^L}]/BM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 [\p{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[abc\p{L}\x{0660}]/8BM
Memory allocation (code space): 60
------------------------------------------------------------------
0 27 Bra
2 [a-c\p{L}\x{660}]
27 27 Ket
29 End
------------------------------------------------------------------
/[\p{Nd}]/8BM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 [\p{Nd}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\p{Nd}+-]+/8BM
Memory allocation (code space): 58
------------------------------------------------------------------
0 26 Bra
2 [+\-\p{Nd}]++
26 26 Ket
28 End
------------------------------------------------------------------
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iBM
Memory allocation (code space): 32
------------------------------------------------------------------
0 13 Bra
2 /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
13 13 Ket
15 End
------------------------------------------------------------------
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8BM
Memory allocation (code space): 32
------------------------------------------------------------------
0 13 Bra
2 A\x{391}\x{10427}\x{ff3a}\x{1fb0}
13 13 Ket
15 End
------------------------------------------------------------------
/[\x{105}-\x{109}]/8iBM
Memory allocation (code space): 24
------------------------------------------------------------------
0 9 Bra
2 [\x{104}-\x{109}]
9 9 Ket
11 End
------------------------------------------------------------------
/( ( (?(1)0|) )* )/xBM
Memory allocation (code space): 52
------------------------------------------------------------------
0 23 Bra
2 19 CBra 1
5 Brazero
6 13 SCBra 2
9 6 Cond
11 1 Cond ref
13 0
15 2 Alt
17 8 Ket
19 13 KetRmax
21 19 Ket
23 23 Ket
25 End
------------------------------------------------------------------
/( (?(1)0|)* )/xBM
Memory allocation (code space): 42
------------------------------------------------------------------
0 18 Bra
2 14 CBra 1
5 Brazero
6 6 SCond
8 1 Cond ref
10 0
12 2 Alt
14 8 KetRmax
16 14 Ket
18 18 Ket
20 End
------------------------------------------------------------------
/[a]/BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 a
4 4 Ket
6 End
------------------------------------------------------------------
/[a]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 a
4 4 Ket
6 End
------------------------------------------------------------------
/[\xaa]/BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{aa}
4 4 Ket
6 End
------------------------------------------------------------------
/[\xaa]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 \x{aa}
4 4 Ket
6 End
------------------------------------------------------------------
/[^a]/BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 [^a]
4 4 Ket
6 End
------------------------------------------------------------------
/[^a]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 [^a]
4 4 Ket
6 End
------------------------------------------------------------------
/[^\xaa]/BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 [^\x{aa}]
4 4 Ket
6 End
------------------------------------------------------------------
/[^\xaa]/8BM
Memory allocation (code space): 14
------------------------------------------------------------------
0 4 Bra
2 [^\x{aa}]
4 4 Ket
6 End
------------------------------------------------------------------
/[^\d]/8WB
------------------------------------------------------------------
0 9 Bra
2 [^\p{Nd}]
9 9 Ket
11 End
------------------------------------------------------------------
/[[:^alpha:][:^cntrl:]]+/8WB
------------------------------------------------------------------
0 30 Bra
2 [ -~\x80-\xff\P{L}\x{100}-\x{10ffff}]++
30 30 Ket
32 End
------------------------------------------------------------------
/[[:^cntrl:][:^alpha:]]+/8WB
------------------------------------------------------------------
0 30 Bra
2 [ -~\x80-\xff\x{100}-\x{10ffff}\P{L}]++
30 30 Ket
32 End
------------------------------------------------------------------
/[[:alpha:]]+/8WB
------------------------------------------------------------------
0 10 Bra
2 [\p{L}]++
10 10 Ket
12 End
------------------------------------------------------------------
/[[:^alpha:]\S]+/8WB
------------------------------------------------------------------
0 13 Bra
2 [\P{L}\P{Xsp}]++
13 13 Ket
15 End
------------------------------------------------------------------
/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/B
------------------------------------------------------------------
0 60 Bra
2 abc
8 5 CBra 1
11 d
13 4 Alt
15 e
17 9 Ket
19 *THEN
20 x
22 12 CBra 2
25 123
31 *THEN
32 4
34 24 Alt
36 567
42 5 CBra 3
45 b
47 4 Alt
49 q
51 9 Ket
53 *THEN
54 xx
58 36 Ket
60 60 Ket
62 End
------------------------------------------------------------------
/(((a\2)|(a*)\g<-1>))*a?/B
------------------------------------------------------------------
0 39 Bra
2 Brazero
3 32 SCBra 1
6 27 Once
8 12 CBra 2
11 7 CBra 3
14 a
16 \2
18 7 Ket
20 11 Alt
22 5 CBra 4
25 a*
27 5 Ket
29 22 Recurse
31 23 Ket
33 27 Ket
35 32 KetRmax
37 a?+
39 39 Ket
41 End
------------------------------------------------------------------
/((?+1)(\1))/B
------------------------------------------------------------------
0 20 Bra
2 16 Once
4 12 CBra 1
7 9 Recurse
9 5 CBra 2
12 \1
14 5 Ket
16 12 Ket
18 16 Ket
20 20 Ket
22 End
------------------------------------------------------------------
/.((?2)(?R)\1)()/B
------------------------------------------------------------------
0 23 Bra
2 Any
3 13 Once
5 9 CBra 1
8 18 Recurse
10 0 Recurse
12 \1
14 9 Ket
16 13 Ket
18 3 CBra 2
21 3 Ket
23 23 Ket
25 End
------------------------------------------------------------------
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: regular expression is too complicated at offset 490
/-- End of testinput11 --/
+771
View File
@@ -0,0 +1,771 @@
/-- These are a few representative patterns whose lengths and offsets are to be
shown when the link size is 2. This is just a doublecheck test to ensure the
sizes don't go horribly wrong when something is changed. The pattern contents
are all themselves checked in other tests. Unicode, including property support,
is required for these tests. --/
/((?i)b)/BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 5 CBra 1
5 /i b
7 5 Ket
9 9 Ket
11 End
------------------------------------------------------------------
/(?s)(.*X|^B)/BM
Memory allocation (code space): 76
------------------------------------------------------------------
0 16 Bra
2 7 CBra 1
5 AllAny*
7 X
9 5 Alt
11 ^
12 B
14 12 Ket
16 16 Ket
18 End
------------------------------------------------------------------
/(?s:.*X|^B)/BM
Memory allocation (code space): 72
------------------------------------------------------------------
0 15 Bra
2 6 Bra
4 AllAny*
6 X
8 5 Alt
10 ^
11 B
13 11 Ket
15 15 Ket
17 End
------------------------------------------------------------------
/^[[:alnum:]]/BM
Memory allocation (code space): 60
------------------------------------------------------------------
0 12 Bra
2 ^
3 [0-9A-Za-z]
12 12 Ket
14 End
------------------------------------------------------------------
/#/IxMD
Memory allocation (code space): 20
------------------------------------------------------------------
0 2 Bra
2 2 Ket
4 End
------------------------------------------------------------------
Capturing subpattern count = 0
May match empty string
Options: extended
No first char
No need char
/a#/IxMD
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 a
4 4 Ket
6 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: extended
First char = 'a'
No need char
/x?+/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 x?+
4 4 Ket
6 End
------------------------------------------------------------------
/x++/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 x++
4 4 Ket
6 End
------------------------------------------------------------------
/x{1,3}+/BM
Memory allocation (code space): 40
------------------------------------------------------------------
0 7 Bra
2 x
4 x{0,2}+
7 7 Ket
9 End
------------------------------------------------------------------
/(x)*+/BM
Memory allocation (code space): 52
------------------------------------------------------------------
0 10 Bra
2 Braposzero
3 5 CBraPos 1
6 x
8 5 KetRpos
10 10 Ket
12 End
------------------------------------------------------------------
/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/BM
Memory allocation (code space): 220
------------------------------------------------------------------
0 52 Bra
2 ^
3 47 CBra 1
6 5 CBra 2
9 a+
11 5 Ket
13 13 CBra 3
16 [ab]+?
26 13 Ket
28 13 CBra 4
31 [bc]+
41 13 Ket
43 5 CBra 5
46 \w*+
48 5 Ket
50 47 Ket
52 52 Ket
54 End
------------------------------------------------------------------
|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
Memory allocation (code space): 3296
------------------------------------------------------------------
0 821 Bra
2 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
820 \b
821 821 Ket
823 End
------------------------------------------------------------------
|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
Memory allocation (code space): 3256
------------------------------------------------------------------
0 811 Bra
2 $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
810 \b
811 811 Ket
813 End
------------------------------------------------------------------
/(a(?1)b)/BM
Memory allocation (code space): 64
------------------------------------------------------------------
0 13 Bra
2 9 CBra 1
5 a
7 2 Recurse
9 b
11 9 Ket
13 13 Ket
15 End
------------------------------------------------------------------
/(a(?1)+b)/BM
Memory allocation (code space): 80
------------------------------------------------------------------
0 17 Bra
2 13 CBra 1
5 a
7 4 Once
9 2 Recurse
11 4 KetRmax
13 b
15 13 Ket
17 17 Ket
19 End
------------------------------------------------------------------
/a(?P<name1>b|c)d(?P<longername2>e)/BM
Memory allocation (code space): 186
------------------------------------------------------------------
0 24 Bra
2 a
4 5 CBra 1
7 b
9 4 Alt
11 c
13 9 Ket
15 d
17 5 CBra 2
20 e
22 5 Ket
24 24 Ket
26 End
------------------------------------------------------------------
/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/BM
Memory allocation (code space): 155
------------------------------------------------------------------
0 29 Bra
2 18 Bra
4 a
6 12 CBra 1
9 c
11 5 CBra 2
14 d
16 5 Ket
18 12 Ket
20 18 Ket
22 5 CBra 3
25 a
27 5 Ket
29 29 Ket
31 End
------------------------------------------------------------------
/(?P<a>a)...(?P=a)bbb(?P>a)d/BM
Memory allocation (code space): 189
------------------------------------------------------------------
0 24 Bra
2 5 CBra 1
5 a
7 5 Ket
9 Any
10 Any
11 Any
12 \1
14 bbb
20 2 Recurse
22 d
24 24 Ket
26 End
------------------------------------------------------------------
/abc(?C255)de(?C)f/BM
Memory allocation (code space): 100
------------------------------------------------------------------
0 22 Bra
2 abc
8 Callout 255 10 1
12 de
16 Callout 0 16 1
20 f
22 22 Ket
24 End
------------------------------------------------------------------
/abcde/CBM
Memory allocation (code space): 156
------------------------------------------------------------------
0 36 Bra
2 Callout 255 0 1
6 a
8 Callout 255 1 1
12 b
14 Callout 255 2 1
18 c
20 Callout 255 3 1
24 d
26 Callout 255 4 1
30 e
32 Callout 255 5 0
36 36 Ket
38 End
------------------------------------------------------------------
/\x{100}/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{100}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{1000}/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{1000}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{10000}/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{10000}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{100000}/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{100000}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{10ffff}/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{10ffff}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{110000}/8BM
Failed: character value in \x{} or \o{} is too large at offset 9
/[\x{ff}]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{ff}
4 4 Ket
6 End
------------------------------------------------------------------
/[\x{100}]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{100}
4 4 Ket
6 End
------------------------------------------------------------------
/\x80/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x80
4 4 Ket
6 End
------------------------------------------------------------------
/\xff/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{ff}
4 4 Ket
6 End
------------------------------------------------------------------
/\x{0041}\x{2262}\x{0391}\x{002e}/D8M
Memory allocation (code space): 52
------------------------------------------------------------------
0 10 Bra
2 A\x{2262}\x{391}.
10 10 Ket
12 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = '.'
/\x{D55c}\x{ad6d}\x{C5B4}/D8M
Memory allocation (code space): 44
------------------------------------------------------------------
0 8 Bra
2 \x{d55c}\x{ad6d}\x{c5b4}
8 8 Ket
10 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d55c}
Need char = \x{c5b4}
/\x{65e5}\x{672c}\x{8a9e}/D8M
Memory allocation (code space): 44
------------------------------------------------------------------
0 8 Bra
2 \x{65e5}\x{672c}\x{8a9e}
8 8 Ket
10 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{65e5}
Need char = \x{8a9e}
/[\x{100}]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{100}
4 4 Ket
6 End
------------------------------------------------------------------
/[Z\x{100}]/8BM
Memory allocation (code space): 76
------------------------------------------------------------------
0 16 Bra
2 [Z\x{100}]
16 16 Ket
18 End
------------------------------------------------------------------
/^[\x{100}\E-\Q\E\x{150}]/B8M
Memory allocation (code space): 52
------------------------------------------------------------------
0 10 Bra
2 ^
3 [\x{100}-\x{150}]
10 10 Ket
12 End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E]/B8M
Memory allocation (code space): 52
------------------------------------------------------------------
0 10 Bra
2 ^
3 [\x{100}-\x{150}]
10 10 Ket
12 End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E/B8M
Failed: missing terminating ] for character class at offset 13
/[\p{L}]/BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 [\p{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\p{^L}]/BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 [\P{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\P{L}]/BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 [\P{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\P{^L}]/BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 [\p{L}]
9 9 Ket
11 End
------------------------------------------------------------------
/[abc\p{L}\x{0660}]/8BM
Memory allocation (code space): 88
------------------------------------------------------------------
0 19 Bra
2 [a-c\p{L}\x{660}]
19 19 Ket
21 End
------------------------------------------------------------------
/[\p{Nd}]/8BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 [\p{Nd}]
9 9 Ket
11 End
------------------------------------------------------------------
/[\p{Nd}+-]+/8BM
Memory allocation (code space): 84
------------------------------------------------------------------
0 18 Bra
2 [+\-\p{Nd}]++
18 18 Ket
20 End
------------------------------------------------------------------
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iBM
Memory allocation (code space): 60
------------------------------------------------------------------
0 12 Bra
2 /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
12 12 Ket
14 End
------------------------------------------------------------------
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8BM
Memory allocation (code space): 60
------------------------------------------------------------------
0 12 Bra
2 A\x{391}\x{10427}\x{ff3a}\x{1fb0}
12 12 Ket
14 End
------------------------------------------------------------------
/[\x{105}-\x{109}]/8iBM
Memory allocation (code space): 48
------------------------------------------------------------------
0 9 Bra
2 [\x{104}-\x{109}]
9 9 Ket
11 End
------------------------------------------------------------------
/( ( (?(1)0|) )* )/xBM
Memory allocation (code space): 104
------------------------------------------------------------------
0 23 Bra
2 19 CBra 1
5 Brazero
6 13 SCBra 2
9 6 Cond
11 1 Cond ref
13 0
15 2 Alt
17 8 Ket
19 13 KetRmax
21 19 Ket
23 23 Ket
25 End
------------------------------------------------------------------
/( (?(1)0|)* )/xBM
Memory allocation (code space): 84
------------------------------------------------------------------
0 18 Bra
2 14 CBra 1
5 Brazero
6 6 SCond
8 1 Cond ref
10 0
12 2 Alt
14 8 KetRmax
16 14 Ket
18 18 Ket
20 End
------------------------------------------------------------------
/[a]/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 a
4 4 Ket
6 End
------------------------------------------------------------------
/[a]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 a
4 4 Ket
6 End
------------------------------------------------------------------
/[\xaa]/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{aa}
4 4 Ket
6 End
------------------------------------------------------------------
/[\xaa]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 \x{aa}
4 4 Ket
6 End
------------------------------------------------------------------
/[^a]/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 [^a]
4 4 Ket
6 End
------------------------------------------------------------------
/[^a]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 [^a]
4 4 Ket
6 End
------------------------------------------------------------------
/[^\xaa]/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 [^\x{aa}]
4 4 Ket
6 End
------------------------------------------------------------------
/[^\xaa]/8BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 4 Bra
2 [^\x{aa}]
4 4 Ket
6 End
------------------------------------------------------------------
/[^\d]/8WB
------------------------------------------------------------------
0 9 Bra
2 [^\p{Nd}]
9 9 Ket
11 End
------------------------------------------------------------------
/[[:^alpha:][:^cntrl:]]+/8WB
------------------------------------------------------------------
0 21 Bra
2 [ -~\x80-\xff\P{L}\x{100}-\x{10ffff}]++
21 21 Ket
23 End
------------------------------------------------------------------
/[[:^cntrl:][:^alpha:]]+/8WB
------------------------------------------------------------------
0 21 Bra
2 [ -~\x80-\xff\x{100}-\x{10ffff}\P{L}]++
21 21 Ket
23 End
------------------------------------------------------------------
/[[:alpha:]]+/8WB
------------------------------------------------------------------
0 10 Bra
2 [\p{L}]++
10 10 Ket
12 End
------------------------------------------------------------------
/[[:^alpha:]\S]+/8WB
------------------------------------------------------------------
0 13 Bra
2 [\P{L}\P{Xsp}]++
13 13 Ket
15 End
------------------------------------------------------------------
/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/B
------------------------------------------------------------------
0 60 Bra
2 abc
8 5 CBra 1
11 d
13 4 Alt
15 e
17 9 Ket
19 *THEN
20 x
22 12 CBra 2
25 123
31 *THEN
32 4
34 24 Alt
36 567
42 5 CBra 3
45 b
47 4 Alt
49 q
51 9 Ket
53 *THEN
54 xx
58 36 Ket
60 60 Ket
62 End
------------------------------------------------------------------
/(((a\2)|(a*)\g<-1>))*a?/B
------------------------------------------------------------------
0 39 Bra
2 Brazero
3 32 SCBra 1
6 27 Once
8 12 CBra 2
11 7 CBra 3
14 a
16 \2
18 7 Ket
20 11 Alt
22 5 CBra 4
25 a*
27 5 Ket
29 22 Recurse
31 23 Ket
33 27 Ket
35 32 KetRmax
37 a?+
39 39 Ket
41 End
------------------------------------------------------------------
/((?+1)(\1))/B
------------------------------------------------------------------
0 20 Bra
2 16 Once
4 12 CBra 1
7 9 Recurse
9 5 CBra 2
12 \1
14 5 Ket
16 12 Ket
18 16 Ket
20 20 Ket
22 End
------------------------------------------------------------------
/.((?2)(?R)\1)()/B
------------------------------------------------------------------
0 23 Bra
2 Any
3 13 Once
5 9 CBra 1
8 18 Recurse
10 0 Recurse
12 \1
14 9 Ket
16 13 Ket
18 3 CBra 2
21 3 Ket
23 23 Ket
25 End
------------------------------------------------------------------
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: missing ) at offset 509
/-- End of testinput11 --/
+771
View File
@@ -0,0 +1,771 @@
/-- These are a few representative patterns whose lengths and offsets are to be
shown when the link size is 2. This is just a doublecheck test to ensure the
sizes don't go horribly wrong when something is changed. The pattern contents
are all themselves checked in other tests. Unicode, including property support,
is required for these tests. --/
/((?i)b)/BM
Memory allocation (code space): 17
------------------------------------------------------------------
0 13 Bra
3 7 CBra 1
8 /i b
10 7 Ket
13 13 Ket
16 End
------------------------------------------------------------------
/(?s)(.*X|^B)/BM
Memory allocation (code space): 25
------------------------------------------------------------------
0 21 Bra
3 9 CBra 1
8 AllAny*
10 X
12 6 Alt
15 ^
16 B
18 15 Ket
21 21 Ket
24 End
------------------------------------------------------------------
/(?s:.*X|^B)/BM
Memory allocation (code space): 23
------------------------------------------------------------------
0 19 Bra
3 7 Bra
6 AllAny*
8 X
10 6 Alt
13 ^
14 B
16 13 Ket
19 19 Ket
22 End
------------------------------------------------------------------
/^[[:alnum:]]/BM
Memory allocation (code space): 41
------------------------------------------------------------------
0 37 Bra
3 ^
4 [0-9A-Za-z]
37 37 Ket
40 End
------------------------------------------------------------------
/#/IxMD
Memory allocation (code space): 7
------------------------------------------------------------------
0 3 Bra
3 3 Ket
6 End
------------------------------------------------------------------
Capturing subpattern count = 0
May match empty string
Options: extended
No first char
No need char
/a#/IxMD
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 a
5 5 Ket
8 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: extended
First char = 'a'
No need char
/x?+/BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 x?+
5 5 Ket
8 End
------------------------------------------------------------------
/x++/BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 x++
5 5 Ket
8 End
------------------------------------------------------------------
/x{1,3}+/BM
Memory allocation (code space): 13
------------------------------------------------------------------
0 9 Bra
3 x
5 x{0,2}+
9 9 Ket
12 End
------------------------------------------------------------------
/(x)*+/BM
Memory allocation (code space): 18
------------------------------------------------------------------
0 14 Bra
3 Braposzero
4 7 CBraPos 1
9 x
11 7 KetRpos
14 14 Ket
17 End
------------------------------------------------------------------
/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/BM
Memory allocation (code space): 120
------------------------------------------------------------------
0 116 Bra
3 ^
4 109 CBra 1
9 7 CBra 2
14 a+
16 7 Ket
19 39 CBra 3
24 [ab]+?
58 39 Ket
61 39 CBra 4
66 [bc]+
100 39 Ket
103 7 CBra 5
108 \w*+
110 7 Ket
113 109 Ket
116 116 Ket
119 End
------------------------------------------------------------------
|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
Memory allocation (code space): 826
------------------------------------------------------------------
0 822 Bra
3 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
821 \b
822 822 Ket
825 End
------------------------------------------------------------------
|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|BM
Memory allocation (code space): 816
------------------------------------------------------------------
0 812 Bra
3 $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
811 \b
812 812 Ket
815 End
------------------------------------------------------------------
/(a(?1)b)/BM
Memory allocation (code space): 22
------------------------------------------------------------------
0 18 Bra
3 12 CBra 1
8 a
10 3 Recurse
13 b
15 12 Ket
18 18 Ket
21 End
------------------------------------------------------------------
/(a(?1)+b)/BM
Memory allocation (code space): 28
------------------------------------------------------------------
0 24 Bra
3 18 CBra 1
8 a
10 6 Once
13 3 Recurse
16 6 KetRmax
19 b
21 18 Ket
24 24 Ket
27 End
------------------------------------------------------------------
/a(?P<name1>b|c)d(?P<longername2>e)/BM
Memory allocation (code space): 36
------------------------------------------------------------------
0 32 Bra
3 a
5 7 CBra 1
10 b
12 5 Alt
15 c
17 12 Ket
20 d
22 7 CBra 2
27 e
29 7 Ket
32 32 Ket
35 End
------------------------------------------------------------------
/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/BM
Memory allocation (code space): 45
------------------------------------------------------------------
0 41 Bra
3 25 Bra
6 a
8 17 CBra 1
13 c
15 7 CBra 2
20 d
22 7 Ket
25 17 Ket
28 25 Ket
31 7 CBra 3
36 a
38 7 Ket
41 41 Ket
44 End
------------------------------------------------------------------
/(?P<a>a)...(?P=a)bbb(?P>a)d/BM
Memory allocation (code space): 62
------------------------------------------------------------------
0 30 Bra
3 7 CBra 1
8 a
10 7 Ket
13 Any
14 Any
15 Any
16 \1
19 bbb
25 3 Recurse
28 d
30 30 Ket
33 End
------------------------------------------------------------------
/abc(?C255)de(?C)f/BM
Memory allocation (code space): 31
------------------------------------------------------------------
0 27 Bra
3 abc
9 Callout 255 10 1
15 de
19 Callout 0 16 1
25 f
27 27 Ket
30 End
------------------------------------------------------------------
/abcde/CBM
Memory allocation (code space): 53
------------------------------------------------------------------
0 49 Bra
3 Callout 255 0 1
9 a
11 Callout 255 1 1
17 b
19 Callout 255 2 1
25 c
27 Callout 255 3 1
33 d
35 Callout 255 4 1
41 e
43 Callout 255 5 0
49 49 Ket
52 End
------------------------------------------------------------------
/\x{100}/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{100}
6 6 Ket
9 End
------------------------------------------------------------------
/\x{1000}/8BM
Memory allocation (code space): 11
------------------------------------------------------------------
0 7 Bra
3 \x{1000}
7 7 Ket
10 End
------------------------------------------------------------------
/\x{10000}/8BM
Memory allocation (code space): 12
------------------------------------------------------------------
0 8 Bra
3 \x{10000}
8 8 Ket
11 End
------------------------------------------------------------------
/\x{100000}/8BM
Memory allocation (code space): 12
------------------------------------------------------------------
0 8 Bra
3 \x{100000}
8 8 Ket
11 End
------------------------------------------------------------------
/\x{10ffff}/8BM
Memory allocation (code space): 12
------------------------------------------------------------------
0 8 Bra
3 \x{10ffff}
8 8 Ket
11 End
------------------------------------------------------------------
/\x{110000}/8BM
Failed: character value in \x{} or \o{} is too large at offset 9
/[\x{ff}]/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{ff}
6 6 Ket
9 End
------------------------------------------------------------------
/[\x{100}]/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{100}
6 6 Ket
9 End
------------------------------------------------------------------
/\x80/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{80}
6 6 Ket
9 End
------------------------------------------------------------------
/\xff/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{ff}
6 6 Ket
9 End
------------------------------------------------------------------
/\x{0041}\x{2262}\x{0391}\x{002e}/D8M
Memory allocation (code space): 18
------------------------------------------------------------------
0 14 Bra
3 A\x{2262}\x{391}.
14 14 Ket
17 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = '.'
/\x{D55c}\x{ad6d}\x{C5B4}/D8M
Memory allocation (code space): 19
------------------------------------------------------------------
0 15 Bra
3 \x{d55c}\x{ad6d}\x{c5b4}
15 15 Ket
18 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ed}
Need char = \x{b4}
/\x{65e5}\x{672c}\x{8a9e}/D8M
Memory allocation (code space): 19
------------------------------------------------------------------
0 15 Bra
3 \x{65e5}\x{672c}\x{8a9e}
15 15 Ket
18 End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{e6}
Need char = \x{9e}
/[\x{100}]/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{100}
6 6 Ket
9 End
------------------------------------------------------------------
/[Z\x{100}]/8BM
Memory allocation (code space): 47
------------------------------------------------------------------
0 43 Bra
3 [Z\x{100}]
43 43 Ket
46 End
------------------------------------------------------------------
/^[\x{100}\E-\Q\E\x{150}]/B8M
Memory allocation (code space): 18
------------------------------------------------------------------
0 14 Bra
3 ^
4 [\x{100}-\x{150}]
14 14 Ket
17 End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E]/B8M
Memory allocation (code space): 18
------------------------------------------------------------------
0 14 Bra
3 ^
4 [\x{100}-\x{150}]
14 14 Ket
17 End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E/B8M
Failed: missing terminating ] for character class at offset 15
/[\p{L}]/BM
Memory allocation (code space): 15
------------------------------------------------------------------
0 11 Bra
3 [\p{L}]
11 11 Ket
14 End
------------------------------------------------------------------
/[\p{^L}]/BM
Memory allocation (code space): 15
------------------------------------------------------------------
0 11 Bra
3 [\P{L}]
11 11 Ket
14 End
------------------------------------------------------------------
/[\P{L}]/BM
Memory allocation (code space): 15
------------------------------------------------------------------
0 11 Bra
3 [\P{L}]
11 11 Ket
14 End
------------------------------------------------------------------
/[\P{^L}]/BM
Memory allocation (code space): 15
------------------------------------------------------------------
0 11 Bra
3 [\p{L}]
11 11 Ket
14 End
------------------------------------------------------------------
/[abc\p{L}\x{0660}]/8BM
Memory allocation (code space): 50
------------------------------------------------------------------
0 46 Bra
3 [a-c\p{L}\x{660}]
46 46 Ket
49 End
------------------------------------------------------------------
/[\p{Nd}]/8BM
Memory allocation (code space): 15
------------------------------------------------------------------
0 11 Bra
3 [\p{Nd}]
11 11 Ket
14 End
------------------------------------------------------------------
/[\p{Nd}+-]+/8BM
Memory allocation (code space): 48
------------------------------------------------------------------
0 44 Bra
3 [+\-\p{Nd}]++
44 44 Ket
47 End
------------------------------------------------------------------
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iBM
Memory allocation (code space): 25
------------------------------------------------------------------
0 21 Bra
3 /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
21 21 Ket
24 End
------------------------------------------------------------------
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8BM
Memory allocation (code space): 25
------------------------------------------------------------------
0 21 Bra
3 A\x{391}\x{10427}\x{ff3a}\x{1fb0}
21 21 Ket
24 End
------------------------------------------------------------------
/[\x{105}-\x{109}]/8iBM
Memory allocation (code space): 17
------------------------------------------------------------------
0 13 Bra
3 [\x{104}-\x{109}]
13 13 Ket
16 End
------------------------------------------------------------------
/( ( (?(1)0|) )* )/xBM
Memory allocation (code space): 38
------------------------------------------------------------------
0 34 Bra
3 28 CBra 1
8 Brazero
9 19 SCBra 2
14 8 Cond
17 1 Cond ref
20 0
22 3 Alt
25 11 Ket
28 19 KetRmax
31 28 Ket
34 34 Ket
37 End
------------------------------------------------------------------
/( (?(1)0|)* )/xBM
Memory allocation (code space): 30
------------------------------------------------------------------
0 26 Bra
3 20 CBra 1
8 Brazero
9 8 SCond
12 1 Cond ref
15 0
17 3 Alt
20 11 KetRmax
23 20 Ket
26 26 Ket
29 End
------------------------------------------------------------------
/[a]/BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 a
5 5 Ket
8 End
------------------------------------------------------------------
/[a]/8BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 a
5 5 Ket
8 End
------------------------------------------------------------------
/[\xaa]/BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 \x{aa}
5 5 Ket
8 End
------------------------------------------------------------------
/[\xaa]/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 \x{aa}
6 6 Ket
9 End
------------------------------------------------------------------
/[^a]/BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 [^a]
5 5 Ket
8 End
------------------------------------------------------------------
/[^a]/8BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 [^a]
5 5 Ket
8 End
------------------------------------------------------------------
/[^\xaa]/BM
Memory allocation (code space): 9
------------------------------------------------------------------
0 5 Bra
3 [^\x{aa}]
5 5 Ket
8 End
------------------------------------------------------------------
/[^\xaa]/8BM
Memory allocation (code space): 10
------------------------------------------------------------------
0 6 Bra
3 [^\x{aa}]
6 6 Ket
9 End
------------------------------------------------------------------
/[^\d]/8WB
------------------------------------------------------------------
0 11 Bra
3 [^\p{Nd}]
11 11 Ket
14 End
------------------------------------------------------------------
/[[:^alpha:][:^cntrl:]]+/8WB
------------------------------------------------------------------
0 51 Bra
3 [ -~\x80-\xff\P{L}\x{100}-\x{10ffff}]++
51 51 Ket
54 End
------------------------------------------------------------------
/[[:^cntrl:][:^alpha:]]+/8WB
------------------------------------------------------------------
0 51 Bra
3 [ -~\x80-\xff\x{100}-\x{10ffff}\P{L}]++
51 51 Ket
54 End
------------------------------------------------------------------
/[[:alpha:]]+/8WB
------------------------------------------------------------------
0 12 Bra
3 [\p{L}]++
12 12 Ket
15 End
------------------------------------------------------------------
/[[:^alpha:]\S]+/8WB
------------------------------------------------------------------
0 15 Bra
3 [\P{L}\P{Xsp}]++
15 15 Ket
18 End
------------------------------------------------------------------
/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/B
------------------------------------------------------------------
0 73 Bra
3 abc
9 7 CBra 1
14 d
16 5 Alt
19 e
21 12 Ket
24 *THEN
25 x
27 14 CBra 2
32 123
38 *THEN
39 4
41 29 Alt
44 567
50 7 CBra 3
55 b
57 5 Alt
60 q
62 12 Ket
65 *THEN
66 xx
70 43 Ket
73 73 Ket
76 End
------------------------------------------------------------------
/(((a\2)|(a*)\g<-1>))*a?/B
------------------------------------------------------------------
0 57 Bra
3 Brazero
4 48 SCBra 1
9 40 Once
12 18 CBra 2
17 10 CBra 3
22 a
24 \2
27 10 Ket
30 16 Alt
33 7 CBra 4
38 a*
40 7 Ket
43 33 Recurse
46 34 Ket
49 40 Ket
52 48 KetRmax
55 a?+
57 57 Ket
60 End
------------------------------------------------------------------
/((?+1)(\1))/B
------------------------------------------------------------------
0 31 Bra
3 25 Once
6 19 CBra 1
11 14 Recurse
14 8 CBra 2
19 \1
22 8 Ket
25 19 Ket
28 25 Ket
31 31 Ket
34 End
------------------------------------------------------------------
/.((?2)(?R)\1)()/B
------------------------------------------------------------------
0 35 Bra
3 Any
4 20 Once
7 14 CBra 1
12 27 Recurse
15 0 Recurse
18 \1
21 14 Ket
24 20 Ket
27 5 CBra 2
32 5 Ket
35 35 Ket
38 End
------------------------------------------------------------------
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: missing ) at offset 509
/-- End of testinput11 --/
File diff suppressed because one or more lines are too long
+22
View File
@@ -0,0 +1,22 @@
/-- This test is run only when JIT support is not available. It checks that an
attempt to use it has the expected behaviour. It also tests things that
are different without JIT. --/
/abc/S+I
Capturing subpattern count = 0
No options
First char = 'a'
Need char = 'c'
Subject length lower bound = 3
No starting char list
JIT support is not available in this version of PCRE
/a*/SI
Capturing subpattern count = 0
May match empty string
No options
No first char
No need char
Study returned NULL
/-- End of testinput13 --/
+532
View File
@@ -0,0 +1,532 @@
/-- This set of tests is run only with the 8-bit library. They do not require
UTF-8 or Unicode property support. The file starts with all the tests of
the POSIX interface, because that is supported only with the 8-bit library.
--/
< forbid 8W
/abc/P
abc
0: abc
*** Failers
No match: POSIX code 17: match failed
/^abc|def/P
abcdef
0: abc
abcdef\B
0: def
/.*((abc)$|(def))/P
defabc
0: defabc
1: abc
2: abc
\Zdefabc
0: def
1: def
3: def
/the quick brown fox/P
the quick brown fox
0: the quick brown fox
*** Failers
No match: POSIX code 17: match failed
The Quick Brown Fox
No match: POSIX code 17: match failed
/the quick brown fox/Pi
the quick brown fox
0: the quick brown fox
The Quick Brown Fox
0: The Quick Brown Fox
/abc.def/P
*** Failers
No match: POSIX code 17: match failed
abc\ndef
No match: POSIX code 17: match failed
/abc$/P
abc
0: abc
abc\n
0: abc
/(abc)\2/P
Failed: POSIX code 15: bad back reference at offset 7
/(abc\1)/P
abc
No match: POSIX code 17: match failed
/a*(b+)(z)(z)/P
aaaabbbbzzzz
0: aaaabbbbzz
1: bbbb
2: z
3: z
aaaabbbbzzzz\O0
aaaabbbbzzzz\O1
0: aaaabbbbzz
aaaabbbbzzzz\O2
0: aaaabbbbzz
1: bbbb
aaaabbbbzzzz\O3
0: aaaabbbbzz
1: bbbb
2: z
aaaabbbbzzzz\O4
0: aaaabbbbzz
1: bbbb
2: z
3: z
aaaabbbbzzzz\O5
0: aaaabbbbzz
1: bbbb
2: z
3: z
/ab.cd/P
ab-cd
0: ab-cd
ab=cd
0: ab=cd
** Failers
No match: POSIX code 17: match failed
ab\ncd
No match: POSIX code 17: match failed
/ab.cd/Ps
ab-cd
0: ab-cd
ab=cd
0: ab=cd
ab\ncd
0: ab\x0acd
/a(b)c/PN
abc
Matched with REG_NOSUB
/a(?P<name>b)c/PN
abc
Matched with REG_NOSUB
/a?|b?/P
abc
0: a
** Failers
0:
ddd\N
No match: POSIX code 17: match failed
/\w+A/P
CDAAAAB
0: CDAAAA
/\w+A/PU
CDAAAAB
0: CDA
/\Biss\B/I+P
Mississippi
0: iss
0+ issippi
/abc/\P
Failed: POSIX code 9: bad escape sequence at offset 4
/-- End of POSIX tests --/
/a\Cb/
aXb
0: aXb
a\nb
0: a\x0ab
** Failers (too big char)
No match
A\x{123}B
** Character \x{123} is greater than 255 and UTF-8 mode is not enabled.
** Truncation will probably give the wrong result.
No match
A\o{443}B
** Character \x{123} is greater than 255 and UTF-8 mode is not enabled.
** Truncation will probably give the wrong result.
No match
/\x{100}/I
Failed: character value in \x{} or \o{} is too large at offset 6
/\o{400}/I
Failed: character value in \x{} or \o{} is too large at offset 6
/ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # one word, optionally followed by....
(?:
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
\(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) | # comments, or...
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
# quoted strings
)*
< (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # leading <
(?: @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* , (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
)* # further okay, if led by comma
: # closing colon
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* )? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
/xSI
Capturing subpattern count = 0
Contains explicit CR or LF match
Options: extended
No first char
No need char
Subject length lower bound = 3
Starting chars: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8
9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e
f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
/-- Although this saved pattern was compiled with link-size=2, it does no harm
to run this test with other link sizes because it is going to generated a
"compiled in wrong mode" error as soon as it is loaded, so the link size does
not matter. --/
<!testsaved16
Compiled pattern loaded from testsaved16
No study data
Error -28 from pcre_fullinfo(0)
Running in 8-bit mode but pattern was compiled in 16-bit mode
<!testsaved32
Compiled pattern loaded from testsaved32
No study data
Error -28 from pcre_fullinfo(0)
Running in 8-bit mode but pattern was compiled in 32-bit mode
/\h/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x09 \x20 \xa0
/\H/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
No starting char list
/\v/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85
/\V/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
No starting char list
/\R/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85
/[\h]/BZ
------------------------------------------------------------------
Bra
[\x09 \xa0]
Ket
End
------------------------------------------------------------------
>\x09<
0: \x09
/[\h]+/BZ
------------------------------------------------------------------
Bra
[\x09 \xa0]++
Ket
End
------------------------------------------------------------------
>\x09\x20\xa0<
0: \x09 \xa0
/[\v]/BZ
------------------------------------------------------------------
Bra
[\x0a-\x0d\x85]
Ket
End
------------------------------------------------------------------
/[\H]/BZ
------------------------------------------------------------------
Bra
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff]
Ket
End
------------------------------------------------------------------
/[^\h]/BZ
------------------------------------------------------------------
Bra
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg)
Ket
End
------------------------------------------------------------------
/[\V]/BZ
------------------------------------------------------------------
Bra
[\x00-\x09\x0e-\x84\x86-\xff]
Ket
End
------------------------------------------------------------------
/[\x0a\V]/BZ
------------------------------------------------------------------
Bra
[\x00-\x0a\x0e-\x84\x86-\xff]
Ket
End
------------------------------------------------------------------
/\777/I
Failed: octal value is greater than \377 in 8-bit non-UTF-8 mode at offset 3
/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K
Failed: name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) at offset 259
/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K
XX
0: XX
MK: 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE
/\u0100/<JS>
Failed: character value in \u.... sequence is too large at offset 5
/[\u0100-\u0200]/<JS>
Failed: character value in \u.... sequence is too large at offset 6
/[^\x00-a]{12,}[^b-\xff]*/BZ
------------------------------------------------------------------
Bra
[b-\xff] (neg){12,}+
[\x00-a] (neg)*+
Ket
End
------------------------------------------------------------------
/[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/BZ
------------------------------------------------------------------
Bra
[\x00-\x08\x0e-\x1f!-\xff] (neg)*+
\s*
[0-9A-Z_a-z]++
\W+
[\x00-/:-\xff] (neg)*+
\d
0
[\x00-/:-@[-^`{-\xff] (neg){4,6}+
\w*
A
Ket
End
------------------------------------------------------------------
/(?'ABC'[bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar](*THEN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
/-- End of testinput14 --/
+1144
View File
@@ -0,0 +1,1144 @@
/-- This set of tests is for UTF-8 support but not Unicode property support,
and is relevant only to the 8-bit library. --/
< forbid W
/X(\C{3})/8
X\x{1234}
0: X\x{1234}
1: \x{1234}
/X(\C{4})/8
X\x{1234}YZ
0: X\x{1234}Y
1: \x{1234}Y
/X\C*/8
XYZabcdce
0: XYZabcdce
/X\C*?/8
XYZabcde
0: X
/X\C{3,5}/8
Xabcdefg
0: Xabcde
X\x{1234}
0: X\x{1234}
X\x{1234}YZ
0: X\x{1234}YZ
X\x{1234}\x{512}
0: X\x{1234}\x{512}
X\x{1234}\x{512}YZ
0: X\x{1234}\x{512}
/X\C{3,5}?/8
Xabcdefg
0: Xabc
X\x{1234}
0: X\x{1234}
X\x{1234}YZ
0: X\x{1234}
X\x{1234}\x{512}
0: X\x{1234}
/a\Cb/8
aXb
0: aXb
a\nb
0: a\x{0a}b
/a\C\Cb/8
a\x{100}b
0: a\x{100}b
/ab\Cde/8
abXde
0: abXde
/a\C\Cb/8
a\x{100}b
0: a\x{100}b
** Failers
No match
a\x{12257}b
No match
/[Ã]/8
Failed: invalid UTF-8 string at offset 1
/Ã/8
Failed: invalid UTF-8 string at offset 0
/ÃÃÃxxx/8
Failed: invalid UTF-8 string at offset 0
/ÃÃÃxxx/8?DZSSO
------------------------------------------------------------------
Bra
\X{c0}\X{c0}\X{c0}xxx
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: no_auto_possessify utf no_utf_check
First char = \x{c3}
Need char = 'x'
/badutf/8
\xdf
Error -10 (bad UTF-8 string) offset=0 reason=1
\xef
Error -10 (bad UTF-8 string) offset=0 reason=2
\xef\x80
Error -10 (bad UTF-8 string) offset=0 reason=1
\xf7
Error -10 (bad UTF-8 string) offset=0 reason=3
\xf7\x80
Error -10 (bad UTF-8 string) offset=0 reason=2
\xf7\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=1
\xfb
Error -10 (bad UTF-8 string) offset=0 reason=4
\xfb\x80
Error -10 (bad UTF-8 string) offset=0 reason=3
\xfb\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=2
\xfb\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=1
\xfd
Error -10 (bad UTF-8 string) offset=0 reason=5
\xfd\x80
Error -10 (bad UTF-8 string) offset=0 reason=4
\xfd\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=3
\xfd\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=2
\xfd\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=1
\xdf\x7f
Error -10 (bad UTF-8 string) offset=0 reason=6
\xef\x7f\x80
Error -10 (bad UTF-8 string) offset=0 reason=6
\xef\x80\x7f
Error -10 (bad UTF-8 string) offset=0 reason=7
\xf7\x7f\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=6
\xf7\x80\x7f\x80
Error -10 (bad UTF-8 string) offset=0 reason=7
\xf7\x80\x80\x7f
Error -10 (bad UTF-8 string) offset=0 reason=8
\xfb\x7f\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=6
\xfb\x80\x7f\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=7
\xfb\x80\x80\x7f\x80
Error -10 (bad UTF-8 string) offset=0 reason=8
\xfb\x80\x80\x80\x7f
Error -10 (bad UTF-8 string) offset=0 reason=9
\xfd\x7f\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=6
\xfd\x80\x7f\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=7
\xfd\x80\x80\x7f\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=8
\xfd\x80\x80\x80\x7f\x80
Error -10 (bad UTF-8 string) offset=0 reason=9
\xfd\x80\x80\x80\x80\x7f
Error -10 (bad UTF-8 string) offset=0 reason=10
\xed\xa0\x80
Error -10 (bad UTF-8 string) offset=0 reason=14
\xc0\x8f
Error -10 (bad UTF-8 string) offset=0 reason=15
\xe0\x80\x8f
Error -10 (bad UTF-8 string) offset=0 reason=16
\xf0\x80\x80\x8f
Error -10 (bad UTF-8 string) offset=0 reason=17
\xf8\x80\x80\x80\x8f
Error -10 (bad UTF-8 string) offset=0 reason=18
\xfc\x80\x80\x80\x80\x8f
Error -10 (bad UTF-8 string) offset=0 reason=19
\x80
Error -10 (bad UTF-8 string) offset=0 reason=20
\xfe
Error -10 (bad UTF-8 string) offset=0 reason=21
\xff
Error -10 (bad UTF-8 string) offset=0 reason=21
/badutf/8
\xfb\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=11
\xfd\x80\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=12
\xf7\xbf\xbf\xbf
Error -10 (bad UTF-8 string) offset=0 reason=13
/shortutf/8
\P\P\xdf
Error -25 (short UTF-8 string) offset=0 reason=1
\P\P\xef
Error -25 (short UTF-8 string) offset=0 reason=2
\P\P\xef\x80
Error -25 (short UTF-8 string) offset=0 reason=1
\P\P\xf7
Error -25 (short UTF-8 string) offset=0 reason=3
\P\P\xf7\x80
Error -25 (short UTF-8 string) offset=0 reason=2
\P\P\xf7\x80\x80
Error -25 (short UTF-8 string) offset=0 reason=1
\P\P\xfb
Error -25 (short UTF-8 string) offset=0 reason=4
\P\P\xfb\x80
Error -25 (short UTF-8 string) offset=0 reason=3
\P\P\xfb\x80\x80
Error -25 (short UTF-8 string) offset=0 reason=2
\P\P\xfb\x80\x80\x80
Error -25 (short UTF-8 string) offset=0 reason=1
\P\P\xfd
Error -25 (short UTF-8 string) offset=0 reason=5
\P\P\xfd\x80
Error -25 (short UTF-8 string) offset=0 reason=4
\P\P\xfd\x80\x80
Error -25 (short UTF-8 string) offset=0 reason=3
\P\P\xfd\x80\x80\x80
Error -25 (short UTF-8 string) offset=0 reason=2
\P\P\xfd\x80\x80\x80\x80
Error -25 (short UTF-8 string) offset=0 reason=1
/anything/8
\xc0\x80
Error -10 (bad UTF-8 string) offset=0 reason=15
\xc1\x8f
Error -10 (bad UTF-8 string) offset=0 reason=15
\xe0\x9f\x80
Error -10 (bad UTF-8 string) offset=0 reason=16
\xf0\x8f\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=17
\xf8\x87\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=18
\xfc\x83\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=19
\xfe\x80\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=21
\xff\x80\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=21
\xc3\x8f
No match
\xe0\xaf\x80
No match
\xe1\x80\x80
No match
\xf0\x9f\x80\x80
No match
\xf1\x8f\x80\x80
No match
\xf8\x88\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=11
\xf9\x87\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=11
\xfc\x84\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=12
\xfd\x83\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=12
\?\xf8\x88\x80\x80\x80
No match
\?\xf9\x87\x80\x80\x80
No match
\?\xfc\x84\x80\x80\x80\x80
No match
\?\xfd\x83\x80\x80\x80\x80
No match
/\x{100}/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{80}
/\x{1000}/8DZ
------------------------------------------------------------------
Bra
\x{1000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{e1}
Need char = \x{80}
/\x{10000}/8DZ
------------------------------------------------------------------
Bra
\x{10000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{f0}
Need char = \x{80}
/\x{100000}/8DZ
------------------------------------------------------------------
Bra
\x{100000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{f4}
Need char = \x{80}
/\x{10ffff}/8DZ
------------------------------------------------------------------
Bra
\x{10ffff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{f4}
Need char = \x{bf}
/[\x{ff}]/8DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c3}
Need char = \x{bf}
/[\x{100}]/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{80}
/\x80/8DZ
------------------------------------------------------------------
Bra
\x{80}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c2}
Need char = \x{80}
/\xff/8DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c3}
Need char = \x{bf}
/\x{D55c}\x{ad6d}\x{C5B4}/DZ8
------------------------------------------------------------------
Bra
\x{d55c}\x{ad6d}\x{c5b4}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ed}
Need char = \x{b4}
\x{D55c}\x{ad6d}\x{C5B4}
0: \x{d55c}\x{ad6d}\x{c5b4}
/\x{65e5}\x{672c}\x{8a9e}/DZ8
------------------------------------------------------------------
Bra
\x{65e5}\x{672c}\x{8a9e}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{e6}
Need char = \x{9e}
\x{65e5}\x{672c}\x{8a9e}
0: \x{65e5}\x{672c}\x{8a9e}
/\x{80}/DZ8
------------------------------------------------------------------
Bra
\x{80}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c2}
Need char = \x{80}
/\x{084}/DZ8
------------------------------------------------------------------
Bra
\x{84}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c2}
Need char = \x{84}
/\x{104}/DZ8
------------------------------------------------------------------
Bra
\x{104}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{84}
/\x{861}/DZ8
------------------------------------------------------------------
Bra
\x{861}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{e0}
Need char = \x{a1}
/\x{212ab}/DZ8
------------------------------------------------------------------
Bra
\x{212ab}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{f0}
Need char = \x{ab}
/-- This one is here not because it's different to Perl, but because the way
the captured single-byte is displayed. (In Perl it becomes a character, and you
can't tell the difference.) --/
/X(\C)(.*)/8
X\x{1234}
0: X\x{1234}
1: \x{e1}
2: \x{88}\x{b4}
X\nabc
0: X\x{0a}abc
1: \x{0a}
2: abc
/-- This one is here because Perl gives out a grumbly error message (quite
correctly, but that messes up comparisons). --/
/a\Cb/8
*** Failers
No match
a\x{100}b
No match
/[^ab\xC0-\xF0]/8SDZ
------------------------------------------------------------------
Bra
[\x00-`c-\xbf\xf1-\xff] (neg)
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
\x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19
\x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4
5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y
Z [ \ ] ^ _ ` c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
\xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0
\xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf
\xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee
\xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd
\xfe \xff
\x{f1}
0: \x{f1}
\x{bf}
0: \x{bf}
\x{100}
0: \x{100}
\x{1000}
0: \x{1000}
*** Failers
0: *
\x{c0}
No match
\x{f0}
No match
/Ä€{3,4}/8SDZ
------------------------------------------------------------------
Bra
\x{100}{3}
\x{100}?+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{80}
Subject length lower bound = 3
No starting char list
\x{100}\x{100}\x{100}\x{100\x{100}
0: \x{100}\x{100}\x{100}
/(\x{100}+|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}++
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: x \xc4
/(\x{100}*a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}*+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: a x \xc4
/(\x{100}{0,2}a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}{0,2}+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: a x \xc4
/(\x{100}{1,2}a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}
\x{100}{0,1}+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: x \xc4
/\x{100}/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{80}
/a\x{100}\x{101}*/8DZ
------------------------------------------------------------------
Bra
a\x{100}
\x{101}*+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = \x{80}
/a\x{100}\x{101}+/8DZ
------------------------------------------------------------------
Bra
a\x{100}
\x{101}++
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = \x{81}
/[^\x{c4}]/DZ
------------------------------------------------------------------
Bra
[^\x{c4}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[\x{100}]/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{80}
\x{100}
0: \x{100}
Z\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[\xff]/DZ8
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c3}
Need char = \x{bf}
>\x{ff}<
0: \x{ff}
/[^\xff]/8DZ
------------------------------------------------------------------
Bra
[^\x{ff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}abc(xyz(?1))/8DZ
------------------------------------------------------------------
Bra
\x{100}abc
CBra 1
xyz
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
First char = \x{c4}
Need char = 'z'
/a\x{1234}b/P8
a\x{1234}b
0: a\x{1234}b
/\777/8I
Capturing subpattern count = 0
Options: utf
First char = \x{c7}
Need char = \x{bf}
\x{1ff}
0: \x{1ff}
\777
0: \x{1ff}
/\x{100}+\x{200}/8DZ
------------------------------------------------------------------
Bra
\x{100}++
\x{200}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = \x{80}
/\x{100}+X/8DZ
------------------------------------------------------------------
Bra
\x{100}++
X
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c4}
Need char = 'X'
/^[\QÄ€\E-\QÅ\E/BZ8
Failed: missing terminating ] for character class at offset 15
/-- This tests the stricter UTF-8 check according to RFC 3629. --/
/X/8
\x{d800}
Error -10 (bad UTF-8 string) offset=0 reason=14
\x{d800}\?
No match
\x{da00}
Error -10 (bad UTF-8 string) offset=0 reason=14
\x{da00}\?
No match
\x{dfff}
Error -10 (bad UTF-8 string) offset=0 reason=14
\x{dfff}\?
No match
\x{110000}
Error -10 (bad UTF-8 string) offset=0 reason=13
\x{110000}\?
No match
\x{2000000}
Error -10 (bad UTF-8 string) offset=0 reason=11
\x{2000000}\?
No match
\x{7fffffff}
Error -10 (bad UTF-8 string) offset=0 reason=12
\x{7fffffff}\?
No match
/(*UTF8)\x{1234}/
abcd\x{1234}pqr
0: \x{1234}
/(*CRLF)(*UTF)(*BSR_UNICODE)a\Rb/I
Capturing subpattern count = 0
Options: bsr_unicode utf
Forced newline sequence: CRLF
First char = 'a'
Need char = 'b'
/\h/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x09 \x20 \xc2 \xe1 \xe2 \xe3
ABC\x{09}
0: \x{09}
ABC\x{20}
0:
ABC\x{a0}
0: \x{a0}
ABC\x{1680}
0: \x{1680}
ABC\x{180e}
0: \x{180e}
ABC\x{2000}
0: \x{2000}
ABC\x{202f}
0: \x{202f}
ABC\x{205f}
0: \x{205f}
ABC\x{3000}
0: \x{3000}
/\v/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \xc2 \xe2
ABC\x{0a}
0: \x{0a}
ABC\x{0b}
0: \x{0b}
ABC\x{0c}
0: \x{0c}
ABC\x{0d}
0: \x{0d}
ABC\x{85}
0: \x{85}
ABC\x{2028}
0: \x{2028}
/\h*A/SI8
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
Subject length lower bound = 1
Starting chars: \x09 \x20 A \xc2 \xe1 \xe2 \xe3
CDBABC
0: A
/\v+A/SI8
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
Subject length lower bound = 2
Starting chars: \x0a \x0b \x0c \x0d \xc2 \xe2
/\s?xxx\s/8SI
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'x'
Subject length lower bound = 4
Starting chars: \x09 \x0a \x0b \x0c \x0d \x20 x
/\sxxx\s/I8ST1
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'x'
Subject length lower bound = 5
Starting chars: \x09 \x0a \x0b \x0c \x0d \x20 \xc2
AB\x{85}xxx\x{a0}XYZ
0: \x{85}xxx\x{a0}
AB\x{a0}xxx\x{85}XYZ
0: \x{a0}xxx\x{85}
/\S \S/I8ST1
Capturing subpattern count = 0
Options: utf
No first char
Need char = ' '
Subject length lower bound = 3
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0e \x0f
\x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d \x1e
\x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C
D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h
i j k l m n o p q r s t u v w x y z { | } ~ \x7f \xc0 \xc1 \xc2 \xc3 \xc4
\xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3
\xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf \xe0 \xe1 \xe2
\xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef \xf0 \xf1
\xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff
\x{a2} \x{84}
0: \x{a2} \x{84}
A Z
0: A Z
/a+/8
a\x{123}aa\>1
0: aa
a\x{123}aa\>2
Error -11 (bad UTF-8 offset)
a\x{123}aa\>3
0: aa
a\x{123}aa\>4
0: a
a\x{123}aa\>5
No match
a\x{123}aa\>6
Error -24 (bad offset value)
/\x{1234}+/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \xe1
/\x{1234}+?/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \xe1
/\x{1234}++/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \xe1
/\x{1234}{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 2
Starting chars: \xe1
/[^\x{c4}]/8DZ
------------------------------------------------------------------
Bra
[^\x{c4}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/X+\x{200}/8DZ
------------------------------------------------------------------
Bra
X++
\x{200}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'X'
Need char = \x{80}
/\R/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \xc2 \xe2
/\777/8DZ
------------------------------------------------------------------
Bra
\x{1ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{c7}
Need char = \x{bf}
/\w+\x{C4}/8BZ
------------------------------------------------------------------
Bra
\w++
\x{c4}
Ket
End
------------------------------------------------------------------
a\x{C4}\x{C4}
0: a\x{c4}
/\w+\x{C4}/8BZT1
------------------------------------------------------------------
Bra
\w+
\x{c4}
Ket
End
------------------------------------------------------------------
a\x{C4}\x{C4}
0: a\x{c4}\x{c4}
/\W+\x{C4}/8BZ
------------------------------------------------------------------
Bra
\W+
\x{c4}
Ket
End
------------------------------------------------------------------
!\x{C4}
0: !\x{c4}
/\W+\x{C4}/8BZT1
------------------------------------------------------------------
Bra
\W++
\x{c4}
Ket
End
------------------------------------------------------------------
!\x{C4}
0: !\x{c4}
/\W+\x{A1}/8BZ
------------------------------------------------------------------
Bra
\W+
\x{a1}
Ket
End
------------------------------------------------------------------
!\x{A1}
0: !\x{a1}
/\W+\x{A1}/8BZT1
------------------------------------------------------------------
Bra
\W+
\x{a1}
Ket
End
------------------------------------------------------------------
!\x{A1}
0: !\x{a1}
/X\s+\x{A0}/8BZ
------------------------------------------------------------------
Bra
X
\s++
\x{a0}
Ket
End
------------------------------------------------------------------
X\x20\x{A0}\x{A0}
0: X \x{a0}
/X\s+\x{A0}/8BZT1
------------------------------------------------------------------
Bra
X
\s+
\x{a0}
Ket
End
------------------------------------------------------------------
X\x20\x{A0}\x{A0}
0: X \x{a0}\x{a0}
/\S+\x{A0}/8BZ
------------------------------------------------------------------
Bra
\S+
\x{a0}
Ket
End
------------------------------------------------------------------
X\x{A0}\x{A0}
0: X\x{a0}\x{a0}
/\S+\x{A0}/8BZT1
------------------------------------------------------------------
Bra
\S++
\x{a0}
Ket
End
------------------------------------------------------------------
X\x{A0}\x{A0}
0: X\x{a0}
/\x{a0}+\s!/8BZ
------------------------------------------------------------------
Bra
\x{a0}++
\s
!
Ket
End
------------------------------------------------------------------
\x{a0}\x20!
0: \x{a0} !
/\x{a0}+\s!/8BZT1
------------------------------------------------------------------
Bra
\x{a0}+
\s
!
Ket
End
------------------------------------------------------------------
\x{a0}\x20!
0: \x{a0} !
/A/8
\x{ff000041}
** Character \x{ff000041} is greater than 0x7fffffff and so cannot be converted to UTF-8
\x{7f000041}
Error -10 (bad UTF-8 string) offset=0 reason=12
/(*UTF8)abc/9
Failed: setting UTF is disabled by the application at offset 0
/abc/89
Failed: setting UTF is disabled by the application at offset 0
//8+L
\xf1\xad\xae\xae
0:
0+ \x{6dbae}
/-- End of testinput15 --/
+193
View File
@@ -0,0 +1,193 @@
/-- This set of tests is run only with the 8-bit library when Unicode property
support is available. It starts with tests of the POSIX interface, because
that is supported only with the 8-bit library. --/
/\w/P
+++\x{c2}
No match: POSIX code 17: match failed
/\w/WP
+++\x{c2}
0: \xc2
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ
------------------------------------------------------------------
Bra
/i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
First char = 'A' (caseless)
No need char
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ
------------------------------------------------------------------
Bra
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = \x{b0}
/AB\x{1fb0}/8DZ
------------------------------------------------------------------
Bra
AB\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = \x{b0}
/AB\x{1fb0}/8DZi
------------------------------------------------------------------
Bra
/i AB\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
First char = 'A' (caseless)
Need char = 'B' (caseless)
/\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 17
Starting chars: \xd0 \xd1
\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
0: \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
\x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
0: \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
/[ⱥ]/8iBZ
------------------------------------------------------------------
Bra
/i \x{2c65}
Ket
End
------------------------------------------------------------------
/[^ⱥ]/8iBZ
------------------------------------------------------------------
Bra
/i [^\x{2c65}]
Ket
End
------------------------------------------------------------------
/\h/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x09 \x20 \xa0
/\v/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85
/\R/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85
/[[:blank:]]/WBZ
------------------------------------------------------------------
Bra
[\x09 \xa0]
Ket
End
------------------------------------------------------------------
/\x{212a}+/i8SI
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: K k \xe2
KKkk\x{212a}
0: KKkk\x{212a}
/s+/i8SI
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: S s \xc5
SSss\x{17f}
0: SSss\x{17f}
/[\W\p{Any}]/BZ
------------------------------------------------------------------
Bra
[\x00-/:-@[-^`{-\xff\p{Any}]
Ket
End
------------------------------------------------------------------
abc
0: a
123
0: 1
/[\W\pL]/BZ
------------------------------------------------------------------
Bra
[\x00-/:-@[-^`{-\xff\p{L}]
Ket
End
------------------------------------------------------------------
abc
0: a
** Failers
0: *
123
No match
/[\D]/8
\x{1d7cf}
0: \x{1d7cf}
/[\D\P{Nd}]/8
\x{1d7cf}
0: \x{1d7cf}
/[^\D]/8
a9b
0: 9
** Failers
No match
\x{1d7cf}
No match
/[^\D\P{Nd}]/8
a9b
0: 9
\x{1d7cf}
0: \x{1d7cf}
** Failers
No match
\x{10000}
No match
/-- End of testinput16 --/
File diff suppressed because one or more lines are too long
+1026
View File
@@ -0,0 +1,1026 @@
/-- This set of tests is for UTF-16 and UTF-32 support, and is relevant only to
the 16- and 32-bit libraries. --/
< forbid W
/ÃÃÃxxx/8?DZSS
**Failed: invalid UTF-8 string cannot be converted to UTF-16
/abc/8
Ã]
**Failed: invalid UTF-8 string cannot be used as input in UTF mode
/X(\C{3})/8
X\x{11234}Y
0: X\x{11234}Y
1: \x{11234}Y
X\x{11234}YZ
0: X\x{11234}Y
1: \x{11234}Y
/X(\C{4})/8
X\x{11234}YZ
0: X\x{11234}YZ
1: \x{11234}YZ
X\x{11234}YZW
0: X\x{11234}YZ
1: \x{11234}YZ
/X\C*/8
XYZabcdce
0: XYZabcdce
/X\C*?/8
XYZabcde
0: X
/X\C{3,5}/8
Xabcdefg
0: Xabcde
X\x{11234}Y
0: X\x{11234}Y
X\x{11234}YZ
0: X\x{11234}YZ
X\x{11234}\x{512}
0: X\x{11234}\x{512}
X\x{11234}\x{512}YZ
0: X\x{11234}\x{512}YZ
X\x{11234}\x{512}\x{11234}Z
0: X\x{11234}\x{512}\x{11234}
/X\C{3,5}?/8
Xabcdefg
0: Xabc
X\x{11234}Y
0: X\x{11234}Y
X\x{11234}YZ
0: X\x{11234}Y
X\x{11234}\x{512}YZ
0: X\x{11234}\x{512}
*** Failers
No match
X\x{11234}
No match
/a\Cb/8
aXb
0: aXb
a\nb
0: a\x{0a}b
/a\C\Cb/8
a\x{12257}b
0: a\x{12257}b
a\x{12257}\x{11234}b
No match
** Failers
No match
a\x{100}b
No match
/ab\Cde/8
abXde
0: abXde
/-- Check maximum character size --/
/\x{ffff}/8DZ
------------------------------------------------------------------
Bra
\x{ffff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ffff}
No need char
/\x{10000}/8DZ
------------------------------------------------------------------
Bra
\x{10000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d800}
Need char = \x{dc00}
/\x{100}/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
/\x{1000}/8DZ
------------------------------------------------------------------
Bra
\x{1000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{1000}
No need char
/\x{10000}/8DZ
------------------------------------------------------------------
Bra
\x{10000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d800}
Need char = \x{dc00}
/\x{100000}/8DZ
------------------------------------------------------------------
Bra
\x{100000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{dbc0}
Need char = \x{dc00}
/\x{10ffff}/8DZ
------------------------------------------------------------------
Bra
\x{10ffff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{dbff}
Need char = \x{dfff}
/[\x{ff}]/8DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ff}
No need char
/[\x{100}]/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
/\x80/8DZ
------------------------------------------------------------------
Bra
\x80
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{80}
No need char
/\xff/8DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ff}
No need char
/\x{D55c}\x{ad6d}\x{C5B4}/DZ8
------------------------------------------------------------------
Bra
\x{d55c}\x{ad6d}\x{c5b4}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d55c}
Need char = \x{c5b4}
\x{D55c}\x{ad6d}\x{C5B4}
0: \x{d55c}\x{ad6d}\x{c5b4}
/\x{65e5}\x{672c}\x{8a9e}/DZ8
------------------------------------------------------------------
Bra
\x{65e5}\x{672c}\x{8a9e}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{65e5}
Need char = \x{8a9e}
\x{65e5}\x{672c}\x{8a9e}
0: \x{65e5}\x{672c}\x{8a9e}
/\x{80}/DZ8
------------------------------------------------------------------
Bra
\x80
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{80}
No need char
/\x{084}/DZ8
------------------------------------------------------------------
Bra
\x{84}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{84}
No need char
/\x{104}/DZ8
------------------------------------------------------------------
Bra
\x{104}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{104}
No need char
/\x{861}/DZ8
------------------------------------------------------------------
Bra
\x{861}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{861}
No need char
/\x{212ab}/DZ8
------------------------------------------------------------------
Bra
\x{212ab}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d844}
Need char = \x{deab}
/-- This one is here not because it's different to Perl, but because the way
the captured single-byte is displayed. (In Perl it becomes a character, and you
can't tell the difference.) --/
/X(\C)(.*)/8
X\x{1234}
0: X\x{1234}
1: \x{1234}
2:
X\nabc
0: X\x{0a}abc
1: \x{0a}
2: abc
/-- This one is here because Perl gives out a grumbly error message (quite
correctly, but that messes up comparisons). --/
/a\Cb/8
*** Failers
No match
a\x{100}b
0: a\x{100}b
/[^ab\xC0-\xF0]/8SDZ
------------------------------------------------------------------
Bra
[\x00-`c-\xbf\xf1-\xff] (neg)
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
\x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19
\x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4
5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y
Z [ \ ] ^ _ ` c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
\x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e
\x8f \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d
\x9e \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac
\xad \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb
\xbc \xbd \xbe \xbf \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb
\xfc \xfd \xfe \xff
\x{f1}
0: \x{f1}
\x{bf}
0: \x{bf}
\x{100}
0: \x{100}
\x{1000}
0: \x{1000}
*** Failers
0: *
\x{c0}
No match
\x{f0}
No match
/Ä€{3,4}/8SDZ
------------------------------------------------------------------
Bra
\x{100}{3}
\x{100}?+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
Need char = \x{100}
Subject length lower bound = 3
No starting char list
\x{100}\x{100}\x{100}\x{100\x{100}
0: \x{100}\x{100}\x{100}
/(\x{100}+|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}++
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: x \xff
/(\x{100}*a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}*+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: a x \xff
/(\x{100}{0,2}a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}{0,2}+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: a x \xff
/(\x{100}{1,2}a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}
\x{100}{0,1}+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: x \xff
/\x{100}/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
/a\x{100}\x{101}*/8DZ
------------------------------------------------------------------
Bra
a\x{100}
\x{101}*+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = \x{100}
/a\x{100}\x{101}+/8DZ
------------------------------------------------------------------
Bra
a\x{100}
\x{101}++
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = \x{101}
/[^\x{c4}]/DZ
------------------------------------------------------------------
Bra
[^\x{c4}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[\x{100}]/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
\x{100}
0: \x{100}
Z\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[\xff]/DZ8
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ff}
No need char
>\x{ff}<
0: \x{ff}
/[^\xff]/8DZ
------------------------------------------------------------------
Bra
[^\x{ff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}abc(xyz(?1))/8DZ
------------------------------------------------------------------
Bra
\x{100}abc
CBra 1
xyz
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
First char = \x{100}
Need char = 'z'
/\777/8I
Capturing subpattern count = 0
Options: utf
First char = \x{1ff}
No need char
\x{1ff}
0: \x{1ff}
\777
0: \x{1ff}
/\x{100}+\x{200}/8DZ
------------------------------------------------------------------
Bra
\x{100}++
\x{200}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
Need char = \x{200}
/\x{100}+X/8DZ
------------------------------------------------------------------
Bra
\x{100}++
X
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
Need char = 'X'
/^[\QÄ€\E-\QÅ\E/BZ8
Failed: missing terminating ] for character class at offset 13
/X/8
\x{d800}
Error -10 (bad UTF-16 string) offset=0 reason=1
\x{d800}\?
No match
\x{da00}
Error -10 (bad UTF-16 string) offset=0 reason=1
\x{da00}\?
No match
\x{dc00}
Error -10 (bad UTF-16 string) offset=0 reason=3
\x{dc00}\?
No match
\x{de00}
Error -10 (bad UTF-16 string) offset=0 reason=3
\x{de00}\?
No match
\x{dfff}
Error -10 (bad UTF-16 string) offset=0 reason=3
\x{dfff}\?
No match
\x{110000}
** Failed: character \x{110000} is greater than 0x10ffff and so cannot be converted to UTF-16
\x{d800}\x{1234}
Error -10 (bad UTF-16 string) offset=1 reason=2
/(*UTF16)\x{11234}/
abcd\x{11234}pqr
0: \x{11234}
/(*UTF)\x{11234}/I
Capturing subpattern count = 0
Options: utf
First char = \x{d804}
Need char = \x{de34}
abcd\x{11234}pqr
0: \x{11234}
/(*UTF-32)\x{11234}/
Failed: (*VERB) not recognized or malformed at offset 5
/(*CRLF)(*UTF16)(*BSR_UNICODE)a\Rb/I
Capturing subpattern count = 0
Options: bsr_unicode utf
Forced newline sequence: CRLF
First char = 'a'
Need char = 'b'
/(*CRLF)(*UTF32)(*BSR_UNICODE)a\Rb/I
Failed: (*VERB) not recognized or malformed at offset 12
/\h/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x09 \x20 \xa0 \xff
ABC\x{09}
0: \x{09}
ABC\x{20}
0:
ABC\x{a0}
0: \x{a0}
ABC\x{1680}
0: \x{1680}
ABC\x{180e}
0: \x{180e}
ABC\x{2000}
0: \x{2000}
ABC\x{202f}
0: \x{202f}
ABC\x{205f}
0: \x{205f}
ABC\x{3000}
0: \x{3000}
/\v/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85 \xff
ABC\x{0a}
0: \x{0a}
ABC\x{0b}
0: \x{0b}
ABC\x{0c}
0: \x{0c}
ABC\x{0d}
0: \x{0d}
ABC\x{85}
0: \x{85}
ABC\x{2028}
0: \x{2028}
/\h*A/SI8
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
Subject length lower bound = 1
Starting chars: \x09 \x20 A \xa0 \xff
CDBABC
0: A
\x{2000}ABC
0: \x{2000}A
/\R*A/SI8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
No first char
Need char = 'A'
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d A \x85 \xff
CDBABC
0: A
\x{2028}A
0: \x{2028}A
/\v+A/SI8
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
Subject length lower bound = 2
Starting chars: \x0a \x0b \x0c \x0d \x85 \xff
/\s?xxx\s/8SI
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'x'
Subject length lower bound = 4
Starting chars: \x09 \x0a \x0b \x0c \x0d \x20 x
/\sxxx\s/I8ST1
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'x'
Subject length lower bound = 5
Starting chars: \x09 \x0a \x0b \x0c \x0d \x20 \x85 \xa0
AB\x{85}xxx\x{a0}XYZ
0: \x{85}xxx\x{a0}
AB\x{a0}xxx\x{85}XYZ
0: \x{a0}xxx\x{85}
/\S \S/I8ST1
Capturing subpattern count = 0
Options: utf
No first char
Need char = ' '
Subject length lower bound = 3
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0e \x0f
\x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d \x1e
\x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C
D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h
i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83 \x84
\x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93 \x94
\x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa1 \xa2 \xa3 \xa4
\xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 \xb2 \xb3
\xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 \xc1 \xc2
\xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1
\xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf \xe0
\xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef
\xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe
\xff
\x{a2} \x{84}
0: \x{a2} \x{84}
A Z
0: A Z
/a+/8
a\x{123}aa\>1
0: aa
a\x{123}aa\>2
0: aa
a\x{123}aa\>3
0: a
a\x{123}aa\>4
No match
a\x{123}aa\>5
Error -24 (bad offset value)
a\x{123}aa\>6
Error -24 (bad offset value)
/\x{1234}+/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
No need char
Subject length lower bound = 1
No starting char list
/\x{1234}+?/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
No need char
Subject length lower bound = 1
No starting char list
/\x{1234}++/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
No need char
Subject length lower bound = 1
No starting char list
/\x{1234}{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
Need char = \x{1234}
Subject length lower bound = 2
No starting char list
/[^\x{c4}]/8DZ
------------------------------------------------------------------
Bra
[^\x{c4}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/X+\x{200}/8DZ
------------------------------------------------------------------
Bra
X++
\x{200}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'X'
Need char = \x{200}
/\R/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85 \xff
/-- Check bad offset --/
/a/8
\x{10000}\>1
Error -11 (bad UTF-16 offset)
\x{10000}ab\>1
Error -11 (bad UTF-16 offset)
\x{10000}ab\>2
0: a
\x{10000}ab\>3
No match
\x{10000}ab\>4
No match
\x{10000}ab\>5
Error -24 (bad offset value)
/í¼€/8
Failed: invalid UTF-16 string at offset 0
/\w+\x{C4}/8BZ
------------------------------------------------------------------
Bra
\w++
\x{c4}
Ket
End
------------------------------------------------------------------
a\x{C4}\x{C4}
0: a\x{c4}
/\w+\x{C4}/8BZT1
------------------------------------------------------------------
Bra
\w+
\x{c4}
Ket
End
------------------------------------------------------------------
a\x{C4}\x{C4}
0: a\x{c4}\x{c4}
/\W+\x{C4}/8BZ
------------------------------------------------------------------
Bra
\W+
\x{c4}
Ket
End
------------------------------------------------------------------
!\x{C4}
0: !\x{c4}
/\W+\x{C4}/8BZT1
------------------------------------------------------------------
Bra
\W++
\x{c4}
Ket
End
------------------------------------------------------------------
!\x{C4}
0: !\x{c4}
/\W+\x{A1}/8BZ
------------------------------------------------------------------
Bra
\W+
\x{a1}
Ket
End
------------------------------------------------------------------
!\x{A1}
0: !\x{a1}
/\W+\x{A1}/8BZT1
------------------------------------------------------------------
Bra
\W+
\x{a1}
Ket
End
------------------------------------------------------------------
!\x{A1}
0: !\x{a1}
/X\s+\x{A0}/8BZ
------------------------------------------------------------------
Bra
X
\s++
\x{a0}
Ket
End
------------------------------------------------------------------
X\x20\x{A0}\x{A0}
0: X \x{a0}
/X\s+\x{A0}/8BZT1
------------------------------------------------------------------
Bra
X
\s+
\x{a0}
Ket
End
------------------------------------------------------------------
X\x20\x{A0}\x{A0}
0: X \x{a0}\x{a0}
/\S+\x{A0}/8BZ
------------------------------------------------------------------
Bra
\S+
\x{a0}
Ket
End
------------------------------------------------------------------
X\x{A0}\x{A0}
0: X\x{a0}\x{a0}
/\S+\x{A0}/8BZT1
------------------------------------------------------------------
Bra
\S++
\x{a0}
Ket
End
------------------------------------------------------------------
X\x{A0}\x{A0}
0: X\x{a0}
/\x{a0}+\s!/8BZ
------------------------------------------------------------------
Bra
\x{a0}++
\s
!
Ket
End
------------------------------------------------------------------
\x{a0}\x20!
0: \x{a0} !
/\x{a0}+\s!/8BZT1
------------------------------------------------------------------
Bra
\x{a0}+
\s
!
Ket
End
------------------------------------------------------------------
\x{a0}\x20!
0: \x{a0} !
/(*UTF)abc/9
Failed: setting UTF is disabled by the application at offset 0
/abc/89
Failed: setting UTF is disabled by the application at offset 0
/-- End of testinput18 --/
+1023
View File
@@ -0,0 +1,1023 @@
/-- This set of tests is for UTF-16 and UTF-32 support, and is relevant only to
the 16- and 32-bit libraries. --/
< forbid W
/ÃÃÃxxx/8?DZSS
**Failed: invalid UTF-8 string cannot be converted to UTF-32
/abc/8
Ã]
**Failed: invalid UTF-8 string cannot be used as input in UTF mode
/X(\C{3})/8
X\x{11234}Y
No match
X\x{11234}YZ
0: X\x{11234}YZ
1: \x{11234}YZ
/X(\C{4})/8
X\x{11234}YZ
No match
X\x{11234}YZW
0: X\x{11234}YZW
1: \x{11234}YZW
/X\C*/8
XYZabcdce
0: XYZabcdce
/X\C*?/8
XYZabcde
0: X
/X\C{3,5}/8
Xabcdefg
0: Xabcde
X\x{11234}Y
No match
X\x{11234}YZ
0: X\x{11234}YZ
X\x{11234}\x{512}
No match
X\x{11234}\x{512}YZ
0: X\x{11234}\x{512}YZ
X\x{11234}\x{512}\x{11234}Z
0: X\x{11234}\x{512}\x{11234}Z
/X\C{3,5}?/8
Xabcdefg
0: Xabc
X\x{11234}Y
No match
X\x{11234}YZ
0: X\x{11234}YZ
X\x{11234}\x{512}YZ
0: X\x{11234}\x{512}Y
*** Failers
No match
X\x{11234}
No match
/a\Cb/8
aXb
0: aXb
a\nb
0: a\x{0a}b
/a\C\Cb/8
a\x{12257}b
No match
a\x{12257}\x{11234}b
0: a\x{12257}\x{11234}b
** Failers
No match
a\x{100}b
No match
/ab\Cde/8
abXde
0: abXde
/-- Check maximum character size --/
/\x{ffff}/8DZ
------------------------------------------------------------------
Bra
\x{ffff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ffff}
No need char
/\x{10000}/8DZ
------------------------------------------------------------------
Bra
\x{10000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{10000}
No need char
/\x{100}/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
/\x{1000}/8DZ
------------------------------------------------------------------
Bra
\x{1000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{1000}
No need char
/\x{10000}/8DZ
------------------------------------------------------------------
Bra
\x{10000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{10000}
No need char
/\x{100000}/8DZ
------------------------------------------------------------------
Bra
\x{100000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100000}
No need char
/\x{10ffff}/8DZ
------------------------------------------------------------------
Bra
\x{10ffff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{10ffff}
No need char
/[\x{ff}]/8DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ff}
No need char
/[\x{100}]/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
/\x80/8DZ
------------------------------------------------------------------
Bra
\x80
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{80}
No need char
/\xff/8DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ff}
No need char
/\x{D55c}\x{ad6d}\x{C5B4}/DZ8
------------------------------------------------------------------
Bra
\x{d55c}\x{ad6d}\x{c5b4}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{d55c}
Need char = \x{c5b4}
\x{D55c}\x{ad6d}\x{C5B4}
0: \x{d55c}\x{ad6d}\x{c5b4}
/\x{65e5}\x{672c}\x{8a9e}/DZ8
------------------------------------------------------------------
Bra
\x{65e5}\x{672c}\x{8a9e}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{65e5}
Need char = \x{8a9e}
\x{65e5}\x{672c}\x{8a9e}
0: \x{65e5}\x{672c}\x{8a9e}
/\x{80}/DZ8
------------------------------------------------------------------
Bra
\x80
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{80}
No need char
/\x{084}/DZ8
------------------------------------------------------------------
Bra
\x{84}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{84}
No need char
/\x{104}/DZ8
------------------------------------------------------------------
Bra
\x{104}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{104}
No need char
/\x{861}/DZ8
------------------------------------------------------------------
Bra
\x{861}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{861}
No need char
/\x{212ab}/DZ8
------------------------------------------------------------------
Bra
\x{212ab}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{212ab}
No need char
/-- This one is here not because it's different to Perl, but because the way
the captured single-byte is displayed. (In Perl it becomes a character, and you
can't tell the difference.) --/
/X(\C)(.*)/8
X\x{1234}
0: X\x{1234}
1: \x{1234}
2:
X\nabc
0: X\x{0a}abc
1: \x{0a}
2: abc
/-- This one is here because Perl gives out a grumbly error message (quite
correctly, but that messes up comparisons). --/
/a\Cb/8
*** Failers
No match
a\x{100}b
0: a\x{100}b
/[^ab\xC0-\xF0]/8SDZ
------------------------------------------------------------------
Bra
[\x00-`c-\xbf\xf1-\xff] (neg)
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
\x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19
\x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4
5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y
Z [ \ ] ^ _ ` c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
\x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e
\x8f \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d
\x9e \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac
\xad \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb
\xbc \xbd \xbe \xbf \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb
\xfc \xfd \xfe \xff
\x{f1}
0: \x{f1}
\x{bf}
0: \x{bf}
\x{100}
0: \x{100}
\x{1000}
0: \x{1000}
*** Failers
0: *
\x{c0}
No match
\x{f0}
No match
/Ä€{3,4}/8SDZ
------------------------------------------------------------------
Bra
\x{100}{3}
\x{100}?+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
Need char = \x{100}
Subject length lower bound = 3
No starting char list
\x{100}\x{100}\x{100}\x{100\x{100}
0: \x{100}\x{100}\x{100}
/(\x{100}+|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}++
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: x \xff
/(\x{100}*a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}*+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: a x \xff
/(\x{100}{0,2}a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}{0,2}+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: a x \xff
/(\x{100}{1,2}a|x)/8SDZ
------------------------------------------------------------------
Bra
CBra 1
\x{100}
\x{100}{0,1}+
a
Alt
x
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: x \xff
/\x{100}/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
/a\x{100}\x{101}*/8DZ
------------------------------------------------------------------
Bra
a\x{100}
\x{101}*+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = \x{100}
/a\x{100}\x{101}+/8DZ
------------------------------------------------------------------
Bra
a\x{100}
\x{101}++
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = \x{101}
/[^\x{c4}]/DZ
------------------------------------------------------------------
Bra
[^\x{c4}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[\x{100}]/8DZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
No need char
\x{100}
0: \x{100}
Z\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[\xff]/DZ8
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{ff}
No need char
>\x{ff}<
0: \x{ff}
/[^\xff]/8DZ
------------------------------------------------------------------
Bra
[^\x{ff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}abc(xyz(?1))/8DZ
------------------------------------------------------------------
Bra
\x{100}abc
CBra 1
xyz
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
First char = \x{100}
Need char = 'z'
/\777/8I
Capturing subpattern count = 0
Options: utf
First char = \x{1ff}
No need char
\x{1ff}
0: \x{1ff}
\777
0: \x{1ff}
/\x{100}+\x{200}/8DZ
------------------------------------------------------------------
Bra
\x{100}++
\x{200}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
Need char = \x{200}
/\x{100}+X/8DZ
------------------------------------------------------------------
Bra
\x{100}++
X
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = \x{100}
Need char = 'X'
/^[\QÄ€\E-\QÅ\E/BZ8
Failed: missing terminating ] for character class at offset 13
/X/8
\x{d800}
Error -10 (bad UTF-32 string) offset=0 reason=1
\x{d800}\?
No match
\x{da00}
Error -10 (bad UTF-32 string) offset=0 reason=1
\x{da00}\?
No match
\x{dc00}
Error -10 (bad UTF-32 string) offset=0 reason=1
\x{dc00}\?
No match
\x{de00}
Error -10 (bad UTF-32 string) offset=0 reason=1
\x{de00}\?
No match
\x{dfff}
Error -10 (bad UTF-32 string) offset=0 reason=1
\x{dfff}\?
No match
\x{110000}
Error -10 (bad UTF-32 string) offset=0 reason=3
\x{d800}\x{1234}
Error -10 (bad UTF-32 string) offset=0 reason=1
/(*UTF16)\x{11234}/
Failed: (*VERB) not recognized or malformed at offset 5
/(*UTF)\x{11234}/I
Capturing subpattern count = 0
Options: utf
First char = \x{11234}
No need char
abcd\x{11234}pqr
0: \x{11234}
/(*UTF-32)\x{11234}/
Failed: (*VERB) not recognized or malformed at offset 5
/(*CRLF)(*UTF16)(*BSR_UNICODE)a\Rb/I
Failed: (*VERB) not recognized or malformed at offset 12
/(*CRLF)(*UTF32)(*BSR_UNICODE)a\Rb/I
Capturing subpattern count = 0
Options: bsr_unicode utf
Forced newline sequence: CRLF
First char = 'a'
Need char = 'b'
/\h/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x09 \x20 \xa0 \xff
ABC\x{09}
0: \x{09}
ABC\x{20}
0:
ABC\x{a0}
0: \x{a0}
ABC\x{1680}
0: \x{1680}
ABC\x{180e}
0: \x{180e}
ABC\x{2000}
0: \x{2000}
ABC\x{202f}
0: \x{202f}
ABC\x{205f}
0: \x{205f}
ABC\x{3000}
0: \x{3000}
/\v/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85 \xff
ABC\x{0a}
0: \x{0a}
ABC\x{0b}
0: \x{0b}
ABC\x{0c}
0: \x{0c}
ABC\x{0d}
0: \x{0d}
ABC\x{85}
0: \x{85}
ABC\x{2028}
0: \x{2028}
/\h*A/SI8
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
Subject length lower bound = 1
Starting chars: \x09 \x20 A \xa0 \xff
CDBABC
0: A
\x{2000}ABC
0: \x{2000}A
/\R*A/SI8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
No first char
Need char = 'A'
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d A \x85 \xff
CDBABC
0: A
\x{2028}A
0: \x{2028}A
/\v+A/SI8
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
Subject length lower bound = 2
Starting chars: \x0a \x0b \x0c \x0d \x85 \xff
/\s?xxx\s/8SI
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'x'
Subject length lower bound = 4
Starting chars: \x09 \x0a \x0b \x0c \x0d \x20 x
/\sxxx\s/I8ST1
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'x'
Subject length lower bound = 5
Starting chars: \x09 \x0a \x0b \x0c \x0d \x20 \x85 \xa0
AB\x{85}xxx\x{a0}XYZ
0: \x{85}xxx\x{a0}
AB\x{a0}xxx\x{85}XYZ
0: \x{a0}xxx\x{85}
/\S \S/I8ST1
Capturing subpattern count = 0
Options: utf
No first char
Need char = ' '
Subject length lower bound = 3
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0e \x0f
\x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d \x1e
\x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C
D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h
i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83 \x84
\x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93 \x94
\x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa1 \xa2 \xa3 \xa4
\xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 \xb2 \xb3
\xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 \xc1 \xc2
\xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1
\xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf \xe0
\xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef
\xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe
\xff
\x{a2} \x{84}
0: \x{a2} \x{84}
A Z
0: A Z
/a+/8
a\x{123}aa\>1
0: aa
a\x{123}aa\>2
0: aa
a\x{123}aa\>3
0: a
a\x{123}aa\>4
No match
a\x{123}aa\>5
Error -24 (bad offset value)
a\x{123}aa\>6
Error -24 (bad offset value)
/\x{1234}+/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
No need char
Subject length lower bound = 1
No starting char list
/\x{1234}+?/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
No need char
Subject length lower bound = 1
No starting char list
/\x{1234}++/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
No need char
Subject length lower bound = 1
No starting char list
/\x{1234}{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf
First char = \x{1234}
Need char = \x{1234}
Subject length lower bound = 2
No starting char list
/[^\x{c4}]/8DZ
------------------------------------------------------------------
Bra
[^\x{c4}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/X+\x{200}/8DZ
------------------------------------------------------------------
Bra
X++
\x{200}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'X'
Need char = \x{200}
/\R/SI8
Capturing subpattern count = 0
Options: utf
No first char
No need char
Subject length lower bound = 1
Starting chars: \x0a \x0b \x0c \x0d \x85 \xff
/-- Check bad offset --/
/a/8
\x{10000}\>1
No match
\x{10000}ab\>1
0: a
\x{10000}ab\>2
No match
\x{10000}ab\>3
No match
\x{10000}ab\>4
Error -24 (bad offset value)
\x{10000}ab\>5
Error -24 (bad offset value)
/í¼€/8
**Failed: character value is ill-formed UTF-32
/\w+\x{C4}/8BZ
------------------------------------------------------------------
Bra
\w++
\x{c4}
Ket
End
------------------------------------------------------------------
a\x{C4}\x{C4}
0: a\x{c4}
/\w+\x{C4}/8BZT1
------------------------------------------------------------------
Bra
\w+
\x{c4}
Ket
End
------------------------------------------------------------------
a\x{C4}\x{C4}
0: a\x{c4}\x{c4}
/\W+\x{C4}/8BZ
------------------------------------------------------------------
Bra
\W+
\x{c4}
Ket
End
------------------------------------------------------------------
!\x{C4}
0: !\x{c4}
/\W+\x{C4}/8BZT1
------------------------------------------------------------------
Bra
\W++
\x{c4}
Ket
End
------------------------------------------------------------------
!\x{C4}
0: !\x{c4}
/\W+\x{A1}/8BZ
------------------------------------------------------------------
Bra
\W+
\x{a1}
Ket
End
------------------------------------------------------------------
!\x{A1}
0: !\x{a1}
/\W+\x{A1}/8BZT1
------------------------------------------------------------------
Bra
\W+
\x{a1}
Ket
End
------------------------------------------------------------------
!\x{A1}
0: !\x{a1}
/X\s+\x{A0}/8BZ
------------------------------------------------------------------
Bra
X
\s++
\x{a0}
Ket
End
------------------------------------------------------------------
X\x20\x{A0}\x{A0}
0: X \x{a0}
/X\s+\x{A0}/8BZT1
------------------------------------------------------------------
Bra
X
\s+
\x{a0}
Ket
End
------------------------------------------------------------------
X\x20\x{A0}\x{A0}
0: X \x{a0}\x{a0}
/\S+\x{A0}/8BZ
------------------------------------------------------------------
Bra
\S+
\x{a0}
Ket
End
------------------------------------------------------------------
X\x{A0}\x{A0}
0: X\x{a0}\x{a0}
/\S+\x{A0}/8BZT1
------------------------------------------------------------------
Bra
\S++
\x{a0}
Ket
End
------------------------------------------------------------------
X\x{A0}\x{A0}
0: X\x{a0}
/\x{a0}+\s!/8BZ
------------------------------------------------------------------
Bra
\x{a0}++
\s
!
Ket
End
------------------------------------------------------------------
\x{a0}\x20!
0: \x{a0} !
/\x{a0}+\s!/8BZT1
------------------------------------------------------------------
Bra
\x{a0}+
\s
!
Ket
End
------------------------------------------------------------------
\x{a0}\x20!
0: \x{a0} !
/(*UTF)abc/9
Failed: setting UTF is disabled by the application at offset 0
/abc/89
Failed: setting UTF is disabled by the application at offset 0
/-- End of testinput18 --/
+134
View File
@@ -0,0 +1,134 @@
/-- This set of tests is for Unicode property support, relevant only to the
16- and 32-bit library. --/
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ
------------------------------------------------------------------
Bra
/i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
First char = 'A' (caseless)
Need char = \x{1fb0} (caseless)
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ
------------------------------------------------------------------
Bra
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = \x{1fb0}
/AB\x{1fb0}/8DZ
------------------------------------------------------------------
Bra
AB\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = \x{1fb0}
/AB\x{1fb0}/8DZi
------------------------------------------------------------------
Bra
/i AB\x{1fb0}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
First char = 'A' (caseless)
Need char = \x{1fb0} (caseless)
/\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI
Capturing subpattern count = 0
Options: caseless utf
First char = \x{401} (caseless)
Need char = \x{42f} (caseless)
Subject length lower bound = 17
No starting char list
\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
0: \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
\x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
0: \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
/[ⱥ]/8iBZ
------------------------------------------------------------------
Bra
/i \x{2c65}
Ket
End
------------------------------------------------------------------
/[^ⱥ]/8iBZ
------------------------------------------------------------------
Bra
/i [^\x{2c65}]
Ket
End
------------------------------------------------------------------
/[[:blank:]]/WBZ
------------------------------------------------------------------
Bra
[\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
Ket
End
------------------------------------------------------------------
/\x{212a}+/i8SI
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: K k \xff
KKkk\x{212a}
0: KKkk\x{212a}
/s+/i8SI
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
Starting chars: S s \xff
SSss\x{17f}
0: SSss\x{17f}
/[\D]/8
\x{1d7cf}
0: \x{1d7cf}
/[\D\P{Nd}]/8
\x{1d7cf}
0: \x{1d7cf}
/[^\D]/8
a9b
0: 9
** Failers
No match
\x{1d7cf}
No match
/[^\D\P{Nd}]/8
a9b
0: 9
\x{1d7cf}
0: \x{1d7cf}
** Failers
No match
\x{10000}
No match
/-- End of testinput19 --/
+14708
View File
File diff suppressed because one or more lines are too long
+24
View File
@@ -0,0 +1,24 @@
/-- These DFA tests are for the handling of characters greater than 255 in
16- or 32-bit, non-UTF mode. --/
/^\x{ffff}+/i
\x{ffff}
0: \x{ffff}
/^\x{ffff}?/i
\x{ffff}
0: \x{ffff}
/^\x{ffff}*/i
\x{ffff}
0: \x{ffff}
/^\x{ffff}{3}/i
\x{ffff}\x{ffff}\x{ffff}
0: \x{ffff}\x{ffff}\x{ffff}
/^\x{ffff}{0,3}/i
\x{ffff}
0: \x{ffff}
/-- End of testinput20 --/
+100
View File
@@ -0,0 +1,100 @@
/-- Tests for reloading pre-compiled patterns. The first one gives an error
right away, and can be any old pattern compiled in 8-bit mode ("abc" is
typical). The others require the link size to be 2. */x
<!testsaved8
Compiled pattern loaded from testsaved8
No study data
Error -28 from pcre16_fullinfo(0)
Running in 16-bit mode but pattern was compiled in 8-bit mode
%-- Generated from:
/^[aL](?P<name>(?:[AaLl]+)[^xX-]*?)(?P<other>[\x{150}-\x{250}\x{300}]|
[^\x{800}aAs-uS-U\x{d800}-\x{dfff}])++[^#\b\x{500}\x{1000}]{3,5}$
/x
In 16-bit mode with options: S>testdata/saved16LE-1
FS>testdata/saved16BE-1
In 32-bit mode with options: S>testdata/saved32LE-1
FS>testdata/saved32BE-1
--%x
<!testsaved16LE-1
Compiled pattern loaded from testsaved16LE-1
Study data loaded from testsaved16LE-1
------------------------------------------------------------------
0 134 Bra
2 ^
3 [La]
20 43 CBra 1
23 20 Bra
25 [ALal]+
43 20 Ket
45 [\x00-,.-WY-wy-\xff] (neg)*?
63 43 Ket
65 12 CBraPos 2
68 [\x{150}-\x{250}\x{300}]
77 27 Alt
79 [^AS-Uas-u\x{800}\x{d800}-\x{dfff}]
104 39 KetRpos
106 [^\x08#\x{500}\x{1000}]{3,5}
133 $
134 134 Ket
136 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
name 1
other 2
Options: anchored extended
No first char
No need char
Subject length lower bound = 6
No starting char list
<!testsaved16BE-1
Compiled pattern loaded from testsaved16BE-1
Study data loaded from testsaved16BE-1
------------------------------------------------------------------
0 134 Bra
2 ^
3 [La]
20 43 CBra 1
23 20 Bra
25 [ALal]+
43 20 Ket
45 [\x00-,.-WY-wy-\xff] (neg)*?
63 43 Ket
65 12 CBraPos 2
68 [\x{150}-\x{250}\x{300}]
77 27 Alt
79 [^AS-Uas-u\x{800}\x{d800}-\x{dfff}]
104 39 KetRpos
106 [^\x08#\x{500}\x{1000}]{3,5}
133 $
134 134 Ket
136 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
name 1
other 2
Options: anchored extended
No first char
No need char
Subject length lower bound = 6
No starting char list
<!testsaved32LE-1
Compiled pattern loaded from testsaved32LE-1
Study data loaded from testsaved32LE-1
Error -28 from pcre16_fullinfo(0)
Running in 16-bit mode but pattern was compiled in 32-bit mode
<!testsaved32BE-1
Compiled pattern loaded from testsaved32BE-1
Study data loaded from testsaved32BE-1
Error -28 from pcre16_fullinfo(0)
Running in 16-bit mode but pattern was compiled in 32-bit mode
/-- End of testinput21 --/
+100
View File
@@ -0,0 +1,100 @@
/-- Tests for reloading pre-compiled patterns. The first one gives an error
right away, and can be any old pattern compiled in 8-bit mode ("abc" is
typical). The others require the link size to be 2. */x
<!testsaved8
Compiled pattern loaded from testsaved8
No study data
Error -28 from pcre32_fullinfo(0)
Running in 32-bit mode but pattern was compiled in 8-bit mode
%-- Generated from:
/^[aL](?P<name>(?:[AaLl]+)[^xX-]*?)(?P<other>[\x{150}-\x{250}\x{300}]|
[^\x{800}aAs-uS-U\x{d800}-\x{dfff}])++[^#\b\x{500}\x{1000}]{3,5}$
/x
In 16-bit mode with options: S>testdata/saved16LE-1
FS>testdata/saved16BE-1
In 32-bit mode with options: S>testdata/saved32LE-1
FS>testdata/saved32BE-1
--%x
<!testsaved16LE-1
Compiled pattern loaded from testsaved16LE-1
Study data loaded from testsaved16LE-1
Error -28 from pcre32_fullinfo(0)
Running in 32-bit mode but pattern was compiled in 16-bit mode
<!testsaved16BE-1
Compiled pattern loaded from testsaved16BE-1
Study data loaded from testsaved16BE-1
Error -28 from pcre32_fullinfo(0)
Running in 32-bit mode but pattern was compiled in 16-bit mode
<!testsaved32LE-1
Compiled pattern loaded from testsaved32LE-1
Study data loaded from testsaved32LE-1
------------------------------------------------------------------
0 94 Bra
2 ^
3 [La]
12 27 CBra 1
15 12 Bra
17 [ALal]+
27 12 Ket
29 [\x00-,.-WY-wy-\xff] (neg)*?
39 27 Ket
41 12 CBraPos 2
44 [\x{150}-\x{250}\x{300}]
53 19 Alt
55 [^AS-Uas-u\x{800}\x{d800}-\x{dfff}]
72 31 KetRpos
74 [^\x08#\x{500}\x{1000}]{3,5}
93 $
94 94 Ket
96 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
name 1
other 2
Options: anchored extended
No first char
No need char
Subject length lower bound = 6
No starting char list
<!testsaved32BE-1
Compiled pattern loaded from testsaved32BE-1
Study data loaded from testsaved32BE-1
------------------------------------------------------------------
0 94 Bra
2 ^
3 [La]
12 27 CBra 1
15 12 Bra
17 [ALal]+
27 12 Ket
29 [\x00-,.-WY-wy-\xff] (neg)*?
39 27 Ket
41 12 CBraPos 2
44 [\x{150}-\x{250}\x{300}]
53 19 Alt
55 [^AS-Uas-u\x{800}\x{d800}-\x{dfff}]
72 31 KetRpos
74 [^\x08#\x{500}\x{1000}]{3,5}
93 $
94 94 Ket
96 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
name 1
other 2
Options: anchored extended
No first char
No need char
Subject length lower bound = 6
No starting char list
/-- End of testinput21 --/
+81
View File
@@ -0,0 +1,81 @@
/-- Tests for reloading pre-compile patterns with UTF-16 or UTF-32 support. */
%-- Generated from:
/(?P<cbra1>[aZ\x{400}-\x{10ffff}]{4,}
[\x{f123}\x{10039}\x{20000}-\x{21234}]?|
[A-Cx-z\x{100000}-\x{1000a7}\x{101234}])
(?<cb2>[^az])/x
In 16-bit mode with options: S8>testdata/saved16LE-2
FS8>testdata/saved16BE-2
In 32-bit mode with options: S8>testdata/saved32LE-2
FS8>testdata/saved32BE-2
--%8x
<!testsaved16LE-2
Compiled pattern loaded from testsaved16LE-2
Study data loaded from testsaved16LE-2
------------------------------------------------------------------
0 101 Bra
2 45 CBra 1
5 [Za\x{400}-\x{10ffff}]{4,}
32 [\x{f123}\x{10039}\x{20000}-\x{21234}]?
47 30 Alt
49 [A-Cx-z\x{100000}-\x{1000a7}\x{101234}]
77 75 Ket
79 20 CBra 2
82 [\x00-`b-y{-\xff] (neg)
99 20 Ket
101 101 Ket
103 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
cb2 2
cbra1 1
Options: extended utf
No first char
No need char
Subject length lower bound = 2
No starting char list
<!testsaved16BE-2
Compiled pattern loaded from testsaved16BE-2
Study data loaded from testsaved16BE-2
------------------------------------------------------------------
0 101 Bra
2 45 CBra 1
5 [Za\x{400}-\x{10ffff}]{4,}
32 [\x{f123}\x{10039}\x{20000}-\x{21234}]?
47 30 Alt
49 [A-Cx-z\x{100000}-\x{1000a7}\x{101234}]
77 75 Ket
79 20 CBra 2
82 [\x00-`b-y{-\xff] (neg)
99 20 Ket
101 101 Ket
103 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
cb2 2
cbra1 1
Options: extended utf
No first char
No need char
Subject length lower bound = 2
No starting char list
<!testsaved32LE-2
Compiled pattern loaded from testsaved32LE-2
Study data loaded from testsaved32LE-2
Error -28 from pcre16_fullinfo(0)
Running in 16-bit mode but pattern was compiled in 32-bit mode
<!testsaved32BE-2
Compiled pattern loaded from testsaved32BE-2
Study data loaded from testsaved32BE-2
Error -28 from pcre16_fullinfo(0)
Running in 16-bit mode but pattern was compiled in 32-bit mode
/-- End of testinput22 --/
+81
View File
@@ -0,0 +1,81 @@
/-- Tests for reloading pre-compile patterns with UTF-16 or UTF-32 support. */
%-- Generated from:
/(?P<cbra1>[aZ\x{400}-\x{10ffff}]{4,}
[\x{f123}\x{10039}\x{20000}-\x{21234}]?|
[A-Cx-z\x{100000}-\x{1000a7}\x{101234}])
(?<cb2>[^az])/x
In 16-bit mode with options: S8>testdata/saved16LE-2
FS8>testdata/saved16BE-2
In 32-bit mode with options: S8>testdata/saved32LE-2
FS8>testdata/saved32BE-2
--%8x
<!testsaved16LE-2
Compiled pattern loaded from testsaved16LE-2
Study data loaded from testsaved16LE-2
Error -28 from pcre32_fullinfo(0)
Running in 32-bit mode but pattern was compiled in 16-bit mode
<!testsaved16BE-2
Compiled pattern loaded from testsaved16BE-2
Study data loaded from testsaved16BE-2
Error -28 from pcre32_fullinfo(0)
Running in 32-bit mode but pattern was compiled in 16-bit mode
<!testsaved32LE-2
Compiled pattern loaded from testsaved32LE-2
Study data loaded from testsaved32LE-2
------------------------------------------------------------------
0 70 Bra
2 33 CBra 1
5 [Za\x{400}-\x{10ffff}]{4,}
23 [\x{f123}\x{10039}\x{20000}-\x{21234}]?
35 19 Alt
37 [A-Cx-z\x{100000}-\x{1000a7}\x{101234}]
54 52 Ket
56 12 CBra 2
59 [\x00-`b-y{-\xff] (neg)
68 12 Ket
70 70 Ket
72 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
cb2 2
cbra1 1
Options: extended utf
No first char
No need char
Subject length lower bound = 2
No starting char list
<!testsaved32BE-2
Compiled pattern loaded from testsaved32BE-2
Study data loaded from testsaved32BE-2
------------------------------------------------------------------
0 70 Bra
2 33 CBra 1
5 [Za\x{400}-\x{10ffff}]{4,}
23 [\x{f123}\x{10039}\x{20000}-\x{21234}]?
35 19 Alt
37 [A-Cx-z\x{100000}-\x{1000a7}\x{101234}]
54 52 Ket
56 12 CBra 2
59 [\x00-`b-y{-\xff] (neg)
68 12 Ket
70 70 Ket
72 End
------------------------------------------------------------------
Capturing subpattern count = 2
Named capturing subpatterns:
cb2 2
cbra1 1
Options: extended utf
No first char
No need char
Subject length lower bound = 2
No starting char list
/-- End of testinput22 --/
+72
View File
@@ -0,0 +1,72 @@
/-- Tests for the 16-bit library only */
< forbid 8W
/-- Check maximum non-UTF character size --/
/\x{ffff}/
A\x{ffff}B
0: \x{ffff}
/\x{10000}/
Failed: character value in \x{} or \o{} is too large at offset 8
/\o{20000}/
/-- Check character ranges --/
/[\H]/BZSI
------------------------------------------------------------------
Bra
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{ffff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0a \x0b
\x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a
\x1b \x1c \x1d \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9
: ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^
_ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80
\x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f
\x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e
\x9f \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae
\xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd
\xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc
\xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb
\xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea
\xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9
\xfa \xfb \xfc \xfd \xfe \xff
/[\V]/BZSI
------------------------------------------------------------------
Bra
[\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{ffff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0e
\x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d
\x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = >
? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c
d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82
\x83 \x84 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92
\x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1
\xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0
\xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf
\xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce
\xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd
\xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec
\xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb
\xfc \xfd \xfe \xff
/-- End of testinput23 --/
+13
View File
@@ -0,0 +1,13 @@
/-- Tests for the 16-bit library with UTF-16 support only */
< forbid W
/bad/8
\x{d800}
Error -10 (bad UTF-16 string) offset=0 reason=1
/short/8
\P\P\x{d800}
Error -25 (short UTF-16 string) offset=0 reason=1
/-- End of testinput24 --/
+119
View File
@@ -0,0 +1,119 @@
/-- Tests for the 32-bit library only */
< forbid 8W
/-- Check maximum character size --/
/\x{110000}/
/\x{7fffffff}/
/\x{80000000}/
/\x{ffffffff}/
/\x{100000000}/
Failed: character value in \x{} or \o{} is too large at offset 12
/\o{17777777777}/
/\o{20000000000}/
/\o{37777777777}/
/\o{40000000000}/
Failed: character value in \x{} or \o{} is too large at offset 14
/\x{7fffffff}\x{7fffffff}/I
Capturing subpattern count = 0
No options
First char = \x{7fffffff}
Need char = \x{7fffffff}
/\x{80000000}\x{80000000}/I
Capturing subpattern count = 0
No options
First char = \x{80000000}
Need char = \x{80000000}
/\x{ffffffff}\x{ffffffff}/I
Capturing subpattern count = 0
No options
First char = \x{ffffffff}
Need char = \x{ffffffff}
/-- Non-UTF characters --/
/\C{2,3}/
\x{400000}\x{400001}\x{400002}\x{400003}
0: \x{400000}\x{400001}\x{400002}
/\x{400000}\x{800000}/iDZ
------------------------------------------------------------------
Bra
/i \x{400000}\x{800000}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless
First char = \x{400000}
Need char = \x{800000}
/-- Check character ranges --/
/[\H]/BZSI
------------------------------------------------------------------
Bra
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{ffffffff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0a \x0b
\x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a
\x1b \x1c \x1d \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9
: ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^
_ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80
\x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f
\x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e
\x9f \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae
\xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd
\xbe \xbf \xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc
\xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb
\xdc \xdd \xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea
\xeb \xec \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9
\xfa \xfb \xfc \xfd \xfe \xff
/[\V]/BZSI
------------------------------------------------------------------
Bra
[\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{ffffffff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0e
\x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d
\x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = >
? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c
d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82
\x83 \x84 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92
\x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa0 \xa1
\xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0
\xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf
\xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce
\xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd
\xde \xdf \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec
\xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb
\xfc \xfd \xfe \xff
/-- End of testinput25 --/
+17
View File
@@ -0,0 +1,17 @@
/-- Tests for the 32-bit library with UTF-32 support only */
< forbid W
/-- Non-UTF characters --/
/\x{110000}/8
Failed: character value in \x{} or \o{} is too large at offset 9
/\o{4200000}/8
Failed: character value in \x{} or \o{} is too large at offset 10
/\C/8
\x{110000}
Error -10 (bad UTF-32 string) offset=0 reason=3
/-- End of testinput26 --/
+174
View File
@@ -0,0 +1,174 @@
/-- This set of tests checks local-specific features, using the "fr_FR" locale.
It is not Perl-compatible. When run via RunTest, the locale is edited to
be whichever of "fr_FR", "french", or "fr" is found to exist. There is
different version of this file called wintestinput3 for use on Windows,
where the locale is called "french" and the tests are run using
RunTest.bat. --/
< forbid 8W
/^[\w]+/
*** Failers
No match
École
No match
/^[\w]+/Lfr_FR
École
0: École
/^[\w]+/
*** Failers
No match
École
No match
/^[\W]+/
École
0: \xc9
/^[\W]+/Lfr_FR
*** Failers
0: ***
École
No match
/[\b]/
\b
0: \x08
*** Failers
No match
a
No match
/[\b]/Lfr_FR
\b
0: \x08
*** Failers
No match
a
No match
/^\w+/
*** Failers
No match
École
No match
/^\w+/Lfr_FR
École
0: École
/(.+)\b(.+)/
École
0: \xc9cole
1: \xc9
2: cole
/(.+)\b(.+)/Lfr_FR
*** Failers
0: *** Failers
1: ***
2: Failers
École
No match
/École/i
École
0: \xc9cole
*** Failers
No match
école
No match
/École/iLfr_FR
École
0: École
école
0: école
/\w/IS
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
/\w/ISLfr_FR
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
ª µ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â
ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
/^[\xc8-\xc9]/iLfr_FR
École
0: É
école
0: é
/^[\xc8-\xc9]/Lfr_FR
École
0: É
*** Failers
No match
école
No match
/\W+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[\W]+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[^[:alpha:]]+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/\w+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[\w]+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]]+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]][[:lower:]][[:upper:]]/DZLfr_FR
------------------------------------------------------------------
Bra
[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff]
[a-z\xb5\xdf-\xf6\xf8-\xff]
[A-Z\xc0-\xd6\xd8-\xde]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/-- End of testinput3 --/
+174
View File
@@ -0,0 +1,174 @@
/-- This set of tests checks local-specific features, using the "fr_FR" locale.
It is not Perl-compatible. When run via RunTest, the locale is edited to
be whichever of "fr_FR", "french", or "fr" is found to exist. There is
different version of this file called wintestinput3 for use on Windows,
where the locale is called "french" and the tests are run using
RunTest.bat. --/
< forbid 8W
/^[\w]+/
*** Failers
No match
École
No match
/^[\w]+/Lfr_FR
École
0: École
/^[\w]+/
*** Failers
No match
École
No match
/^[\W]+/
École
0: \xc9
/^[\W]+/Lfr_FR
*** Failers
0: ***
École
No match
/[\b]/
\b
0: \x08
*** Failers
No match
a
No match
/[\b]/Lfr_FR
\b
0: \x08
*** Failers
No match
a
No match
/^\w+/
*** Failers
No match
École
No match
/^\w+/Lfr_FR
École
0: École
/(.+)\b(.+)/
École
0: \xc9cole
1: \xc9
2: cole
/(.+)\b(.+)/Lfr_FR
*** Failers
0: *** Failers
1: ***
2: Failers
École
No match
/École/i
École
0: \xc9cole
*** Failers
No match
école
No match
/École/iLfr_FR
École
0: École
école
0: école
/\w/IS
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
/\w/ISLfr_FR
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
ª µ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â
ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
/^[\xc8-\xc9]/iLfr_FR
École
0: É
école
0: é
/^[\xc8-\xc9]/Lfr_FR
École
0: É
*** Failers
No match
école
No match
/\W+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[\W]+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[^[:alpha:]]+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/\w+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[\w]+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]]+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]][[:lower:]][[:upper:]]/DZLfr_FR
------------------------------------------------------------------
Bra
[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff]
[a-z\xaa\xb5\xba\xdf-\xf6\xf8-\xff]
[A-Z\xc0-\xd6\xd8-\xde]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/-- End of testinput3 --/
+174
View File
@@ -0,0 +1,174 @@
/-- This set of tests checks local-specific features, using the "fr_FR" locale.
It is not Perl-compatible. When run via RunTest, the locale is edited to
be whichever of "fr_FR", "french", or "fr" is found to exist. There is
different version of this file called wintestinput3 for use on Windows,
where the locale is called "french" and the tests are run using
RunTest.bat. --/
< forbid 8W
/^[\w]+/
*** Failers
No match
École
No match
/^[\w]+/Lfr_FR
École
0: École
/^[\w]+/
*** Failers
No match
École
No match
/^[\W]+/
École
0: \xc9
/^[\W]+/Lfr_FR
*** Failers
0: ***
École
No match
/[\b]/
\b
0: \x08
*** Failers
No match
a
No match
/[\b]/Lfr_FR
\b
0: \x08
*** Failers
No match
a
No match
/^\w+/
*** Failers
No match
École
No match
/^\w+/Lfr_FR
École
0: École
/(.+)\b(.+)/
École
0: \xc9cole
1: \xc9
2: cole
/(.+)\b(.+)/Lfr_FR
*** Failers
0: *** Failers
1: ***
2: Failers
École
No match
/École/i
École
0: \xc9cole
*** Failers
No match
école
No match
/École/iLfr_FR
École
0: École
école
0: école
/\w/IS
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
/\w/ISLfr_FR
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
ª µ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â
ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ
/^[\xc8-\xc9]/iLfr_FR
École
0: É
école
0: é
/^[\xc8-\xc9]/Lfr_FR
École
0: É
*** Failers
No match
école
No match
/\W+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[\W]+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[^[:alpha:]]+/Lfr_FR
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/\w+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[\w]+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]]+/Lfr_FR
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]][[:lower:]][[:upper:]]/DZLfr_FR
------------------------------------------------------------------
Bra
[A-Za-z\x83\x8a\x8c\x8e\x9a\x9c\x9e\x9f\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff]
[a-z\x83\x9a\x9c\x9e\xaa\xb5\xba\xdf-\xf6\xf8-\xff]
[A-Z\x8a\x8c\x8e\x9f\xc0-\xd6\xd8-\xde]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/-- End of testinput3 --/
+1280
View File
@@ -0,0 +1,1280 @@
/-- This set of tests is for UTF support, excluding Unicode properties. It is
compatible with all versions of Perl >= 5.10 and both the 8-bit and 16-bit
PCRE libraries. --/
< forbid 9?=ABCDEFfGILMNPTUWXZ<
/a.b/8
acb
0: acb
a\x7fb
0: a\x{7f}b
a\x{100}b
0: a\x{100}b
*** Failers
No match
a\nb
No match
/a(.{3})b/8
a\x{4000}xyb
0: a\x{4000}xyb
1: \x{4000}xy
a\x{4000}\x7fyb
0: a\x{4000}\x{7f}yb
1: \x{4000}\x{7f}y
a\x{4000}\x{100}yb
0: a\x{4000}\x{100}yb
1: \x{4000}\x{100}y
*** Failers
No match
a\x{4000}b
No match
ac\ncb
No match
/a(.*?)(.)/
a\xc0\x88b
0: a\xc0
1:
2: \xc0
/a(.*?)(.)/8
a\x{100}b
0: a\x{100}
1:
2: \x{100}
/a(.*)(.)/
a\xc0\x88b
0: a\xc0\x88b
1: \xc0\x88
2: b
/a(.*)(.)/8
a\x{100}b
0: a\x{100}b
1: \x{100}
2: b
/a(.)(.)/
a\xc0\x92bcd
0: a\xc0\x92
1: \xc0
2: \x92
/a(.)(.)/8
a\x{240}bcd
0: a\x{240}b
1: \x{240}
2: b
/a(.?)(.)/
a\xc0\x92bcd
0: a\xc0\x92
1: \xc0
2: \x92
/a(.?)(.)/8
a\x{240}bcd
0: a\x{240}b
1: \x{240}
2: b
/a(.??)(.)/
a\xc0\x92bcd
0: a\xc0
1:
2: \xc0
/a(.??)(.)/8
a\x{240}bcd
0: a\x{240}
1:
2: \x{240}
/a(.{3})b/8
a\x{1234}xyb
0: a\x{1234}xyb
1: \x{1234}xy
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
1: \x{1234}\x{4321}y
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
1: \x{1234}\x{4321}\x{3412}
*** Failers
No match
a\x{1234}b
No match
ac\ncb
No match
/a(.{3,})b/8
a\x{1234}xyb
0: a\x{1234}xyb
1: \x{1234}xy
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
1: \x{1234}\x{4321}y
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
1: \x{1234}\x{4321}\x{3412}
axxxxbcdefghijb
0: axxxxbcdefghijb
1: xxxxbcdefghij
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
1: \x{1234}\x{4321}\x{3412}\x{3421}
*** Failers
No match
a\x{1234}b
No match
/a(.{3,}?)b/8
a\x{1234}xyb
0: a\x{1234}xyb
1: \x{1234}xy
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
1: \x{1234}\x{4321}y
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
1: \x{1234}\x{4321}\x{3412}
axxxxbcdefghijb
0: axxxxb
1: xxxx
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
1: \x{1234}\x{4321}\x{3412}\x{3421}
*** Failers
No match
a\x{1234}b
No match
/a(.{3,5})b/8
a\x{1234}xyb
0: a\x{1234}xyb
1: \x{1234}xy
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
1: \x{1234}\x{4321}y
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
1: \x{1234}\x{4321}\x{3412}
axxxxbcdefghijb
0: axxxxb
1: xxxx
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
1: \x{1234}\x{4321}\x{3412}\x{3421}
axbxxbcdefghijb
0: axbxxb
1: xbxx
axxxxxbcdefghijb
0: axxxxxb
1: xxxxx
*** Failers
No match
a\x{1234}b
No match
axxxxxxbcdefghijb
No match
/a(.{3,5}?)b/8
a\x{1234}xyb
0: a\x{1234}xyb
1: \x{1234}xy
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
1: \x{1234}\x{4321}y
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
1: \x{1234}\x{4321}\x{3412}
axxxxbcdefghijb
0: axxxxb
1: xxxx
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
1: \x{1234}\x{4321}\x{3412}\x{3421}
axbxxbcdefghijb
0: axbxxb
1: xbxx
axxxxxbcdefghijb
0: axxxxxb
1: xxxxx
*** Failers
No match
a\x{1234}b
No match
axxxxxxbcdefghijb
No match
/^[a\x{c0}]/8
*** Failers
No match
\x{100}
No match
/(?<=aXb)cd/8
aXbcd
0: cd
/(?<=a\x{100}b)cd/8
a\x{100}bcd
0: cd
/(?<=a\x{100000}b)cd/8
a\x{100000}bcd
0: cd
/(?:\x{100}){3}b/8
\x{100}\x{100}\x{100}b
0: \x{100}\x{100}\x{100}b
*** Failers
No match
\x{100}\x{100}b
No match
/\x{ab}/8
\x{ab}
0: \x{ab}
\xc2\xab
0: \x{ab}
*** Failers
No match
\x00{ab}
No match
/(?<=(.))X/8
WXYZ
0: X
1: W
\x{256}XYZ
0: X
1: \x{256}
*** Failers
No match
XYZ
No match
/[^a]+/8g
bcd
0: bcd
\x{100}aY\x{256}Z
0: \x{100}
0: Y\x{256}Z
/^[^a]{2}/8
\x{100}bc
0: \x{100}b
/^[^a]{2,}/8
\x{100}bcAa
0: \x{100}bcA
/^[^a]{2,}?/8
\x{100}bca
0: \x{100}b
/[^a]+/8ig
bcd
0: bcd
\x{100}aY\x{256}Z
0: \x{100}
0: Y\x{256}Z
/^[^a]{2}/8i
\x{100}bc
0: \x{100}b
/^[^a]{2,}/8i
\x{100}bcAa
0: \x{100}bc
/^[^a]{2,}?/8i
\x{100}bca
0: \x{100}b
/\x{100}{0,0}/8
abcd
0:
/\x{100}?/8
abcd
0:
\x{100}\x{100}
0: \x{100}
/\x{100}{0,3}/8
\x{100}\x{100}
0: \x{100}\x{100}
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}
/\x{100}*/8
abce
0:
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
/\x{100}{1,1}/8
abcd\x{100}\x{100}\x{100}\x{100}
0: \x{100}
/\x{100}{1,3}/8
abcd\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}
/\x{100}+/8
abcd\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
/\x{100}{3}/8
abcd\x{100}\x{100}\x{100}XX
0: \x{100}\x{100}\x{100}
/\x{100}{3,5}/8
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
0: \x{100}\x{100}\x{100}\x{100}\x{100}
/\x{100}{3,}/8
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
/(?<=a\x{100}{2}b)X/8+
Xyyya\x{100}\x{100}bXzzz
0: X
0+ zzz
/\D*/8
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\D*/8
\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
/\D/8
1X2
0: X
1\x{100}2
0: \x{100}
/>\S/8
> >X Y
0: >X
> >\x{100} Y
0: >\x{100}
/\d/8
\x{100}3
0: 3
/\s/8
\x{100} X
0:
/\D+/8
12abcd34
0: abcd
*** Failers
0: *** Failers
1234
No match
/\D{2,3}/8
12abcd34
0: abc
12ab34
0: ab
*** Failers
0: ***
1234
No match
12a34
No match
/\D{2,3}?/8
12abcd34
0: ab
12ab34
0: ab
*** Failers
0: **
1234
No match
12a34
No match
/\d+/8
12abcd34
0: 12
*** Failers
No match
/\d{2,3}/8
12abcd34
0: 12
1234abcd
0: 123
*** Failers
No match
1.4
No match
/\d{2,3}?/8
12abcd34
0: 12
1234abcd
0: 12
*** Failers
No match
1.4
No match
/\S+/8
12abcd34
0: 12abcd34
*** Failers
0: ***
\ \
No match
/\S{2,3}/8
12abcd34
0: 12a
1234abcd
0: 123
*** Failers
0: ***
\ \
No match
/\S{2,3}?/8
12abcd34
0: 12
1234abcd
0: 12
*** Failers
0: **
\ \
No match
/>\s+</8+
12> <34
0: > <
0+ 34
*** Failers
No match
/>\s{2,3}</8+
ab> <cd
0: > <
0+ cd
ab> <ce
0: > <
0+ ce
*** Failers
No match
ab> <cd
No match
/>\s{2,3}?</8+
ab> <cd
0: > <
0+ cd
ab> <ce
0: > <
0+ ce
*** Failers
No match
ab> <cd
No match
/\w+/8
12 34
0: 12
*** Failers
0: Failers
+++=*!
No match
/\w{2,3}/8
ab cd
0: ab
abcd ce
0: abc
*** Failers
0: Fai
a.b.c
No match
/\w{2,3}?/8
ab cd
0: ab
abcd ce
0: ab
*** Failers
0: Fa
a.b.c
No match
/\W+/8
12====34
0: ====
*** Failers
0: ***
abcd
No match
/\W{2,3}/8
ab====cd
0: ===
ab==cd
0: ==
*** Failers
0: ***
a.b.c
No match
/\W{2,3}?/8
ab====cd
0: ==
ab==cd
0: ==
*** Failers
0: **
a.b.c
No match
/[\x{100}]/8
\x{100}
0: \x{100}
Z\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[Z\x{100}]/8
Z\x{100}
0: Z
\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[\x{100}\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
*** Failers
No match
/[\x{100}-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
*** Failers
No match
/[z-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
abzcd
0: z
ab|cd
0: |
*** Failers
No match
/[Q\x{100}\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
Q?
0: Q
*** Failers
No match
/[Q\x{100}-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
Q?
0: Q
*** Failers
No match
/[Qz-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
abzcd
0: z
ab|cd
0: |
Q?
0: Q
*** Failers
No match
/[\x{100}\x{200}]{1,3}/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}\x{100}\x{200}
*** Failers
No match
/[\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}
*** Failers
No match
/[Q\x{100}\x{200}]{1,3}/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}\x{100}\x{200}
*** Failers
No match
/[Q\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}
*** Failers
No match
/(?<=[\x{100}\x{200}])X/8
abc\x{200}X
0: X
abc\x{100}X
0: X
*** Failers
No match
X
No match
/(?<=[Q\x{100}\x{200}])X/8
abc\x{200}X
0: X
abc\x{100}X
0: X
abQX
0: X
*** Failers
No match
X
No match
/(?<=[\x{100}\x{200}]{3})X/8
abc\x{100}\x{200}\x{100}X
0: X
*** Failers
No match
abc\x{200}X
No match
X
No match
/[^\x{100}\x{200}]X/8
AX
0: AX
\x{150}X
0: \x{150}X
\x{500}X
0: \x{500}X
*** Failers
No match
\x{100}X
No match
\x{200}X
No match
/[^Q\x{100}\x{200}]X/8
AX
0: AX
\x{150}X
0: \x{150}X
\x{500}X
0: \x{500}X
*** Failers
No match
\x{100}X
No match
\x{200}X
No match
QX
No match
/[^\x{100}-\x{200}]X/8
AX
0: AX
\x{500}X
0: \x{500}X
*** Failers
No match
\x{100}X
No match
\x{150}X
No match
\x{200}X
No match
/[z-\x{100}]/8i
z
0: z
Z
0: Z
\x{100}
0: \x{100}
*** Failers
No match
\x{102}
No match
y
No match
/[\xFF]/
>\xff<
0: \xff
/[\xff]/8
>\x{ff}<
0: \x{ff}
/[^\xFF]/
XYZ
0: X
/[^\xff]/8
XYZ
0: X
\x{123}
0: \x{123}
/^[ac]*b/8
xb
No match
/^[ac\x{100}]*b/8
xb
No match
/^[^x]*b/8i
xb
No match
/^[^x]*b/8
xb
No match
/^\d*b/8
xb
No match
/(|a)/g8
catac
0:
1:
0:
1:
0: a
1: a
0:
1:
0:
1:
0: a
1: a
0:
1:
0:
1:
a\x{256}a
0:
1:
0: a
1: a
0:
1:
0:
1:
0: a
1: a
0:
1:
/^\x{85}$/8i
\x{85}
0: \x{85}
/^ሴ/8
0: \x{1234}
/^\ሴ/8
0: \x{1234}
"(?s)(.{1,5})"8
abcdefg
0: abcde
1: abcde
ab
0: ab
1: ab
/a*\x{100}*\w/8
a
0: a
/\S\S/8g
A\x{a3}BC
0: A\x{a3}
0: BC
/\S{2}/8g
A\x{a3}BC
0: A\x{a3}
0: BC
/\W\W/8g
+\x{a3}==
0: +\x{a3}
0: ==
/\W{2}/8g
+\x{a3}==
0: +\x{a3}
0: ==
/\S/8g
\x{442}\x{435}\x{441}\x{442}
0: \x{442}
0: \x{435}
0: \x{441}
0: \x{442}
/[\S]/8g
\x{442}\x{435}\x{441}\x{442}
0: \x{442}
0: \x{435}
0: \x{441}
0: \x{442}
/\D/8g
\x{442}\x{435}\x{441}\x{442}
0: \x{442}
0: \x{435}
0: \x{441}
0: \x{442}
/[\D]/8g
\x{442}\x{435}\x{441}\x{442}
0: \x{442}
0: \x{435}
0: \x{441}
0: \x{442}
/\W/8g
\x{2442}\x{2435}\x{2441}\x{2442}
0: \x{2442}
0: \x{2435}
0: \x{2441}
0: \x{2442}
/[\W]/8g
\x{2442}\x{2435}\x{2441}\x{2442}
0: \x{2442}
0: \x{2435}
0: \x{2441}
0: \x{2442}
/[\S\s]*/8
abc\n\r\x{442}\x{435}\x{441}\x{442}xyz
0: abc\x{0a}\x{0d}\x{442}\x{435}\x{441}\x{442}xyz
/[\x{41f}\S]/8g
\x{442}\x{435}\x{441}\x{442}
0: \x{442}
0: \x{435}
0: \x{441}
0: \x{442}
/.[^\S]./8g
abc def\x{442}\x{443}xyz\npqr
0: c d
0: z\x{0a}p
/.[^\S\n]./8g
abc def\x{442}\x{443}xyz\npqr
0: c d
/[[:^alnum:]]/8g
+\x{2442}
0: +
0: \x{2442}
/[[:^alpha:]]/8g
+\x{2442}
0: +
0: \x{2442}
/[[:^ascii:]]/8g
A\x{442}
0: \x{442}
/[[:^blank:]]/8g
A\x{442}
0: A
0: \x{442}
/[[:^cntrl:]]/8g
A\x{442}
0: A
0: \x{442}
/[[:^digit:]]/8g
A\x{442}
0: A
0: \x{442}
/[[:^graph:]]/8g
\x19\x{e01ff}
0: \x{19}
0: \x{e01ff}
/[[:^lower:]]/8g
A\x{422}
0: A
0: \x{422}
/[[:^print:]]/8g
\x{19}\x{e01ff}
0: \x{19}
0: \x{e01ff}
/[[:^punct:]]/8g
A\x{442}
0: A
0: \x{442}
/[[:^space:]]/8g
A\x{442}
0: A
0: \x{442}
/[[:^upper:]]/8g
a\x{442}
0: a
0: \x{442}
/[[:^word:]]/8g
+\x{2442}
0: +
0: \x{2442}
/[[:^xdigit:]]/8g
M\x{442}
0: M
0: \x{442}
/[^ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉƊƋƎƏƐƑƓƔƖƗƘƜƝƟƠƢƤƦƧƩƬƮƯƱƲƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶǷǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁΆΈΉΊΌΎΏΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫϒϓϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸԀԂԄԆԈԊԌԎԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸἈἉἊἋἌἍἎἏἘἙἚἛἜἝἨἩἪἫἬἭἮἯἸἹἺἻἼἽἾἿὈὉὊὋὌὍὙὛὝὟὨὩὪὫὬὭὮὯᾸᾹᾺΆῈΈῊΉῘῙῚΊῨῩῪΎῬῸΌῺΏabcdefghijklmnopqrstuvwxyzªµºßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżžſƀƃƅƈƌƍƒƕƙƚƛƞơƣƥƨƪƫƭưƴƶƹƺƽƾƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳȴȵȶȷȸȹȼȿɀɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϐϑϕϖϗϙϛϝϟϡϣϥϧϩϫϭϯϰϱϲϳϵϸϻϼабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹԁԃԅԇԉԋԍԏաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵹᵺᵻᵼᵽᵾᵿᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕẖẗẘẙẚẛạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹἀἁἂἃἄἅἆἇἐἑἒἓἔἕἠἡἢἣἤἥἦἧἰἱἲἳἴἵἶἷὀὁὂὃὄὅὐὑὒὓὔὕὖὗὠὡὢὣὤὥὦὧὰάὲέὴήὶίὸόὺύὼώᾀᾁᾂᾃᾄᾅᾆᾇᾐᾑᾒᾓᾔᾕᾖᾗᾠᾡᾢᾣᾤᾥᾦᾧᾰᾱᾲᾳᾴᾶᾷιῂῃῄῆῇῐῑῒΐῖῗῠῡῢΰῤῥῦῧῲῳῴῶῷⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⴀⴁⴂⴃⴄⴅⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟⴠⴡⴢⴣⴤⴥfffiflffifflſtstﬓﬔﬕﬖﬗ\d-_^]/8
/^[^d]*?$/
abc
0: abc
/^[^d]*?$/8
abc
0: abc
/^[^d]*?$/i
abc
0: abc
/^[^d]*?$/8i
abc
0: abc
/(?i)[\xc3\xa9\xc3\xbd]|[\xc3\xa9\xc3\xbdA]/8
/^[a\x{c0}]b/8
\x{c0}b
0: \x{c0}b
/^([a\x{c0}]*?)aa/8
a\x{c0}aaaa/
0: a\x{c0}aa
1: a\x{c0}
/^([a\x{c0}]*?)aa/8
a\x{c0}aaaa/
0: a\x{c0}aa
1: a\x{c0}
a\x{c0}a\x{c0}aaa/
0: a\x{c0}a\x{c0}aa
1: a\x{c0}a\x{c0}
/^([a\x{c0}]*)aa/8
a\x{c0}aaaa/
0: a\x{c0}aaaa
1: a\x{c0}aa
a\x{c0}a\x{c0}aaa/
0: a\x{c0}a\x{c0}aaa
1: a\x{c0}a\x{c0}a
/^([a\x{c0}]*)a\x{c0}/8
a\x{c0}aaaa/
0: a\x{c0}
1:
a\x{c0}a\x{c0}aaa/
0: a\x{c0}a\x{c0}
1: a\x{c0}
/A*/g8
AAB\x{123}BAA
0: AA
0:
0:
0:
0: AA
0:
/(abc)\1/8i
abc
No match
/(abc)\1/8
abc
No match
/a(*:a\x{1234}b)/8K
abc
0: a
MK: a\x{1234}b
/a(*:a£b)/8K
abc
0: a
MK: a\x{a3}b
/-- Noncharacters --/
/./8
\x{fffe}
0: \x{fffe}
\x{ffff}
0: \x{ffff}
\x{1fffe}
0: \x{1fffe}
\x{1ffff}
0: \x{1ffff}
\x{2fffe}
0: \x{2fffe}
\x{2ffff}
0: \x{2ffff}
\x{3fffe}
0: \x{3fffe}
\x{3ffff}
0: \x{3ffff}
\x{4fffe}
0: \x{4fffe}
\x{4ffff}
0: \x{4ffff}
\x{5fffe}
0: \x{5fffe}
\x{5ffff}
0: \x{5ffff}
\x{6fffe}
0: \x{6fffe}
\x{6ffff}
0: \x{6ffff}
\x{7fffe}
0: \x{7fffe}
\x{7ffff}
0: \x{7ffff}
\x{8fffe}
0: \x{8fffe}
\x{8ffff}
0: \x{8ffff}
\x{9fffe}
0: \x{9fffe}
\x{9ffff}
0: \x{9ffff}
\x{afffe}
0: \x{afffe}
\x{affff}
0: \x{affff}
\x{bfffe}
0: \x{bfffe}
\x{bffff}
0: \x{bffff}
\x{cfffe}
0: \x{cfffe}
\x{cffff}
0: \x{cffff}
\x{dfffe}
0: \x{dfffe}
\x{dffff}
0: \x{dffff}
\x{efffe}
0: \x{efffe}
\x{effff}
0: \x{effff}
\x{ffffe}
0: \x{ffffe}
\x{fffff}
0: \x{fffff}
\x{10fffe}
0: \x{10fffe}
\x{10ffff}
0: \x{10ffff}
\x{fdd0}
0: \x{fdd0}
\x{fdd1}
0: \x{fdd1}
\x{fdd2}
0: \x{fdd2}
\x{fdd3}
0: \x{fdd3}
\x{fdd4}
0: \x{fdd4}
\x{fdd5}
0: \x{fdd5}
\x{fdd6}
0: \x{fdd6}
\x{fdd7}
0: \x{fdd7}
\x{fdd8}
0: \x{fdd8}
\x{fdd9}
0: \x{fdd9}
\x{fdda}
0: \x{fdda}
\x{fddb}
0: \x{fddb}
\x{fddc}
0: \x{fddc}
\x{fddd}
0: \x{fddd}
\x{fdde}
0: \x{fdde}
\x{fddf}
0: \x{fddf}
\x{fde0}
0: \x{fde0}
\x{fde1}
0: \x{fde1}
\x{fde2}
0: \x{fde2}
\x{fde3}
0: \x{fde3}
\x{fde4}
0: \x{fde4}
\x{fde5}
0: \x{fde5}
\x{fde6}
0: \x{fde6}
\x{fde7}
0: \x{fde7}
\x{fde8}
0: \x{fde8}
\x{fde9}
0: \x{fde9}
\x{fdea}
0: \x{fdea}
\x{fdeb}
0: \x{fdeb}
\x{fdec}
0: \x{fdec}
\x{fded}
0: \x{fded}
\x{fdee}
0: \x{fdee}
\x{fdef}
0: \x{fdef}
/^\d*\w{4}/8
1234
0: 1234
123
No match
/^[^b]*\w{4}/8
aaaa
0: aaaa
aaa
No match
/^[^b]*\w{4}/8i
aaaa
0: aaaa
aaa
No match
/^\x{100}*.{4}/8
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
\x{100}\x{100}\x{100}
No match
/^\x{100}*.{4}/8i
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
\x{100}\x{100}\x{100}
No match
/^a+[a\x{200}]/8
aa
0: aa
/^.\B.\B./8
\x{10123}\x{10124}\x{10125}
0: \x{10123}\x{10124}\x{10125}
/^#[^\x{ffff}]#[^\x{ffff}]#[^\x{ffff}]#/8
#\x{10000}#\x{100}#\x{10ffff}#
0: #\x{10000}#\x{100}#\x{10ffff}#
"[\S\V\H]"8
/\C(\W?ſ)'?{{/8
\\C(\\W?ſ)'?{{
No match
/-- End of testinput4 --/
+1945
View File
@@ -0,0 +1,1945 @@
/-- This set of tests checks the API, internals, and non-Perl stuff for UTF
support, excluding Unicode properties. However, tests that give different
results in 8-bit and 16-bit modes are excluded (see tests 16 and 17). --/
< forbid W
/\x{110000}/8DZ
Failed: character value in \x{} or \o{} is too large at offset 9
/\o{4200000}/8DZ
Failed: character value in \x{} or \o{} is too large at offset 10
/\x{ffffffff}/8
Failed: character value in \x{} or \o{} is too large at offset 11
/\o{37777777777}/8
Failed: character value in \x{} or \o{} is too large at offset 14
/\x{100000000}/8
Failed: character value in \x{} or \o{} is too large at offset 12
/\o{77777777777}/8
Failed: character value in \x{} or \o{} is too large at offset 14
/\x{d800}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
/\o{154000}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 9
/\x{dfff}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
/\o{157777}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 9
/\x{d7ff}/8
/\o{153777}/8
/\x{e000}/8
/\o{170000}/8
/^\x{100}a\x{1234}/8
\x{100}a\x{1234}bcd
0: \x{100}a\x{1234}
/\x{0041}\x{2262}\x{0391}\x{002e}/DZ8
------------------------------------------------------------------
Bra
A\x{2262}\x{391}.
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'A'
Need char = '.'
\x{0041}\x{2262}\x{0391}\x{002e}
0: A\x{2262}\x{391}.
/.{3,5}X/DZ8
------------------------------------------------------------------
Bra
Any{3}
Any{0,2}
X
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'X'
\x{212ab}\x{212ab}\x{212ab}\x{861}X
0: \x{212ab}\x{212ab}\x{212ab}\x{861}X
/.{3,5}?/DZ8
------------------------------------------------------------------
Bra
Any{3}
Any{0,2}?
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
\x{212ab}\x{212ab}\x{212ab}\x{861}
0: \x{212ab}\x{212ab}\x{212ab}
/(?<=\C)X/8
Failed: \C not allowed in lookbehind assertion at offset 6
/^[ab]/8DZ
------------------------------------------------------------------
Bra
^
[ab]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf
No first char
No need char
bar
0: b
*** Failers
No match
c
No match
\x{ff}
No match
\x{100}
No match
/^[^ab]/8DZ
------------------------------------------------------------------
Bra
^
[\x00-`c-\xff] (neg)
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf
No first char
No need char
c
0: c
\x{ff}
0: \x{ff}
\x{100}
0: \x{100}
*** Failers
0: *
aaa
No match
/\x{100}*(\d+|"(?1)")/8
1234
0: 1234
1: 1234
"1234"
0: "1234"
1: "1234"
\x{100}1234
0: \x{100}1234
1: 1234
"\x{100}1234"
0: \x{100}1234
1: 1234
\x{100}\x{100}12ab
0: \x{100}\x{100}12
1: 12
\x{100}\x{100}"12"
0: \x{100}\x{100}"12"
1: "12"
*** Failers
No match
\x{100}\x{100}abcd
No match
/\x{100}*/8DZ
------------------------------------------------------------------
Bra
\x{100}*+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
May match empty string
Options: utf
No first char
No need char
/a\x{100}*/8DZ
------------------------------------------------------------------
Bra
a
\x{100}*+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
No need char
/ab\x{100}*/8DZ
------------------------------------------------------------------
Bra
ab
\x{100}*+
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First char = 'a'
Need char = 'b'
/\x{100}*A/8DZ
------------------------------------------------------------------
Bra
\x{100}*+
A
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
Need char = 'A'
A
0: A
/\x{100}*\d(?R)/8DZ
------------------------------------------------------------------
Bra
\x{100}*+
\d
Recurse
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/[Z\x{100}]/8DZ
------------------------------------------------------------------
Bra
[Z\x{100}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
Z\x{100}
0: Z
\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[\x{200}-\x{100}]/8
Failed: range out of order in character class at offset 15
/[Ā-Ą]/8
\x{100}
0: \x{100}
\x{104}
0: \x{104}
*** Failers
No match
\x{105}
No match
\x{ff}
No match
/[z-\x{100}]/8DZ
------------------------------------------------------------------
Bra
[z-\xff\x{100}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/[z\Qa-d]Ā\E]/8DZ
------------------------------------------------------------------
Bra
[\-\]adz\x{100}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
\x{100}
0: \x{100}
Ā
0: \x{100}
/[\xFF]/DZ
------------------------------------------------------------------
Bra
\x{ff}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
First char = \xff
No need char
>\xff<
0: \xff
/[^\xFF]/DZ
------------------------------------------------------------------
Bra
[^\x{ff}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[Ä-Ü]/8
Ö # Matches without Study
0: \x{d6}
\x{d6}
0: \x{d6}
/[Ä-Ü]/8S
Ö <-- Same with Study
0: \x{d6}
\x{d6}
0: \x{d6}
/[\x{c4}-\x{dc}]/8
Ö # Matches without Study
0: \x{d6}
\x{d6}
0: \x{d6}
/[\x{c4}-\x{dc}]/8S
Ö <-- Same with Study
0: \x{d6}
\x{d6}
0: \x{d6}
/[^\x{100}]abc(xyz(?1))/8DZ
------------------------------------------------------------------
Bra
[^\x{100}]
abc
CBra 1
xyz
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
Need char = 'z'
/[ab\x{100}]abc(xyz(?1))/8DZ
------------------------------------------------------------------
Bra
[ab\x{100}]
abc
CBra 1
xyz
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
Need char = 'z'
/(\x{100}(b(?2)c))?/DZ8
------------------------------------------------------------------
Bra
Brazero
CBra 1
\x{100}
CBra 2
b
Recurse
c
Ket
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 2
May match empty string
Options: utf
No first char
No need char
/(\x{100}(b(?2)c)){0,2}/DZ8
------------------------------------------------------------------
Bra
Brazero
Bra
CBra 1
\x{100}
CBra 2
b
Recurse
c
Ket
Ket
Brazero
CBra 1
\x{100}
CBra 2
b
Recurse
c
Ket
Ket
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 2
May match empty string
Options: utf
No first char
No need char
/(\x{100}(b(?1)c))?/DZ8
------------------------------------------------------------------
Bra
Brazero
CBra 1
\x{100}
CBra 2
b
Recurse
c
Ket
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 2
May match empty string
Options: utf
No first char
No need char
/(\x{100}(b(?1)c)){0,2}/DZ8
------------------------------------------------------------------
Bra
Brazero
Bra
CBra 1
\x{100}
CBra 2
b
Recurse
c
Ket
Ket
Brazero
CBra 1
\x{100}
CBra 2
b
Recurse
c
Ket
Ket
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 2
May match empty string
Options: utf
No first char
No need char
/\W/8
A.B
0: .
A\x{100}B
0: \x{100}
/\w/8
\x{100}X
0: X
/^\ሴ/8DZ
------------------------------------------------------------------
Bra
^
\x{1234}
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf
No first char
No need char
/\x{100}*\d/8DZ
------------------------------------------------------------------
Bra
\x{100}*+
\d
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}*\s/8DZ
------------------------------------------------------------------
Bra
\x{100}*+
\s
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}*\w/8DZ
------------------------------------------------------------------
Bra
\x{100}*+
\w
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}*\D/8DZ
------------------------------------------------------------------
Bra
\x{100}*
\D
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}*\S/8DZ
------------------------------------------------------------------
Bra
\x{100}*
\S
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/\x{100}*\W/8DZ
------------------------------------------------------------------
Bra
\x{100}*
\W
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/()()()()()()()()()()
()()()()()()()()()()
()()()()()()()()()()
()()()()()()()()()()
A (x) (?41) B/8x
AxxB
Matched, but too many substrings
0: AxxB
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
/^[\x{100}\E-\Q\E\x{150}]/BZ8
------------------------------------------------------------------
Bra
^
[\x{100}-\x{150}]
Ket
End
------------------------------------------------------------------
/^[\QĀ\E-\QŐ\E]/BZ8
------------------------------------------------------------------
Bra
^
[\x{100}-\x{150}]
Ket
End
------------------------------------------------------------------
/^abc./mgx8<any>
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
0: abc1
0: abc2
0: abc3
0: abc4
0: abc5
0: abc6
0: abc7
0: abc8
0: abc9
/abc.$/mgx8<any>
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
0: abc1
0: abc2
0: abc3
0: abc4
0: abc5
0: abc6
0: abc7
0: abc8
0: abc9
/^a\Rb/8<bsr_unicode>
a\nb
0: a\x{0a}b
a\rb
0: a\x{0d}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x0bb
0: a\x{0b}b
a\x0cb
0: a\x{0c}b
a\x{85}b
0: a\x{85}b
a\x{2028}b
0: a\x{2028}b
a\x{2029}b
0: a\x{2029}b
** Failers
No match
a\n\rb
No match
/^a\R*b/8<bsr_unicode>
ab
0: ab
a\nb
0: a\x{0a}b
a\rb
0: a\x{0d}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x0bb
0: a\x{0b}b
a\x0c\x{2028}\x{2029}b
0: a\x{0c}\x{2028}\x{2029}b
a\x{85}b
0: a\x{85}b
a\n\rb
0: a\x{0a}\x{0d}b
a\n\r\x{85}\x0cb
0: a\x{0a}\x{0d}\x{85}\x{0c}b
/^a\R+b/8<bsr_unicode>
a\nb
0: a\x{0a}b
a\rb
0: a\x{0d}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x0bb
0: a\x{0b}b
a\x0c\x{2028}\x{2029}b
0: a\x{0c}\x{2028}\x{2029}b
a\x{85}b
0: a\x{85}b
a\n\rb
0: a\x{0a}\x{0d}b
a\n\r\x{85}\x0cb
0: a\x{0a}\x{0d}\x{85}\x{0c}b
** Failers
No match
ab
No match
/^a\R{1,3}b/8<bsr_unicode>
a\nb
0: a\x{0a}b
a\n\rb
0: a\x{0a}\x{0d}b
a\n\r\x{85}b
0: a\x{0a}\x{0d}\x{85}b
a\r\n\r\nb
0: a\x{0d}\x{0a}\x{0d}\x{0a}b
a\r\n\r\n\r\nb
0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
a\n\r\n\rb
0: a\x{0a}\x{0d}\x{0a}\x{0d}b
a\n\n\r\nb
0: a\x{0a}\x{0a}\x{0d}\x{0a}b
** Failers
No match
a\n\n\n\rb
No match
a\r
No match
/\H\h\V\v/8
X X\x0a
0: X X\x{0a}
X\x09X\x0b
0: X\x{09}X\x{0b}
** Failers
No match
\x{a0} X\x0a
No match
/\H*\h+\V?\v{3,4}/8
\x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
\x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
\x09\x20\x{a0}\x0a\x0b\x0c
0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
** Failers
No match
\x09\x20\x{a0}\x0a\x0b
No match
/\H\h\V\v/8
\x{3001}\x{3000}\x{2030}\x{2028}
0: \x{3001}\x{3000}\x{2030}\x{2028}
X\x{180e}X\x{85}
0: X\x{180e}X\x{85}
** Failers
No match
\x{2009} X\x0a
No match
/\H*\h+\V?\v{3,4}/8
\x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
\x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
\x09\x20\x{202f}\x0a\x0b\x0c
0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
** Failers
No match
\x09\x{200a}\x{a0}\x{2028}\x0b
No match
/[\h]/8BZ
------------------------------------------------------------------
Bra
[\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
Ket
End
------------------------------------------------------------------
>\x{1680}
0: \x{1680}
/[\h]{3,}/8BZ
------------------------------------------------------------------
Bra
[\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]{3,}+
Ket
End
------------------------------------------------------------------
>\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
0: \x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}
/[\v]/8BZ
------------------------------------------------------------------
Bra
[\x0a-\x0d\x85\x{2028}-\x{2029}]
Ket
End
------------------------------------------------------------------
/[\H]/8BZ
------------------------------------------------------------------
Bra
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}]
Ket
End
------------------------------------------------------------------
/[\V]/8BZ
------------------------------------------------------------------
Bra
[\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]
Ket
End
------------------------------------------------------------------
/.*$/8<any>
\x{1ec5}
0: \x{1ec5}
/a\Rb/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
** Failers
No match
a\x{85}b
No match
a\x0bb
No match
/a\Rb/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x{85}b
0: a\x{85}b
a\x0bb
0: a\x{0b}b
** Failers
No match
a\x{85}b\<bsr_anycrlf>
No match
a\x0bb\<bsr_anycrlf>
No match
/a\R?b/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
** Failers
No match
a\x{85}b
No match
a\x0bb
No match
/a\R?b/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x{85}b
0: a\x{85}b
a\x0bb
0: a\x{0b}b
** Failers
No match
a\x{85}b\<bsr_anycrlf>
No match
a\x0bb\<bsr_anycrlf>
No match
/.*a.*=.b.*/8<ANY>
QQQ\x{2029}ABCaXYZ=!bPQR
0: ABCaXYZ=!bPQR
** Failers
No match
a\x{2029}b
No match
\x61\xe2\x80\xa9\x62
No match
/[[:a\x{100}b:]]/8
Failed: unknown POSIX class name at offset 3
/a[^]b/<JS>8
a\x{1234}b
0: a\x{1234}b
a\nb
0: a\x{0a}b
** Failers
No match
ab
No match
/a[^]+b/<JS>8
aXb
0: aXb
a\nX\nX\x{1234}b
0: a\x{0a}X\x{0a}X\x{1234}b
** Failers
No match
ab
No match
/(\x{de})\1/
\x{de}\x{de}
0: \xde\xde
1: \xde
/X/8f<any>
A\x{1ec5}ABCXYZ
0: X
/Xa{2,4}b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/Xa{2,4}?b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/Xa{2,4}+b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X\x{123}{2,4}b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X\x{123}{2,4}?b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X\x{123}{2,4}+b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X\x{123}{2,4}b/8
Xx\P
No match
X\x{123}x\P
No match
X\x{123}\x{123}x\P
No match
X\x{123}\x{123}\x{123}x\P
No match
X\x{123}\x{123}\x{123}\x{123}x\P
No match
/X\x{123}{2,4}?b/8
Xx\P
No match
X\x{123}x\P
No match
X\x{123}\x{123}x\P
No match
X\x{123}\x{123}\x{123}x\P
No match
X\x{123}\x{123}\x{123}\x{123}x\P
No match
/X\x{123}{2,4}+b/8
Xx\P
No match
X\x{123}x\P
No match
X\x{123}\x{123}x\P
No match
X\x{123}\x{123}\x{123}x\P
No match
X\x{123}\x{123}\x{123}\x{123}x\P
No match
/X\d{2,4}b/8
X\P
Partial match: X
X3\P
Partial match: X3
X33\P
Partial match: X33
X333\P
Partial match: X333
X3333\P
Partial match: X3333
/X\d{2,4}?b/8
X\P
Partial match: X
X3\P
Partial match: X3
X33\P
Partial match: X33
X333\P
Partial match: X333
X3333\P
Partial match: X3333
/X\d{2,4}+b/8
X\P
Partial match: X
X3\P
Partial match: X3
X33\P
Partial match: X33
X333\P
Partial match: X333
X3333\P
Partial match: X3333
/X\D{2,4}b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X\D{2,4}?b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X\D{2,4}+b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X\D{2,4}b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X\D{2,4}?b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X\D{2,4}+b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X[abc]{2,4}b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X[abc]{2,4}?b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X[abc]{2,4}+b/8
X\P
Partial match: X
Xa\P
Partial match: Xa
Xaa\P
Partial match: Xaa
Xaaa\P
Partial match: Xaaa
Xaaaa\P
Partial match: Xaaaa
/X[abc\x{123}]{2,4}b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X[abc\x{123}]{2,4}?b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X[abc\x{123}]{2,4}+b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X[^a]{2,4}b/8
X\P
Partial match: X
Xz\P
Partial match: Xz
Xzz\P
Partial match: Xzz
Xzzz\P
Partial match: Xzzz
Xzzzz\P
Partial match: Xzzzz
/X[^a]{2,4}?b/8
X\P
Partial match: X
Xz\P
Partial match: Xz
Xzz\P
Partial match: Xzz
Xzzz\P
Partial match: Xzzz
Xzzzz\P
Partial match: Xzzzz
/X[^a]{2,4}+b/8
X\P
Partial match: X
Xz\P
Partial match: Xz
Xzz\P
Partial match: Xzz
Xzzz\P
Partial match: Xzzz
Xzzzz\P
Partial match: Xzzzz
/X[^a]{2,4}b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X[^a]{2,4}?b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/X[^a]{2,4}+b/8
X\P
Partial match: X
X\x{123}\P
Partial match: X\x{123}
X\x{123}\x{123}\P
Partial match: X\x{123}\x{123}
X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
X\x{123}\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}\x{123}
/(Y)X\1{2,4}b/8
YX\P
Partial match: YX
YXY\P
Partial match: YXY
YXYY\P
Partial match: YXYY
YXYYY\P
Partial match: YXYYY
YXYYYY\P
Partial match: YXYYYY
/(Y)X\1{2,4}?b/8
YX\P
Partial match: YX
YXY\P
Partial match: YXY
YXYY\P
Partial match: YXYY
YXYYY\P
Partial match: YXYYY
YXYYYY\P
Partial match: YXYYYY
/(Y)X\1{2,4}+b/8
YX\P
Partial match: YX
YXY\P
Partial match: YXY
YXYY\P
Partial match: YXYY
YXYYY\P
Partial match: YXYYY
YXYYYY\P
Partial match: YXYYYY
/(\x{123})X\1{2,4}b/8
\x{123}X\P
Partial match: \x{123}X
\x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
\x{123}X\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}
\x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
\x{123}X\x{123}\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
/(\x{123})X\1{2,4}?b/8
\x{123}X\P
Partial match: \x{123}X
\x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
\x{123}X\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}
\x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
\x{123}X\x{123}\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
/(\x{123})X\1{2,4}+b/8
\x{123}X\P
Partial match: \x{123}X
\x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
\x{123}X\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}
\x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
\x{123}X\x{123}\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
/\bthe cat\b/8
the cat\P
0: the cat
the cat\P\P
Partial match: the cat
/abcd*/8
xxxxabcd\P
0: abcd
xxxxabcd\P\P
Partial match: abcd
/abcd*/i8
xxxxabcd\P
0: abcd
xxxxabcd\P\P
Partial match: abcd
XXXXABCD\P
0: ABCD
XXXXABCD\P\P
Partial match: ABCD
/abc\d*/8
xxxxabc1\P
0: abc1
xxxxabc1\P\P
Partial match: abc1
/(a)bc\1*/8
xxxxabca\P
0: abca
1: a
xxxxabca\P\P
Partial match: abca
/abc[de]*/8
xxxxabcde\P
0: abcde
xxxxabcde\P\P
Partial match: abcde
/X\W{3}X/8
\PX
Partial match: X
/\sxxx\s/8T1
AB\x{85}xxx\x{a0}XYZ
0: \x{85}xxx\x{a0}
AB\x{a0}xxx\x{85}XYZ
0: \x{a0}xxx\x{85}
/\S \S/8T1
\x{a2} \x{84}
0: \x{a2} \x{84}
'A#хц'8x<any>BZ
------------------------------------------------------------------
Bra
A
Ket
End
------------------------------------------------------------------
'A#хц
PQ'8x<any>BZ
------------------------------------------------------------------
Bra
APQ
Ket
End
------------------------------------------------------------------
/a+#хaa
z#XX?/8x<any>BZ
------------------------------------------------------------------
Bra
a++
z
Ket
End
------------------------------------------------------------------
/a+#хaa
z#х?/8x<any>BZ
------------------------------------------------------------------
Bra
a++
z
Ket
End
------------------------------------------------------------------
/\g{A}xxx#bXX(?'A'123)␍(?'A'456)/8x<any>BZ
------------------------------------------------------------------
Bra
\1
xxx
CBra 1
456
Ket
Ket
End
------------------------------------------------------------------
/\g{A}xxx#bх(?'A'123)␍(?'A'456)/8x<any>BZ
------------------------------------------------------------------
Bra
\1
xxx
CBra 1
456
Ket
Ket
End
------------------------------------------------------------------
/^\cģ/8
Failed: \c must be followed by an ASCII character at offset 3
/(\R*)(.)/s8
\r\n
0: \x{0d}
1:
2: \x{0d}
\r\r\n\n\r
0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1: \x{0d}\x{0d}\x{0a}\x{0a}
2: \x{0d}
\r\r\n\n\r\n
0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1: \x{0d}\x{0d}\x{0a}\x{0a}
2: \x{0d}
/(\R)*(.)/s8
\r\n
0: \x{0d}
1: <unset>
2: \x{0d}
\r\r\n\n\r
0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1: \x{0a}
2: \x{0d}
\r\r\n\n\r\n
0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
1: \x{0a}
2: \x{0d}
/[^\x{1234}]+/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
No starting char list
/[^\x{1234}]+?/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
No starting char list
/[^\x{1234}]++/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 1
No starting char list
/[^\x{1234}]{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Subject length lower bound = 2
No starting char list
//<bsr_anycrlf><bsr_unicode>
Failed: inconsistent NEWLINE options at offset 0
/f.*/
\P\Pfor
Partial match: for
/f.*/s
\P\Pfor
Partial match: for
/f.*/8
\P\Pfor
Partial match: for
/f.*/8s
\P\Pfor
Partial match: for
/\x{d7ff}\x{e000}/8
/\x{d800}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
/\x{dfff}/8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 7
/\h+/8
\x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
0: \x{1680}\x{2000}\x{202f}\x{3000}
\x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
0: \x{200a}\x{a0}\x{2000}
/[\h\x{e000}]+/8BZ
------------------------------------------------------------------
Bra
[\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{e000}]++
Ket
End
------------------------------------------------------------------
\x{1681}\x{200b}\x{1680}\x{2000}\x{202f}\x{3000}
0: \x{1680}\x{2000}\x{202f}\x{3000}
\x{3001}\x{2fff}\x{200a}\x{a0}\x{2000}
0: \x{200a}\x{a0}\x{2000}
/\H+/8
\x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
0: \x{167f}\x{1681}\x{180d}\x{180f}
\x{2000}\x{200a}\x{1fff}\x{200b}
0: \x{1fff}\x{200b}
\x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
0: \x{202e}\x{2030}\x{205e}\x{2060}
\x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
0: \x{9f}\x{a1}\x{2fff}\x{3001}
/[\H\x{d7ff}]+/8BZ
------------------------------------------------------------------
Bra
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{10ffff}\x{d7ff}]++
Ket
End
------------------------------------------------------------------
\x{1680}\x{180e}\x{167f}\x{1681}\x{180d}\x{180f}
0: \x{167f}\x{1681}\x{180d}\x{180f}
\x{2000}\x{200a}\x{1fff}\x{200b}
0: \x{1fff}\x{200b}
\x{202f}\x{205f}\x{202e}\x{2030}\x{205e}\x{2060}
0: \x{202e}\x{2030}\x{205e}\x{2060}
\x{a0}\x{3000}\x{9f}\x{a1}\x{2fff}\x{3001}
0: \x{9f}\x{a1}\x{2fff}\x{3001}
/\v+/8
\x{2027}\x{2030}\x{2028}\x{2029}
0: \x{2028}\x{2029}
\x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
/[\v\x{e000}]+/8BZ
------------------------------------------------------------------
Bra
[\x0a-\x0d\x85\x{2028}-\x{2029}\x{e000}]++
Ket
End
------------------------------------------------------------------
\x{2027}\x{2030}\x{2028}\x{2029}
0: \x{2028}\x{2029}
\x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
/\V+/8
\x{2028}\x{2029}\x{2027}\x{2030}
0: \x{2027}\x{2030}
\x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
0: \x{09}\x{0e}\x{84}\x{86}
/[\V\x{d7ff}]+/8BZ
------------------------------------------------------------------
Bra
[\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}\x{d7ff}]++
Ket
End
------------------------------------------------------------------
\x{2028}\x{2029}\x{2027}\x{2030}
0: \x{2027}\x{2030}
\x{85}\x0a\x0b\x0c\x0d\x09\x0e\x{84}\x{86}
0: \x{09}\x{0e}\x{84}\x{86}
/\R+/8<bsr_unicode>
\x{2027}\x{2030}\x{2028}\x{2029}
0: \x{2028}\x{2029}
\x09\x0e\x{84}\x{86}\x{85}\x0a\x0b\x0c\x0d
0: \x{85}\x{0a}\x{0b}\x{0c}\x{0d}
/(..)\1/8
ab\P
Partial match: ab
aba\P
Partial match: aba
abab\P
0: abab
1: ab
/(..)\1/8i
ab\P
Partial match: ab
abA\P
Partial match: abA
aBAb\P
0: aBAb
1: aB
/(..)\1{2,}/8
ab\P
Partial match: ab
aba\P
Partial match: aba
abab\P
Partial match: abab
ababa\P
Partial match: ababa
ababab\P
0: ababab
1: ab
ababab\P\P
Partial match: ababab
abababa\P
0: ababab
1: ab
abababa\P\P
Partial match: abababa
/(..)\1{2,}/8i
ab\P
Partial match: ab
aBa\P
Partial match: aBa
aBAb\P
Partial match: aBAb
AbaBA\P
Partial match: AbaBA
abABAb\P
0: abABAb
1: ab
aBAbaB\P\P
Partial match: aBAbaB
abABabA\P
0: abABab
1: ab
abaBABa\P\P
Partial match: abaBABa
/(..)\1{2,}?x/8i
ab\P
Partial match: ab
abA\P
Partial match: abA
aBAb\P
Partial match: aBAb
abaBA\P
Partial match: abaBA
abAbaB\P
Partial match: abAbaB
abaBabA\P
Partial match: abaBabA
abAbABaBx\P
0: abAbABaBx
1: ab
/./8<CRLF>
\r\P
0: \x{0d}
\r\P\P
Partial match: \x{0d}
/.{2,3}/8<CRLF>
\r\P
Partial match: \x{0d}
\r\P\P
Partial match: \x{0d}
\r\r\P
0: \x{0d}\x{0d}
\r\r\P\P
Partial match: \x{0d}\x{0d}
\r\r\r\P
0: \x{0d}\x{0d}\x{0d}
\r\r\r\P\P
Partial match: \x{0d}\x{0d}\x{0d}
/.{2,3}?/8<CRLF>
\r\P
Partial match: \x{0d}
\r\P\P
Partial match: \x{0d}
\r\r\P
0: \x{0d}\x{0d}
\r\r\P\P
Partial match: \x{0d}\x{0d}
\r\r\r\P
0: \x{0d}\x{0d}
\r\r\r\P\P
0: \x{0d}\x{0d}
/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/8BZ
------------------------------------------------------------------
Bra
[^\x{100}]
[^\x{1234}]
[^\x{ffff}]
[^\x{10000}]
[^\x{10ffff}]
Ket
End
------------------------------------------------------------------
/[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/8BZi
------------------------------------------------------------------
Bra
/i [^\x{100}]
/i [^\x{1234}]
/i [^\x{ffff}]
/i [^\x{10000}]
/i [^\x{10ffff}]
Ket
End
------------------------------------------------------------------
/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/8BZ
------------------------------------------------------------------
Bra
[^\x{100}]*
[^\x{10000}]+
[^\x{10ffff}]??
[^\x{8000}]{4}
[^\x{8000}]*
[^\x{7fff}]{2}
[^\x{7fff}]{0,7}?
[^\x{fffff}]{5}
[^\x{fffff}]?+
Ket
End
------------------------------------------------------------------
/[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/8BZi
------------------------------------------------------------------
Bra
/i [^\x{100}]*
/i [^\x{10000}]+
/i [^\x{10ffff}]??
/i [^\x{8000}]{4}
/i [^\x{8000}]*
/i [^\x{7fff}]{2}
/i [^\x{7fff}]{0,7}?
/i [^\x{fffff}]{5}
/i [^\x{fffff}]?+
Ket
End
------------------------------------------------------------------
/(?<=\x{1234}\x{1234})\bxy/I8
Capturing subpattern count = 0
Max lookbehind = 2
Options: utf
First char = 'x'
Need char = 'y'
/(?<!^)ETA/8
ETA
No match
/\u0100/<JS>8BZ
------------------------------------------------------------------
Bra
\x{100}
Ket
End
------------------------------------------------------------------
/[\u0100-\u0200]/<JS>8BZ
------------------------------------------------------------------
Bra
[\x{100}-\x{200}]
Ket
End
------------------------------------------------------------------
/\ud800/<JS>8
Failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 5
/^a+[a\x{200}]/8BZ
------------------------------------------------------------------
Bra
^
a+
[a\x{200}]
Ket
End
------------------------------------------------------------------
aa
0: aa
/[b-d\x{200}-\x{250}]*[ae-h]?#[\x{200}-\x{250}]{0,8}[\x00-\xff]*#[\x{200}-\x{250}]+[a-z]/8BZ
------------------------------------------------------------------
Bra
[b-d\x{200}-\x{250}]*+
[ae-h]?+
#
[\x{200}-\x{250}]{0,8}+
[\x00-\xff]*
#
[\x{200}-\x{250}]++
[a-z]
Ket
End
------------------------------------------------------------------
/[^\xff]*PRUNE:\x{100}abc(xyz(?1))/8DZ
------------------------------------------------------------------
Bra
[^\x{ff}]*
PRUNE:\x{100}abc
CBra 1
xyz
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf
No first char
Need char = 'z'
/(?<=\K\x{17f})/8g+
\x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}
0: \x{17f}
0+
/(?<=\K\x{17f})/8G+
\x{17f}\x{17f}\x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}\x{17f}
0: \x{17f}
0+ \x{17f}
0: \x{17f}
0+
/-- End of testinput5 --/
+2584
View File
@@ -0,0 +1,2584 @@
/-- This set of tests is for Unicode property support. It is compatible with
Perl >= 5.15. --/
< forbid 9?=ABCDEFfGILMNPTUXZ<
/^\pC\pL\pM\pN\pP\pS\pZ</8
\x7f\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
0: \x{7f}\x{c0}\x{30f}\x{660}\x{66c}\x{f01}\x{1680}<
\np\x{300}9!\$ <
0: \x{0a}p\x{300}9!$ <
** Failers
No match
ap\x{300}9!\$ <
No match
/^\PC/8
X
0: X
** Failers
0: *
\x7f
No match
/^\PL/8
9
0: 9
** Failers
0: *
\x{c0}
No match
/^\PM/8
X
0: X
** Failers
0: *
\x{30f}
No match
/^\PN/8
X
0: X
** Failers
0: *
\x{660}
No match
/^\PP/8
X
0: X
** Failers
No match
\x{66c}
No match
/^\PS/8
X
0: X
** Failers
0: *
\x{f01}
No match
/^\PZ/8
X
0: X
** Failers
0: *
\x{1680}
No match
/^\p{Cc}/8
\x{017}
0: \x{17}
\x{09f}
0: \x{9f}
** Failers
No match
\x{0600}
No match
/^\p{Cf}/8
\x{601}
0: \x{601}
** Failers
No match
\x{09f}
No match
/^\p{Cn}/8
\x{e0000}
0: \x{e0000}
** Failers
No match
\x{09f}
No match
/^\p{Co}/8
\x{f8ff}
0: \x{f8ff}
** Failers
No match
\x{09f}
No match
/^\p{Ll}/8
a
0: a
** Failers
No match
Z
No match
\x{e000}
No match
/^\p{Lm}/8
\x{2b0}
0: \x{2b0}
** Failers
No match
a
No match
/^\p{Lo}/8
\x{1bb}
0: \x{1bb}
\x{3400}
0: \x{3400}
\x{3401}
0: \x{3401}
\x{4d00}
0: \x{4d00}
\x{4db4}
0: \x{4db4}
\x{4db5}
0: \x{4db5}
** Failers
No match
a
No match
\x{2b0}
No match
\x{4db6}
No match
/^\p{Lt}/8
\x{1c5}
0: \x{1c5}
** Failers
No match
a
No match
\x{2b0}
No match
/^\p{Lu}/8
A
0: A
** Failers
No match
\x{2b0}
No match
/^\p{Mc}/8
\x{903}
0: \x{903}
** Failers
No match
X
No match
\x{300}
No match
/^\p{Me}/8
\x{488}
0: \x{488}
** Failers
No match
X
No match
\x{903}
No match
\x{300}
No match
/^\p{Mn}/8
\x{300}
0: \x{300}
** Failers
No match
X
No match
\x{903}
No match
/^\p{Nd}+/8
0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}\x{66a}
0: 0123456789\x{660}\x{661}\x{662}\x{663}\x{664}\x{665}\x{666}\x{667}\x{668}\x{669}
\x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}\x{6fa}
0: \x{6f0}\x{6f1}\x{6f2}\x{6f3}\x{6f4}\x{6f5}\x{6f6}\x{6f7}\x{6f8}\x{6f9}
\x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}\x{970}
0: \x{966}\x{967}\x{968}\x{969}\x{96a}\x{96b}\x{96c}\x{96d}\x{96e}\x{96f}
** Failers
No match
X
No match
/^\p{Nl}/8
\x{16ee}
0: \x{16ee}
** Failers
No match
X
No match
\x{966}
No match
/^\p{No}/8
\x{b2}
0: \x{b2}
\x{b3}
0: \x{b3}
** Failers
No match
X
No match
\x{16ee}
No match
/^\p{Pc}/8
\x5f
0: _
\x{203f}
0: \x{203f}
** Failers
No match
X
No match
-
No match
\x{58a}
No match
/^\p{Pd}/8
-
0: -
\x{58a}
0: \x{58a}
** Failers
No match
X
No match
\x{203f}
No match
/^\p{Pe}/8
)
0: )
]
0: ]
}
0: }
\x{f3b}
0: \x{f3b}
** Failers
No match
X
No match
\x{203f}
No match
(
No match
[
No match
{
No match
\x{f3c}
No match
/^\p{Pf}/8
\x{bb}
0: \x{bb}
\x{2019}
0: \x{2019}
** Failers
No match
X
No match
\x{203f}
No match
/^\p{Pi}/8
\x{ab}
0: \x{ab}
\x{2018}
0: \x{2018}
** Failers
No match
X
No match
\x{203f}
No match
/^\p{Po}/8
!
0: !
\x{37e}
0: \x{37e}
** Failers
0: *
X
No match
\x{203f}
No match
/^\p{Ps}/8
(
0: (
[
0: [
{
0: {
\x{f3c}
0: \x{f3c}
** Failers
No match
X
No match
)
No match
]
No match
}
No match
\x{f3b}
No match
/^\p{Sk}/8
\x{2c2}
0: \x{2c2}
** Failers
No match
X
No match
\x{9f2}
No match
/^\p{Sm}+/8
+<|~\x{ac}\x{2044}
0: +<|~\x{ac}\x{2044}
** Failers
No match
X
No match
\x{9f2}
No match
/^\p{So}/8
\x{a6}
0: \x{a6}
\x{482}
0: \x{482}
** Failers
No match
X
No match
\x{9f2}
No match
/^\p{Zl}/8
\x{2028}
0: \x{2028}
** Failers
No match
X
No match
\x{2029}
No match
/^\p{Zp}/8
\x{2029}
0: \x{2029}
** Failers
No match
X
No match
\x{2028}
No match
/\p{Nd}+(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
/\p{Nd}+?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}
1: \x{661}\x{662}
/\p{Nd}{2,}(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
/\p{Nd}{2,}?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
1: \x{662}A
/\p{Nd}*(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
/\p{Nd}*?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}
1: \x{660}\x{661}
/\p{Nd}{2}(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
1: \x{662}A
/\p{Nd}{2,3}(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
/\p{Nd}{2,3}?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}A
1: \x{662}A
/\p{Nd}?(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}
1: \x{661}\x{662}
/\p{Nd}??(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}
1: \x{660}\x{661}
/\p{Nd}*+(..)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}AB
1: AB
/\p{Nd}*+(...)/8
\x{660}\x{661}\x{662}ABC
0: \x{660}\x{661}\x{662}ABC
1: ABC
/\p{Nd}*+(....)/8
** Failers
0: ** F
1: ** F
\x{660}\x{661}\x{662}ABC
No match
/(?<=A\p{Nd})XYZ/8
A2XYZ
0: XYZ
123A5XYZPQR
0: XYZ
ABA\x{660}XYZpqr
0: XYZ
** Failers
No match
AXYZ
No match
XYZ
No match
/(?<!\pL)XYZ/8
1XYZ
0: XYZ
AB=XYZ..
0: XYZ
XYZ
0: XYZ
** Failers
No match
WXYZ
No match
/[\P{Nd}]+/8
abcd
0: abcd
** Failers
0: ** Failers
1234
No match
/\D+/8
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\P{Nd}+/8
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D]+/8
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\P{Nd}]+/8
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/[\D\P{Nd}]+/8
11111111111111111111111111111111111111111111111111111111111111111111111
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\pL/8
a
0: a
A
0: A
/\pL/8i
a
0: a
A
0: A
/\p{Lu}/8
A
0: A
aZ
0: Z
** Failers
0: F
abc
No match
/\p{Ll}/8
a
0: a
Az
0: z
** Failers
0: a
ABC
No match
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
** Failers
No match
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
No match
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
No match
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
No match
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
No match
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
No match
/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8i
A\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
a\x{391}\x{10427}\x{ff3a}\x{1fb0}
0: a\x{391}\x{10427}\x{ff3a}\x{1fb0}
A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
0: A\x{3b1}\x{10427}\x{ff3a}\x{1fb0}
A\x{391}\x{1044F}\x{ff3a}\x{1fb0}
0: A\x{391}\x{1044f}\x{ff3a}\x{1fb0}
A\x{391}\x{10427}\x{ff5a}\x{1fb0}
0: A\x{391}\x{10427}\x{ff5a}\x{1fb0}
A\x{391}\x{10427}\x{ff3a}\x{1fb8}
0: A\x{391}\x{10427}\x{ff3a}\x{1fb8}
/\x{391}+/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
0: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}
/\x{391}{3,5}(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
0: \x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
1: X
/\x{391}{3,5}?(.)/8i
\x{391}\x{3b1}\x{3b1}\x{3b1}\x{391}X
0: \x{391}\x{3b1}\x{3b1}\x{3b1}
1: \x{3b1}
/[\x{391}\x{ff3a}]/8i
\x{391}
0: \x{391}
\x{ff3a}
0: \x{ff3a}
\x{3b1}
0: \x{3b1}
\x{ff5a}
0: \x{ff5a}
/^[\X]/8
X123
0: X
*** Failers
No match
AXYZ
No match
/^(\X*)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BC
1: A\x{300}\x{301}\x{302}B
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
/^(\X*?)C/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BC
1: A\x{300}\x{301}\x{302}B
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BC
1: A\x{300}\x{301}\x{302}B
/^(\X*)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A\x{300}\x{301}\x{302}BCA
1: A\x{300}\x{301}\x{302}BC
2: A
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
1: A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
2: C
/^(\X*?)(.)/8
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}
0: A
1:
2: A
A\x{300}\x{301}\x{302}BCA\x{300}\x{301}C
0: A
1:
2: A
/^\X(.)/8
*** Failers
0: **
1: *
A\x{300}\x{301}\x{302}
No match
/^\X{2,3}(.)/8
A\x{300}\x{301}B\x{300}X
0: A\x{300}\x{301}B\x{300}X
1: X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
0: A\x{300}\x{301}B\x{300}C
1: C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
1: X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
0: A\x{300}\x{301}B\x{300}C\x{300}\x{301}D
1: D
/^\X{2,3}?(.)/8
A\x{300}\x{301}B\x{300}X
0: A\x{300}\x{301}B\x{300}X
1: X
A\x{300}\x{301}B\x{300}C\x{300}\x{301}
0: A\x{300}\x{301}B\x{300}C
1: C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}X
0: A\x{300}\x{301}B\x{300}C
1: C
A\x{300}\x{301}B\x{300}C\x{300}\x{301}DA\x{300}X
0: A\x{300}\x{301}B\x{300}C
1: C
/^\X/8
A
0: A
A\x{300}BC
0: A\x{300}
A\x{300}\x{301}\x{302}BC
0: A\x{300}\x{301}\x{302}
\x{300}
0: \x{300}
/^\p{Han}+/8
\x{2e81}\x{3007}\x{2f804}\x{31a0}
0: \x{2e81}\x{3007}\x{2f804}
** Failers
No match
\x{2e7f}
No match
/^\P{Katakana}+/8
\x{3105}
0: \x{3105}
** Failers
0: ** Failers
\x{30ff}
No match
/^[\p{Arabic}]/8
\x{06e9}
0: \x{6e9}
\x{060b}
0: \x{60b}
** Failers
No match
\x{061c}
No match
X\x{06e9}
No match
/^[\P{Yi}]/8
\x{2f800}
0: \x{2f800}
** Failers
0: *
\x{a014}
No match
\x{a4c6}
No match
/^\p{Any}X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
X
No match
/^\P{Any}X/8
** Failers
No match
AX
No match
/^\p{Any}?X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
ABXYZ
No match
/^\P{Any}?X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
ABXYZ
No match
/^\p{Any}+X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
XYZ
No match
/^\P{Any}+X/8
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
XYZ
No match
/^\p{Any}*X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
/^\P{Any}*X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
/^[\p{Any}]X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
X
No match
/^[\P{Any}]X/8
** Failers
No match
AX
No match
/^[\p{Any}]?X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
** Failers
No match
ABXYZ
No match
/^[\P{Any}]?X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
ABXYZ
No match
/^[\p{Any}]+X/8
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
XYZ
No match
/^[\P{Any}]+X/8
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
XYZ
No match
/^[\p{Any}]*X/8
XYZ
0: X
AXYZ
0: AX
\x{1234}XYZ
0: \x{1234}X
A\x{1234}XYZ
0: A\x{1234}X
** Failers
No match
/^[\P{Any}]*X/8
XYZ
0: X
** Failers
No match
AXYZ
No match
\x{1234}XYZ
No match
A\x{1234}XYZ
No match
/^\p{Any}{3,5}?/8
abcdefgh
0: abc
\x{1234}\n\r\x{3456}xyz
0: \x{1234}\x{0a}\x{0d}
/^\p{Any}{3,5}/8
abcdefgh
0: abcde
\x{1234}\n\r\x{3456}xyz
0: \x{1234}\x{0a}\x{0d}\x{3456}x
/^\P{Any}{3,5}?/8
** Failers
No match
abcdefgh
No match
\x{1234}\n\r\x{3456}xyz
No match
/^\p{L&}X/8
AXY
0: AX
aXY
0: aX
\x{1c5}XY
0: \x{1c5}X
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^[\p{L&}]X/8
AXY
0: AX
aXY
0: aX
\x{1c5}XY
0: \x{1c5}X
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^\p{L&}+X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEXypqreX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^[\p{L&}]+X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEXypqreX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^\p{L&}+?X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^[\p{L&}]+?X/8
AXY
0: AX
aXY
0: aX
AbcdeXyz
0: AbcdeX
\x{1c5}AbXY
0: \x{1c5}AbX
abcDEXypqreXlmn
0: abcDEX
** Failers
No match
\x{1bb}XY
No match
\x{2b0}XY
No match
!XY
No match
/^\P{L&}X/8
!XY
0: !X
\x{1bb}XY
0: \x{1bb}X
\x{2b0}XY
0: \x{2b0}X
** Failers
No match
\x{1c5}XY
No match
AXY
No match
/^[\P{L&}]X/8
!XY
0: !X
\x{1bb}XY
0: \x{1bb}X
\x{2b0}XY
0: \x{2b0}X
** Failers
No match
\x{1c5}XY
No match
AXY
No match
/^(\p{Z}[^\p{C}\p{Z}]+)*$/
\xa0!
0: \xa0!
1: \xa0!
/^[\pL](abc)(?1)/
AabcabcYZ
0: Aabcabc
1: abc
/([\pL]=(abc))*X/
L=abcX
0: L=abcX
1: L=abc
2: abc
/^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}/8
\x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
0: \x{1b00}\x{12000}\x{7c0}\x{a840}\x{10900}
/Check property support in non-UTF-8 mode/
/\p{L}{4}/
123abcdefg
0: abcd
123abc\xc4\xc5zz
0: abc\xc4
/\X{1,3}\d/
\x8aBCD
No match
/\X?\d/
\x8aBCD
No match
/\P{L}?\d/
\x8aBCD
No match
/[\PPP\x8a]{1,}\x80/
A\x80
0: A\x80
/^[\p{Arabic}]/8
\x{604}
0: \x{604}
\x{60e}
0: \x{60e}
\x{656}
0: \x{656}
\x{657}
0: \x{657}
\x{658}
0: \x{658}
\x{659}
0: \x{659}
\x{65a}
0: \x{65a}
\x{65b}
0: \x{65b}
\x{65c}
0: \x{65c}
\x{65d}
0: \x{65d}
\x{65e}
0: \x{65e}
\x{65f}
0: \x{65f}
\x{66a}
0: \x{66a}
\x{6e9}
0: \x{6e9}
\x{6ef}
0: \x{6ef}
\x{6fa}
0: \x{6fa}
** Failers
No match
\x{650}
No match
\x{651}
No match
\x{652}
No match
\x{653}
No match
\x{654}
No match
\x{655}
No match
/^\p{Cyrillic}/8
\x{1d2b}
0: \x{1d2b}
/^\p{Common}/8
\x{589}
0: \x{589}
\x{60c}
0: \x{60c}
\x{61f}
0: \x{61f}
\x{964}
0: \x{964}
\x{965}
0: \x{965}
/^\p{Inherited}/8
\x{64b}
0: \x{64b}
\x{654}
0: \x{654}
\x{655}
0: \x{655}
\x{200c}
0: \x{200c}
** Failers
No match
\x{64a}
No match
\x{656}
No match
/^\p{Shavian}/8
\x{10450}
0: \x{10450}
\x{1047f}
0: \x{1047f}
/^\p{Deseret}/8
\x{10400}
0: \x{10400}
\x{1044f}
0: \x{1044f}
/^\p{Osmanya}/8
\x{10480}
0: \x{10480}
\x{1049d}
0: \x{1049d}
\x{104a0}
0: \x{104a0}
\x{104a9}
0: \x{104a9}
** Failers
No match
\x{1049e}
No match
\x{1049f}
No match
\x{104aa}
No match
/\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}/8
\x{102A4}\x{AA52}\x{A91D}\x{1C46}\x{10283}\x{1092E}\x{1C6B}\x{A93B}\x{A8BF}\x{1BA0}\x{A50A}====
0: \x{102a4}\x{aa52}\x{a91d}\x{1c46}\x{10283}\x{1092e}\x{1c6b}\x{a93b}\x{a8bf}\x{1ba0}\x{a50a}
/\x{a77d}\x{1d79}/8i
\x{a77d}\x{1d79}
0: \x{a77d}\x{1d79}
\x{1d79}\x{a77d}
0: \x{1d79}\x{a77d}
/\x{a77d}\x{1d79}/8
\x{a77d}\x{1d79}
0: \x{a77d}\x{1d79}
** Failers
No match
\x{1d79}\x{a77d}
No match
/(A)\1/8i
AA
0: AA
1: A
Aa
0: Aa
1: A
aa
0: aa
1: a
aA
0: aA
1: a
/(\x{10a})\1/8i
\x{10a}\x{10a}
0: \x{10a}\x{10a}
1: \x{10a}
\x{10a}\x{10b}
0: \x{10a}\x{10b}
1: \x{10a}
\x{10b}\x{10b}
0: \x{10b}\x{10b}
1: \x{10b}
\x{10b}\x{10a}
0: \x{10b}\x{10a}
1: \x{10b}
/The next two tests are for property support in non-UTF-8 mode/
/(?:\p{Lu}|\x20)+/
\x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
0: A P\xc2T\xc9 TODAY
/[\p{Lu}\x20]+/
\x41\x20\x50\xC2\x54\xC9\x20\x54\x4F\x44\x41\x59
0: A P\xc2T\xc9 TODAY
/\p{Avestan}\p{Bamum}\p{Egyptian_Hieroglyphs}\p{Imperial_Aramaic}\p{Inscriptional_Pahlavi}\p{Inscriptional_Parthian}\p{Javanese}\p{Kaithi}\p{Lisu}\p{Meetei_Mayek}\p{Old_South_Arabian}\p{Old_Turkic}\p{Samaritan}\p{Tai_Tham}\p{Tai_Viet}/8
\x{10b00}\x{a6ef}\x{13007}\x{10857}\x{10b78}\x{10b58}\x{a980}\x{110c1}\x{a4ff}\x{abc0}\x{10a7d}\x{10c48}\x{0800}\x{1aad}\x{aac0}
0: \x{10b00}\x{a6ef}\x{13007}\x{10857}\x{10b78}\x{10b58}\x{a980}\x{110c1}\x{a4ff}\x{abc0}\x{10a7d}\x{10c48}\x{800}\x{1aad}\x{aac0}
/^\w+/8W
Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
0: Az_\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:xdigit:]]*/8W
1a\x{660}\x{bef}\x{16ee}
0: 1a
/^\d+/8W
1\x{660}\x{bef}\x{16ee}
0: 1\x{660}\x{bef}
/^[[:digit:]]+/8W
1\x{660}\x{bef}\x{16ee}
0: 1\x{660}\x{bef}
/^>\s+/8W
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{09}\x{0b}
/^>\pZ+/8W
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}
/^>[[:space:]]*/8W
>\x{20}\x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{9}\x{b}
0: > \x{a0}\x{1680}\x{2028}\x{2029}\x{202f}\x{09}\x{0b}
/^>[[:blank:]]*/8W
>\x{20}\x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{9}\x{b}\x{2028}
0: > \x{a0}\x{1680}\x{180e}\x{2000}\x{202f}\x{09}
/^[[:alpha:]]*/8W
Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
0: Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}
/^[[:alnum:]]*/8W
Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
0: Az\x{aa}\x{c0}\x{1c5}\x{2b0}\x{3b6}\x{1d7c9}\x{2fa1d}1\x{660}\x{bef}\x{16ee}
/^[[:cntrl:]]*/8W
\x{0}\x{09}\x{1f}\x{7f}\x{9f}
0: \x{00}\x{09}\x{1f}\x{7f}
/^[[:graph:]]*/8W
A\x{a1}\x{a0}
0: A\x{a1}
/^[[:print:]]*/8W
A z\x{a0}\x{a1}
0: A z\x{a0}\x{a1}
/^[[:punct:]]*/8W
.+\x{a1}\x{a0}
0: .+\x{a1}
/\p{Zs}*?\R/
** Failers
No match
a\xFCb
No match
/\p{Zs}*\R/
** Failers
No match
a\xFCb
No match
/ⱥ/8i
0: \x{2c65}
Ⱥx
0: \x{23a}
Ⱥ
0: \x{23a}
/[ⱥ]/8i
0: \x{2c65}
Ⱥx
0: \x{23a}
Ⱥ
0: \x{23a}
/Ⱥ/8i
Ⱥ
0: \x{23a}
0: \x{2c65}
/-- These are tests for extended grapheme clusters --/
/^\X/8+
G\x{34e}\x{34e}X
0: G\x{34e}\x{34e}
0+ X
\x{34e}\x{34e}X
0: \x{34e}\x{34e}
0+ X
\x04X
0: \x{04}
0+ X
\x{1100}X
0: \x{1100}
0+ X
\x{1100}\x{34e}X
0: \x{1100}\x{34e}
0+ X
\x{1b04}\x{1b04}X
0: \x{1b04}\x{1b04}
0+ X
*These match up to the roman letters
0: *
0+ These match up to the roman letters
\x{1111}\x{1111}L,L
0: \x{1111}\x{1111}
0+ L,L
\x{1111}\x{1111}\x{1169}L,L,V
0: \x{1111}\x{1111}\x{1169}
0+ L,L,V
\x{1111}\x{ae4c}L, LV
0: \x{1111}\x{ae4c}
0+ L, LV
\x{1111}\x{ad89}L, LVT
0: \x{1111}\x{ad89}
0+ L, LVT
\x{1111}\x{ae4c}\x{1169}L, LV, V
0: \x{1111}\x{ae4c}\x{1169}
0+ L, LV, V
\x{1111}\x{ae4c}\x{1169}\x{1169}L, LV, V, V
0: \x{1111}\x{ae4c}\x{1169}\x{1169}
0+ L, LV, V, V
\x{1111}\x{ae4c}\x{1169}\x{11fe}L, LV, V, T
0: \x{1111}\x{ae4c}\x{1169}\x{11fe}
0+ L, LV, V, T
\x{1111}\x{ad89}\x{11fe}L, LVT, T
0: \x{1111}\x{ad89}\x{11fe}
0+ L, LVT, T
\x{1111}\x{ad89}\x{11fe}\x{11fe}L, LVT, T, T
0: \x{1111}\x{ad89}\x{11fe}\x{11fe}
0+ L, LVT, T, T
\x{ad89}\x{11fe}\x{11fe}LVT, T, T
0: \x{ad89}\x{11fe}\x{11fe}
0+ LVT, T, T
*These match just the first codepoint (invalid sequence)
0: *
0+ These match just the first codepoint (invalid sequence)
\x{1111}\x{11fe}L, T
0: \x{1111}
0+ \x{11fe}L, T
\x{ae4c}\x{1111}LV, L
0: \x{ae4c}
0+ \x{1111}LV, L
\x{ae4c}\x{ae4c}LV, LV
0: \x{ae4c}
0+ \x{ae4c}LV, LV
\x{ae4c}\x{ad89}LV, LVT
0: \x{ae4c}
0+ \x{ad89}LV, LVT
\x{1169}\x{1111}V, L
0: \x{1169}
0+ \x{1111}V, L
\x{1169}\x{ae4c}V, LV
0: \x{1169}
0+ \x{ae4c}V, LV
\x{1169}\x{ad89}V, LVT
0: \x{1169}
0+ \x{ad89}V, LVT
\x{ad89}\x{1111}LVT, L
0: \x{ad89}
0+ \x{1111}LVT, L
\x{ad89}\x{1169}LVT, V
0: \x{ad89}
0+ \x{1169}LVT, V
\x{ad89}\x{ae4c}LVT, LV
0: \x{ad89}
0+ \x{ae4c}LVT, LV
\x{ad89}\x{ad89}LVT, LVT
0: \x{ad89}
0+ \x{ad89}LVT, LVT
\x{11fe}\x{1111}T, L
0: \x{11fe}
0+ \x{1111}T, L
\x{11fe}\x{1169}T, V
0: \x{11fe}
0+ \x{1169}T, V
\x{11fe}\x{ae4c}T, LV
0: \x{11fe}
0+ \x{ae4c}T, LV
\x{11fe}\x{ad89}T, LVT
0: \x{11fe}
0+ \x{ad89}T, LVT
*Test extend and spacing mark
0: *
0+ Test extend and spacing mark
\x{1111}\x{ae4c}\x{0711}L, LV, extend
0: \x{1111}\x{ae4c}\x{711}
0+ L, LV, extend
\x{1111}\x{ae4c}\x{1b04}L, LV, spacing mark
0: \x{1111}\x{ae4c}\x{1b04}
0+ L, LV, spacing mark
\x{1111}\x{ae4c}\x{1b04}\x{0711}\x{1b04}L, LV, spacing mark, extend, spacing mark
0: \x{1111}\x{ae4c}\x{1b04}\x{711}\x{1b04}
0+ L, LV, spacing mark, extend, spacing mark
*Test CR, LF, and control
0: *
0+ Test CR, LF, and control
\x0d\x{0711}CR, extend
0: \x{0d}
0+ \x{711}CR, extend
\x0d\x{1b04}CR, spacingmark
0: \x{0d}
0+ \x{1b04}CR, spacingmark
\x0a\x{0711}LF, extend
0: \x{0a}
0+ \x{711}LF, extend
\x0a\x{1b04}LF, spacingmark
0: \x{0a}
0+ \x{1b04}LF, spacingmark
\x0b\x{0711}Control, extend
0: \x{0b}
0+ \x{711}Control, extend
\x09\x{1b04}Control, spacingmark
0: \x{09}
0+ \x{1b04}Control, spacingmark
*There are no Prepend characters, so we can't test Prepend, CR
0: *
0+ There are no Prepend characters, so we can't test Prepend, CR
/^(?>\X{2})X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
/^\X{2,4}X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
/^\X{2,4}?X/8+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0: \x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}\x{1111}\x{ae4c}X
0+
/\X*Z/8Y
A\x{300}
No match
/\X*(.)/8Y
A\x{1111}\x{ae4c}\x{1169}
0: A\x{1111}
1: \x{1111}
/\X?abc/8Y
\xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\>06\?
0: A\x{300}abc
/-- --/
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/[z\x{1e9e}]+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/[z\x{00df}]+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/[z\x{1f88}]+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/-- Characters with more than one other case; test in classes --/
/[z\x{00b5}]+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/[z\x{039c}]+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/[z\x{03bc}]+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/[z\x{00c5}]+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/[z\x{00e5}]+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/[z\x{212b}]+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/[z\x{01c4}]+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/[z\x{01c5}]+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/[z\x{01c6}]+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/[z\x{01c7}]+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/[z\x{01c8}]+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/[z\x{01c9}]+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/[z\x{01ca}]+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/[z\x{01cb}]+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/[z\x{01cc}]+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/[z\x{01f1}]+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/[z\x{01f2}]+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/[z\x{01f3}]+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/[z\x{0345}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/[z\x{0399}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/[z\x{03b9}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/[z\x{1fbe}]+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/[z\x{0392}]+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/[z\x{03b2}]+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/[z\x{03d0}]+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/[z\x{0395}]+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/[z\x{03b5}]+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/[z\x{03f5}]+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/[z\x{0398}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/[z\x{03b8}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/[z\x{03d1}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/[z\x{03f4}]+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/[z\x{039a}]+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/[z\x{03ba}]+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/[z\x{03f0}]+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/[z\x{03a0}]+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/[z\x{03c0}]+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/[z\x{03d6}]+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/[z\x{03a1}]+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/[z\x{03c1}]+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/[z\x{03f1}]+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/[z\x{03a3}]+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/[z\x{03c2}]+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/[z\x{03c3}]+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/[z\x{03a6}]+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/[z\x{03c6}]+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/[z\x{03d5}]+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/[z\x{03c9}]+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/[z\x{03a9}]+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/[z\x{2126}]+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/[z\x{1e60}]+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/[z\x{1e61}]+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/[z\x{1e9b}]+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
/[z\x{004b}]+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/[z\x{006b}]+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/[z\x{212a}]+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/[z\x{0053}]+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/[z\x{0073}]+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/[z\x{017f}]+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/-- --/
/(ΣΆΜΟΣ) \1/8i
ΣΆΜΟΣ ΣΆΜΟΣ
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
ΣΆΜΟΣ σάμος
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
σάμος σάμος
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
σάμος σάμοσ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
σάμος ΣΆΜΟΣ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
/(σάμος) \1/8i
ΣΆΜΟΣ ΣΆΜΟΣ
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
ΣΆΜΟΣ σάμος
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
σάμος σάμος
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
σάμος σάμοσ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
σάμος ΣΆΜΟΣ
0: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
/(ΣΆΜΟΣ) \1*/8i
ΣΆΜΟΣ\x20
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
ΣΆΜΟΣ ΣΆΜΟΣσάμοςσάμος
0: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3} \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}\x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}\x{3c3}\x{3ac}\x{3bc}\x{3bf}\x{3c2}
1: \x{3a3}\x{386}\x{39c}\x{39f}\x{3a3}
/-- Perl matches these --/
/\x{00b5}+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/\x{039c}+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/\x{03bc}+/8i
\x{00b5}\x{039c}\x{03bc}
0: \x{b5}\x{39c}\x{3bc}
/\x{00c5}+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/\x{00e5}+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/\x{212b}+/8i
\x{00c5}\x{00e5}\x{212b}
0: \x{c5}\x{e5}\x{212b}
/\x{01c4}+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/\x{01c5}+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/\x{01c6}+/8i
\x{01c4}\x{01c5}\x{01c6}
0: \x{1c4}\x{1c5}\x{1c6}
/\x{01c7}+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/\x{01c8}+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/\x{01c9}+/8i
\x{01c7}\x{01c8}\x{01c9}
0: \x{1c7}\x{1c8}\x{1c9}
/\x{01ca}+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/\x{01cb}+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/\x{01cc}+/8i
\x{01ca}\x{01cb}\x{01cc}
0: \x{1ca}\x{1cb}\x{1cc}
/\x{01f1}+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/\x{01f2}+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/\x{01f3}+/8i
\x{01f1}\x{01f2}\x{01f3}
0: \x{1f1}\x{1f2}\x{1f3}
/\x{0345}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{0399}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{03b9}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{1fbe}+/8i
\x{0345}\x{0399}\x{03b9}\x{1fbe}
0: \x{345}\x{399}\x{3b9}\x{1fbe}
/\x{0392}+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/\x{03b2}+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/\x{03d0}+/8i
\x{0392}\x{03b2}\x{03d0}
0: \x{392}\x{3b2}\x{3d0}
/\x{0395}+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/\x{03b5}+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/\x{03f5}+/8i
\x{0395}\x{03b5}\x{03f5}
0: \x{395}\x{3b5}\x{3f5}
/\x{0398}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{03b8}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{03d1}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{03f4}+/8i
\x{0398}\x{03b8}\x{03d1}\x{03f4}
0: \x{398}\x{3b8}\x{3d1}\x{3f4}
/\x{039a}+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/\x{03ba}+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/\x{03f0}+/8i
\x{039a}\x{03ba}\x{03f0}
0: \x{39a}\x{3ba}\x{3f0}
/\x{03a0}+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03c0}+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03d6}+/8i
\x{03a0}\x{03c0}\x{03d6}
0: \x{3a0}\x{3c0}\x{3d6}
/\x{03a1}+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/\x{03c1}+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/\x{03f1}+/8i
\x{03a1}\x{03c1}\x{03f1}
0: \x{3a1}\x{3c1}\x{3f1}
/\x{03a3}+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/\x{03c2}+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/\x{03c3}+/8i
\x{03A3}\x{03C2}\x{03C3}
0: \x{3a3}\x{3c2}\x{3c3}
/\x{03a6}+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03c6}+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03d5}+/8i
\x{03a6}\x{03c6}\x{03d5}
0: \x{3a6}\x{3c6}\x{3d5}
/\x{03c9}+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/\x{03a9}+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/\x{2126}+/8i
\x{03c9}\x{03a9}\x{2126}
0: \x{3c9}\x{3a9}\x{2126}
/\x{1e60}+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/\x{1e61}+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/\x{1e9b}+/8i
\x{1e60}\x{1e61}\x{1e9b}
0: \x{1e60}\x{1e61}\x{1e9b}
/\x{1e9e}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{00df}+/8i
\x{1e9e}\x{00df}
0: \x{1e9e}\x{df}
/\x{1f88}+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/\x{1f80}+/8i
\x{1f88}\x{1f80}
0: \x{1f88}\x{1f80}
/-- Perl 5.12.4 gets these wrong, but 5.15.3 is OK --/
/\x{004b}+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/\x{006b}+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/\x{212a}+/8i
\x{004b}\x{006b}\x{212a}
0: Kk\x{212a}
/\x{0053}+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/\x{0073}+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/\x{017f}+/8i
\x{0053}\x{0073}\x{017f}
0: Ss\x{17f}
/^\p{Any}*\d{4}/8
1234
0: 1234
123
No match
/^\X*\w{4}/8
1234
0: 1234
123
No match
/^A\s+Z/8W
A\x{2005}Z
0: A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
0: A\x{85}\x{180e}\x{2005}Z
/^A[\s]+Z/8W
A\x{2005}Z
0: A\x{2005}Z
A\x{85}\x{180e}\x{2005}Z
0: A\x{85}\x{180e}\x{2005}Z
/^[[:graph:]]+$/8W
Letter:ABC
0: Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
0: Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
0: Number:9\x{660}
Punctuation:\x{66a},;
0: Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
0: Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
0: Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
0: \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
0: \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
0: \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
0: \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
0: \x{feff}
\x{fff9}\x{fffa}\x{fffb}
0: \x{fff9}\x{fffa}\x{fffb}
\x{110bd}
0: \x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
0: \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
0: \x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
0: \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
** Failers
No match
\x{09}
No match
\x{0a}
No match
\x{1D}
No match
\x{20}
No match
\x{85}
No match
\x{a0}
No match
\x{61c}
No match
\x{1680}
No match
\x{180e}
No match
\x{2028}
No match
\x{2029}
No match
\x{202f}
No match
\x{2065}
No match
\x{2066}
No match
\x{2067}
No match
\x{2068}
No match
\x{2069}
No match
\x{3000}
No match
\x{e0002}
No match
\x{e001f}
No match
\x{e0080}
No match
/^[[:print:]]+$/8W
Space: \x{a0}
0: Space: \x{a0}
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
0: \x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
\x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
0: \x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
\x{202f}\x{205f}
0: \x{202f}\x{205f}
\x{3000}
0: \x{3000}
Letter:ABC
0: Letter:ABC
Mark:\x{300}\x{1d172}\x{1d17b}
0: Mark:\x{300}\x{1d172}\x{1d17b}
Number:9\x{660}
0: Number:9\x{660}
Punctuation:\x{66a},;
0: Punctuation:\x{66a},;
Symbol:\x{6de}<>\x{fffc}
0: Symbol:\x{6de}<>\x{fffc}
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
0: Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
\x{180e}
0: \x{180e}
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
0: \x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
0: \x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
\x{202f}
0: \x{202f}
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
0: \x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
0: \x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
\x{feff}
0: \x{feff}
\x{fff9}\x{fffa}\x{fffb}
0: \x{fff9}\x{fffa}\x{fffb}
\x{110bd}
0: \x{110bd}
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
0: \x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
\x{e0001}
0: \x{e0001}
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
0: \x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
** Failers
0: ** Failers
\x{09}
No match
\x{1D}
No match
\x{85}
No match
\x{61c}
No match
\x{2028}
No match
\x{2029}
No match
\x{2065}
No match
\x{2066}
No match
\x{2067}
No match
\x{2068}
No match
\x{2069}
No match
\x{e0002}
No match
\x{e001f}
No match
\x{e0080}
No match
/^[[:punct:]]+$/8W
\$+<=>^`|~
0: $+<=>^`|~
!\"#%&'()*,-./:;?@[\\]_{}
0: !"#%&'()*,-./:;?@[\]_{}
\x{a1}\x{a7}
0: \x{a1}\x{a7}
\x{37e}
0: \x{37e}
** Failers
No match
abcde
No match
/^[[:^graph:]]+$/8W
\x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680}\x{180e}
0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680}\x{180e}
\x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
0: \x{2028}\x{2029}\x{202f}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}
\x{3000}\x{e0002}\x{e001f}\x{e0080}
0: \x{3000}\x{e0002}\x{e001f}\x{e0080}
** Failers
No match
Letter:ABC
No match
Mark:\x{300}\x{1d172}\x{1d17b}
No match
Number:9\x{660}
No match
Punctuation:\x{66a},;
No match
Symbol:\x{6de}<>\x{fffc}
No match
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
No match
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
No match
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
No match
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
No match
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
No match
\x{feff}
No match
\x{fff9}\x{fffa}\x{fffb}
No match
\x{110bd}
No match
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
No match
\x{e0001}
No match
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
No match
/^[[:^print:]]+$/8W
\x{09}\x{1D}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
0: \x{09}\x{1d}\x{85}\x{61c}\x{2028}\x{2029}\x{2065}\x{2066}\x{2067}
\x{2068}\x{2069}\x{e0002}\x{e001f}\x{e0080}
0: \x{2068}\x{2069}\x{e0002}\x{e001f}\x{e0080}
** Failers
No match
Space: \x{a0}
No match
\x{1680}\x{2000}\x{2001}\x{2002}\x{2003}\x{2004}\x{2005}
No match
\x{2006}\x{2007}\x{2008}\x{2009}\x{200a}
No match
\x{202f}\x{205f}
No match
\x{3000}
No match
Letter:ABC
No match
Mark:\x{300}\x{1d172}\x{1d17b}
No match
Number:9\x{660}
No match
Punctuation:\x{66a},;
No match
Symbol:\x{6de}<>\x{fffc}
No match
Cf-property:\x{ad}\x{600}\x{601}\x{602}\x{603}\x{604}\x{6dd}\x{70f}
No match
\x{180e}
No match
\x{200b}\x{200c}\x{200d}\x{200e}\x{200f}
No match
\x{202a}\x{202b}\x{202c}\x{202d}\x{202e}
No match
\x{202f}
No match
\x{2060}\x{2061}\x{2062}\x{2063}\x{2064}
No match
\x{206a}\x{206b}\x{206c}\x{206d}\x{206e}\x{206f}
No match
\x{feff}
No match
\x{fff9}\x{fffa}\x{fffb}
No match
\x{110bd}
No match
\x{1d173}\x{1d174}\x{1d175}\x{1d176}\x{1d177}\x{1d178}\x{1d179}\x{1d17a}
No match
\x{e0001}
No match
\x{e0020}\x{e0030}\x{e0040}\x{e0050}\x{e0060}\x{e0070}\x{e007f}
No match
/^[[:^punct:]]+$/8W
abcde
0: abcde
** Failers
No match
\$+<=>^`|~
No match
!\"#%&'()*,-./:;?@[\\]_{}
No match
\x{a1}\x{a7}
No match
\x{37e}
No match
/[RST]+/8iW
Ss\x{17f}
0: Ss\x{17f}
/[R-T]+/8iW
Ss\x{17f}
0: Ss\x{17f}
/[q-u]+/8iW
Ss\x{17f}
0: Ss\x{17f}
/^s?c/mi8
scat
0: sc
/[A-`]/i8
abcdefghijklmno
0: a
/\C\X*QT/8
Ӆ\x0aT
No match
/[\pS#moq]/
=
0: =
/[[:punct:]]/8W
\xc2\xb4
No match
\x{b4}
No match
/[[:^ascii:]]/8W
\x{100}
0: \x{100}
\x{200}
0: \x{200}
\x{300}
0: \x{300}
\x{37e}
0: \x{37e}
a
No match
9
No match
g
No match
/[[:^ascii:]\w]/8W
a
0: a
9
0: 9
g
0: g
\x{100}
0: \x{100}
\x{200}
0: \x{200}
\x{300}
0: \x{300}
\x{37e}
0: \x{37e}
/[\w[:^ascii:]]/8W
a
0: a
9
0: 9
g
0: g
\x{100}
0: \x{100}
\x{200}
0: \x{200}
\x{300}
0: \x{300}
\x{37e}
0: \x{37e}
/[^[:ascii:]\W]/8W
a
No match
9
No match
g
No match
\x{100}
0: \x{100}
\x{200}
0: \x{200}
\x{300}
No match
\x{37e}
No match
/[[:^ascii:]a]/8W
a
0: a
9
No match
g
No match
\x{100}
0: \x{100}
\x{200}
0: \x{200}
\x{37e}
0: \x{37e}
/[^[:^ascii:]\d]/8W
a
0: a
~
0: ~
0
No match
\a
0: \x{07}
\x{7f}
0: \x{7f}
\x{389}
No match
\x{20ac}
No match
/(?=.*b)\pL/
11bb
0: b
/(?(?=.*b)(?=.*b)\pL|.*c)/
11bb
0: b
/-- End of testinput6 --/
+2345
View File
@@ -0,0 +1,2345 @@
/-- These tests for Unicode property support test PCRE's API and show some of
the compiled code. They are not Perl-compatible. --/
/[\p{L}]/DZ
------------------------------------------------------------------
Bra
[\p{L}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[\p{^L}]/DZ
------------------------------------------------------------------
Bra
[\P{L}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[\P{L}]/DZ
------------------------------------------------------------------
Bra
[\P{L}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[\P{^L}]/DZ
------------------------------------------------------------------
Bra
[\p{L}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/[abc\p{L}\x{0660}]/8DZ
------------------------------------------------------------------
Bra
[a-c\p{L}\x{660}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
/[\p{Nd}]/8DZ
------------------------------------------------------------------
Bra
[\p{Nd}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
1234
0: 1
/[\p{Nd}+-]+/8DZ
------------------------------------------------------------------
Bra
[+\-\p{Nd}]++
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
No first char
No need char
1234
0: 1234
12-34
0: 12-34
12+\x{661}-34
0: 12+\x{661}-34
** Failers
No match
abcd
No match
/[\x{105}-\x{109}]/8iDZ
------------------------------------------------------------------
Bra
[\x{104}-\x{109}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
\x{104}
0: \x{104}
\x{105}
0: \x{105}
\x{109}
0: \x{109}
** Failers
No match
\x{100}
No match
\x{10a}
No match
/[z-\x{100}]/8iDZ
------------------------------------------------------------------
Bra
[Zz-\xff\x{39c}\x{3bc}\x{212b}\x{1e9e}\x{212b}\x{178}\x{100}-\x{101}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
Z
0: Z
z
0: z
\x{39c}
0: \x{39c}
\x{178}
0: \x{178}
|
0: |
\x{80}
0: \x{80}
\x{ff}
0: \x{ff}
\x{100}
0: \x{100}
\x{101}
0: \x{101}
** Failers
No match
\x{102}
No match
Y
No match
y
No match
/[z-\x{100}]/8DZi
------------------------------------------------------------------
Bra
[Zz-\xff\x{39c}\x{3bc}\x{212b}\x{1e9e}\x{212b}\x{178}\x{100}-\x{101}]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
No first char
No need char
/(?:[\PPa*]*){8,}/
/[\P{Any}]/BZ
------------------------------------------------------------------
Bra
[\P{Any}]
Ket
End
------------------------------------------------------------------
/[\P{Any}\E]/BZ
------------------------------------------------------------------
Bra
[\P{Any}]
Ket
End
------------------------------------------------------------------
/(\P{Yi}+\277)/
/(\P{Yi}+\277)?/
/(?<=\P{Yi}{3}A)X/
/\p{Yi}+(\P{Yi}+)(?1)/
/(\P{Yi}{2}\277)?/
/[\P{Yi}A]/
/[\P{Yi}\P{Yi}\P{Yi}A]/
/[^\P{Yi}A]/
/[^\P{Yi}\P{Yi}\P{Yi}A]/
/(\P{Yi}*\277)*/
/(\P{Yi}*?\277)*/
/(\p{Yi}*+\277)*/
/(\P{Yi}?\277)*/
/(\P{Yi}??\277)*/
/(\p{Yi}?+\277)*/
/(\P{Yi}{0,3}\277)*/
/(\P{Yi}{0,3}?\277)*/
/(\p{Yi}{0,3}+\277)*/
/\p{Zl}{2,3}+/8BZ
------------------------------------------------------------------
Bra
prop Zl {2}
prop Zl ?+
Ket
End
------------------------------------------------------------------



0: \x{2028}\x{2028}
\x{2028}\x{2028}\x{2028}
0: \x{2028}\x{2028}\x{2028}
/\p{Zl}/8BZ
------------------------------------------------------------------
Bra
prop Zl
Ket
End
------------------------------------------------------------------
/\p{Lu}{3}+/8BZ
------------------------------------------------------------------
Bra
prop Lu {3}
Ket
End
------------------------------------------------------------------
/\pL{2}+/8BZ
------------------------------------------------------------------
Bra
prop L {2}
Ket
End
------------------------------------------------------------------
/\p{Cc}{2}+/8BZ
------------------------------------------------------------------
Bra
prop Cc {2}
Ket
End
------------------------------------------------------------------
/^\p{Cf}/8
\x{180e}
0: \x{180e}
\x{061c}
0: \x{61c}
\x{2066}
0: \x{2066}
\x{2067}
0: \x{2067}
\x{2068}
0: \x{2068}
\x{2069}
0: \x{2069}
/^\p{Cs}/8
\?\x{dfff}
0: \x{dfff}
** Failers
No match
\x{09f}
No match
/^\p{Mn}/8
\x{1a1b}
0: \x{1a1b}
/^\p{Pe}/8
\x{2309}
0: \x{2309}
\x{230b}
0: \x{230b}
/^\p{Ps}/8
\x{2308}
0: \x{2308}
\x{230a}
0: \x{230a}
/^\p{Sc}+/8
$\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
0: $\x{a2}\x{a3}\x{a4}\x{a5}
\x{9f2}
0: \x{9f2}
** Failers
No match
X
No match
\x{2c2}
No match
/^\p{Zs}/8
\ \
0:
\x{a0}
0: \x{a0}
\x{1680}
0: \x{1680}
\x{2000}
0: \x{2000}
\x{2001}
0: \x{2001}
** Failers
No match
\x{2028}
No match
\x{200d}
No match
/-- These are here rather than in test 6 because Perl has problems with
the negative versions of the properties and behaves has changed how
it behaves for caseless matching. --/
/\p{^Lu}/8i
1234
0: 1
** Failers
0: *
ABC
No match
/\P{Lu}/8i
1234
0: 1
** Failers
0: *
ABC
No match
/\p{Ll}/8i
a
0: a
Az
0: z
** Failers
0: a
ABC
No match
/\p{Lu}/8i
A
0: A
a\x{10a0}B
0: \x{10a0}
** Failers
0: F
a
No match
\x{1d00}
No match
/\p{Lu}/8i
A
0: A
aZ
0: Z
** Failers
0: F
abc
No match
/[\x{c0}\x{391}]/8i
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/-- The next two are special cases where the lengths of the different cases of
the same character differ. The first went wrong with heap frame storage; the
second was broken in all cases. --/
/^\x{023a}+?(\x{0130}+)/8i
\x{023a}\x{2c65}\x{0130}
0: \x{23a}\x{2c65}\x{130}
1: \x{130}
/^\x{023a}+([^X])/8i
\x{023a}\x{2c65}X
0: \x{23a}\x{2c65}
1: \x{2c65}
/\x{c0}+\x{116}+/8i
\x{c0}\x{e0}\x{116}\x{117}
0: \x{c0}\x{e0}\x{116}\x{117}
/[\x{c0}\x{116}]+/8i
\x{c0}\x{e0}\x{116}\x{117}
0: \x{c0}\x{e0}\x{116}\x{117}
/(\x{de})\1/8i
\x{de}\x{de}
0: \x{de}\x{de}
1: \x{de}
\x{de}\x{fe}
0: \x{de}\x{fe}
1: \x{de}
\x{fe}\x{fe}
0: \x{fe}\x{fe}
1: \x{fe}
\x{fe}\x{de}
0: \x{fe}\x{de}
1: \x{fe}
/^\x{c0}$/8i
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/^\x{e0}$/8i
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/-- The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
will match it only with UCP support, because without that it has no notion
of case for anything other than the ASCII letters. --/
/((?i)[\x{c0}])/8
\x{c0}
0: \x{c0}
1: \x{c0}
\x{e0}
0: \x{e0}
1: \x{e0}
/(?i:[\x{c0}])/8
\x{c0}
0: \x{c0}
\x{e0}
0: \x{e0}
/-- These are PCRE's extra properties to help with Unicodizing \d etc. --/
/^\p{Xan}/8
ABCD
0: A
1234
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
** Failers
No match
_ABC
No match
/^\p{Xan}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
** Failers
No match
_ABC
No match
/^\p{Xan}+?/8
\x{6ca}\x{a6c}\x{10a7}_
0: \x{6ca}
/^\p{Xan}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
/^\p{Xan}{2,9}/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}
/^\p{Xan}{2,9}?/8
\x{6ca}\x{a6c}\x{10a7}_
0: \x{6ca}\x{a6c}
/^[\p{Xan}]/8
ABCD1234_
0: A
1234abcd_
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
** Failers
No match
_ABC
No match
/^[\p{Xan}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
** Failers
No match
_ABC
No match
/^>\p{Xsp}/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}
>\x{a0}
0: >\x{a0}
** Failers
No match
\x{0b}
No match
/^>\p{Xsp}+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}+?/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}
/^>\p{Xsp}*/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}{2,9}/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xsp}{2,9}?/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}
/^>[\p{Xsp}]/8
>\x{2028}\x{0b}
0: >\x{2028}
/^>[\p{Xsp}]+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}
>\x{a0}
0: >\x{a0}
** Failers
No match
\x{0b}
No match
/^>\p{Xps}+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}+?/8
>\x{1680}\x{2028}\x{0b}
0: >\x{1680}
/^>\p{Xps}*/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^>\p{Xps}{2,9}?/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}
/^>[\p{Xps}]/8
>\x{2028}\x{0b}
0: >\x{2028}
/^>[\p{Xps}]+/8
> \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
/^\p{Xwd}/8
ABCD
0: A
1234
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
_ABC
0: _
** Failers
No match
[]
No match
/^\p{Xwd}+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}+?/8
\x{6ca}\x{a6c}\x{10a7}_
0: \x{6ca}
/^\p{Xwd}*/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/^\p{Xwd}{2,9}/8
A_B12\x{6ca}\x{a6c}\x{10a7}
0: A_B12\x{6ca}\x{a6c}\x{10a7}
/^\p{Xwd}{2,9}?/8
\x{6ca}\x{a6c}\x{10a7}_
0: \x{6ca}\x{a6c}
/^[\p{Xwd}]/8
ABCD1234_
0: A
1234abcd_
0: 1
\x{6ca}
0: \x{6ca}
\x{a6c}
0: \x{a6c}
\x{10a7}
0: \x{10a7}
_ABC
0: _
** Failers
No match
[]
No match
/^[\p{Xwd}]+/8
ABCD1234\x{6ca}\x{a6c}\x{10a7}_
0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
/-- A check not in UTF-8 mode --/
/^[\p{Xwd}]+/
ABCD1234_
0: ABCD1234_
/-- Some negative checks --/
/^[\P{Xwd}]+/8
!.+\x{019}\x{35a}AB
0: !.+\x{19}\x{35a}
/^[\p{^Xwd}]+/8
!.+\x{019}\x{35a}AB
0: !.+\x{19}\x{35a}
/[\D]/WBZ8
------------------------------------------------------------------
Bra
[\P{Nd}]
Ket
End
------------------------------------------------------------------
1\x{3c8}2
0: \x{3c8}
/[\d]/WBZ8
------------------------------------------------------------------
Bra
[\p{Nd}]
Ket
End
------------------------------------------------------------------
>\x{6f4}<
0: \x{6f4}
/[\S]/WBZ8
------------------------------------------------------------------
Bra
[\P{Xsp}]
Ket
End
------------------------------------------------------------------
\x{1680}\x{6f4}\x{1680}
0: \x{6f4}
/[\s]/WBZ8
------------------------------------------------------------------
Bra
[\p{Xsp}]
Ket
End
------------------------------------------------------------------
>\x{1680}<
0: \x{1680}
/[\W]/WBZ8
------------------------------------------------------------------
Bra
[\P{Xwd}]
Ket
End
------------------------------------------------------------------
A\x{1712}B
0: \x{1712}
/[\w]/WBZ8
------------------------------------------------------------------
Bra
[\p{Xwd}]
Ket
End
------------------------------------------------------------------
>\x{1723}<
0: \x{1723}
/\D/WBZ8
------------------------------------------------------------------
Bra
notprop Nd
Ket
End
------------------------------------------------------------------
1\x{3c8}2
0: \x{3c8}
/\d/WBZ8
------------------------------------------------------------------
Bra
prop Nd
Ket
End
------------------------------------------------------------------
>\x{6f4}<
0: \x{6f4}
/\S/WBZ8
------------------------------------------------------------------
Bra
notprop Xsp
Ket
End
------------------------------------------------------------------
\x{1680}\x{6f4}\x{1680}
0: \x{6f4}
/\s/WBZ8
------------------------------------------------------------------
Bra
prop Xsp
Ket
End
------------------------------------------------------------------
>\x{1680}>
0: \x{1680}
/\W/WBZ8
------------------------------------------------------------------
Bra
notprop Xwd
Ket
End
------------------------------------------------------------------
A\x{1712}B
0: \x{1712}
/\w/WBZ8
------------------------------------------------------------------
Bra
prop Xwd
Ket
End
------------------------------------------------------------------
>\x{1723}<
0: \x{1723}
/[[:alpha:]]/WBZ
------------------------------------------------------------------
Bra
[\p{L}]
Ket
End
------------------------------------------------------------------
/[[:lower:]]/WBZ
------------------------------------------------------------------
Bra
[\p{Ll}]
Ket
End
------------------------------------------------------------------
/[[:upper:]]/WBZ
------------------------------------------------------------------
Bra
[\p{Lu}]
Ket
End
------------------------------------------------------------------
/[[:alnum:]]/WBZ
------------------------------------------------------------------
Bra
[\p{Xan}]
Ket
End
------------------------------------------------------------------
/[[:ascii:]]/WBZ
------------------------------------------------------------------
Bra
[\x00-\x7f]
Ket
End
------------------------------------------------------------------
/[[:cntrl:]]/WBZ
------------------------------------------------------------------
Bra
[\x00-\x1f\x7f]
Ket
End
------------------------------------------------------------------
/[[:digit:]]/WBZ
------------------------------------------------------------------
Bra
[\p{Nd}]
Ket
End
------------------------------------------------------------------
/[[:graph:]]/WBZ
------------------------------------------------------------------
Bra
[[:graph:]]
Ket
End
------------------------------------------------------------------
/[[:print:]]/WBZ
------------------------------------------------------------------
Bra
[[:print:]]
Ket
End
------------------------------------------------------------------
/[[:punct:]]/WBZ
------------------------------------------------------------------
Bra
[[:punct:]]
Ket
End
------------------------------------------------------------------
/[[:space:]]/WBZ
------------------------------------------------------------------
Bra
[\p{Xps}]
Ket
End
------------------------------------------------------------------
/[[:word:]]/WBZ
------------------------------------------------------------------
Bra
[\p{Xwd}]
Ket
End
------------------------------------------------------------------
/[[:xdigit:]]/WBZ
------------------------------------------------------------------
Bra
[0-9A-Fa-f]
Ket
End
------------------------------------------------------------------
/-- Unicode properties for \b abd \B --/
/\b...\B/8W
abc_
0: abc
\x{37e}abc\x{376}
0: abc
\x{37e}\x{376}\x{371}\x{393}\x{394}
0: \x{376}\x{371}\x{393}
!\x{c0}++\x{c1}\x{c2}
0: ++\x{c1}
!\x{c0}+++++
0: \x{c0}++
/-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/
/\b...\B/8
abc_
0: abc
** Failers
0: Fai
\x{37e}abc\x{376}
No match
\x{37e}\x{376}\x{371}\x{393}\x{394}
No match
!\x{c0}++\x{c1}\x{c2}
No match
!\x{c0}+++++
No match
/-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/
/\b...\B/W
abc_
0: abc
!\x{c0}++\x{c1}\x{c2}
0: ++\xc1
!\x{c0}+++++
0: \xc0++
/-- Some of these are silly, but they check various combinations --/
/[[:^alpha:][:^cntrl:]]+/8WBZ
------------------------------------------------------------------
Bra
[ -~\x80-\xff\P{L}\x{100}-\x{10ffff}]++
Ket
End
------------------------------------------------------------------
123
0: 123
abc
0: abc
/[[:^cntrl:][:^alpha:]]+/8WBZ
------------------------------------------------------------------
Bra
[ -~\x80-\xff\x{100}-\x{10ffff}\P{L}]++
Ket
End
------------------------------------------------------------------
123
0: 123
abc
0: abc
/[[:alpha:]]+/8WBZ
------------------------------------------------------------------
Bra
[\p{L}]++
Ket
End
------------------------------------------------------------------
abc
0: abc
/[[:^alpha:]\S]+/8WBZ
------------------------------------------------------------------
Bra
[\P{L}\P{Xsp}]++
Ket
End
------------------------------------------------------------------
123
0: 123
abc
0: abc
/[^\d]+/8WBZ
------------------------------------------------------------------
Bra
[^\p{Nd}]++
Ket
End
------------------------------------------------------------------
abc123
0: abc
abc\x{123}
0: abc\x{123}
\x{660}abc
0: abc
/\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ
------------------------------------------------------------------
Bra
prop Lu ++
9
prop Lu +
B
prop Lu ++
b
Ket
End
------------------------------------------------------------------
/\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ
------------------------------------------------------------------
Bra
notprop Lu +
9
notprop Lu ++
B
notprop Lu +
b
Ket
End
------------------------------------------------------------------
/\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ
------------------------------------------------------------------
Bra
notprop Lu +
9
notprop Lu ++
B
notprop Lu +
b
Ket
End
------------------------------------------------------------------
/\p{Han}+X\p{Greek}+\x{370}/BZ8
------------------------------------------------------------------
Bra
prop Han ++
X
prop Greek +
\x{370}
Ket
End
------------------------------------------------------------------
/\p{Xan}+!\p{Xan}+A/BZ
------------------------------------------------------------------
Bra
prop Xan ++
!
prop Xan +
A
Ket
End
------------------------------------------------------------------
/\p{Xsp}+!\p{Xsp}\t/BZ
------------------------------------------------------------------
Bra
prop Xsp ++
!
prop Xsp
\x09
Ket
End
------------------------------------------------------------------
/\p{Xps}+!\p{Xps}\t/BZ
------------------------------------------------------------------
Bra
prop Xps ++
!
prop Xps
\x09
Ket
End
------------------------------------------------------------------
/\p{Xwd}+!\p{Xwd}_/BZ
------------------------------------------------------------------
Bra
prop Xwd ++
!
prop Xwd
_
Ket
End
------------------------------------------------------------------
/A+\p{N}A+\dB+\p{N}*B+\d*/WBZ
------------------------------------------------------------------
Bra
A++
prop N
A++
prop Nd
B+
prop N *+
B++
prop Nd *+
Ket
End
------------------------------------------------------------------
/-- These behaved oddly in Perl, so they are kept in this test --/
/(\x{23a}\x{23a}\x{23a})?\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
No match
/(ȺȺȺ)?\1/8i
ȺȺȺⱥⱥ
No match
/(\x{23a}\x{23a}\x{23a})?\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1: \x{23a}\x{23a}\x{23a}
/(ȺȺȺ)?\1/8i
ȺȺȺⱥⱥⱥ
0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1: \x{23a}\x{23a}\x{23a}
/(\x{23a}\x{23a}\x{23a})\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
No match
/(ȺȺȺ)\1/8i
ȺȺȺⱥⱥ
No match
/(\x{23a}\x{23a}\x{23a})\1/8i
\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1: \x{23a}\x{23a}\x{23a}
/(ȺȺȺ)\1/8i
ȺȺȺⱥⱥⱥ
0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1: \x{23a}\x{23a}\x{23a}
/(\x{2c65}\x{2c65})\1/8i
\x{2c65}\x{2c65}\x{23a}\x{23a}
0: \x{2c65}\x{2c65}\x{23a}\x{23a}
1: \x{2c65}\x{2c65}
/(ⱥⱥ)\1/8i
ⱥⱥȺȺ
0: \x{2c65}\x{2c65}\x{23a}\x{23a}
1: \x{2c65}\x{2c65}
/(\x{23a}\x{23a}\x{23a})\1Y/8i
X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y
1: \x{23a}\x{23a}\x{23a}
/(\x{2c65}\x{2c65})\1Y/8i
X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y
1: \x{2c65}\x{2c65}
/-- --/
/-- These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE --/
/^[\p{Batak}]/8
\x{1bc0}
0: \x{1bc0}
\x{1bff}
0: \x{1bff}
** Failers
No match
\x{1bf4}
No match
/^[\p{Brahmi}]/8
\x{11000}
0: \x{11000}
\x{1106f}
0: \x{1106f}
** Failers
No match
\x{1104e}
No match
/^[\p{Mandaic}]/8
\x{840}
0: \x{840}
\x{85e}
0: \x{85e}
** Failers
No match
\x{85c}
No match
\x{85d}
No match
/-- --/
/(\X*)(.)/s8
A\x{300}
0: A
1:
2: A
/^S(\X*)e(\X*)$/8
Stéréo
0: Ste\x{301}re\x{301}o
1: te\x{301}r
2: \x{301}o
/^\X/8
́réo
0: \x{301}
/^a\X41z/<JS>
aX41z
0: aX41z
*** Failers
No match
aAz
No match
/(?<=ab\Cde)X/8
Failed: \C not allowed in lookbehind assertion at offset 10
/\X/
a\P
0: a
a\P\P
Partial match: a
/\Xa/
aa\P
0: aa
aa\P\P
0: aa
/\X{2}/
aa\P
0: aa
aa\P\P
Partial match: aa
/\X+a/
a\P
Partial match: a
aa\P
0: aa
aa\P\P
Partial match: aa
/\X+?a/
a\P
Partial match: a
ab\P
Partial match: ab
aa\P
0: aa
aa\P\P
0: aa
aba\P
0: aba
/-- These Unicode 6.1.0 scripts are not known to Perl. --/
/\p{Chakma}\d/8W
\x{11100}\x{1113c}
0: \x{11100}\x{1113c}
/\p{Takri}\d/8W
\x{11680}\x{116c0}
0: \x{11680}\x{116c0}
/^\X/8
A\P
0: A
A\P\P
Partial match: A
A\x{300}\x{301}\P
0: A\x{300}\x{301}
A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}
A\x{301}\P
0: A\x{301}
A\x{301}\P\P
Partial match: A\x{301}
/^\X{2,3}/8
A\P
Partial match: A
A\P\P
Partial match: A
AA\P
0: AA
AA\P\P
Partial match: AA
A\x{300}\x{301}\P
Partial match: A\x{300}\x{301}
A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}
A\x{300}\x{301}A\x{300}\x{301}\P
0: A\x{300}\x{301}A\x{300}\x{301}
A\x{300}\x{301}A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}A\x{300}\x{301}
/^\X{2}/8
AA\P
0: AA
AA\P\P
Partial match: AA
A\x{300}\x{301}A\x{300}\x{301}\P
0: A\x{300}\x{301}A\x{300}\x{301}
A\x{300}\x{301}A\x{300}\x{301}\P\P
Partial match: A\x{300}\x{301}A\x{300}\x{301}
/^\X+/8
AA\P
0: AA
AA\P\P
Partial match: AA
/^\X+?Z/8
AA\P
Partial match: AA
AA\P\P
Partial match: AA
/A\x{3a3}B/8iDZ
------------------------------------------------------------------
Bra
/i A
clist 03a3 03c2 03c3
/i B
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
First char = 'A' (caseless)
Need char = 'B' (caseless)
/\x{3a3}B/8iDZ
------------------------------------------------------------------
Bra
clist 03a3 03c2 03c3
/i B
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: caseless utf
No first char
Need char = 'B' (caseless)
/[\x{3a3}]/8iBZ
------------------------------------------------------------------
Bra
clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/[^\x{3a3}]/8iBZ
------------------------------------------------------------------
Bra
not clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/[\x{3a3}]+/8iBZ
------------------------------------------------------------------
Bra
clist 03a3 03c2 03c3 ++
Ket
End
------------------------------------------------------------------
/[^\x{3a3}]+/8iBZ
------------------------------------------------------------------
Bra
not clist 03a3 03c2 03c3 ++
Ket
End
------------------------------------------------------------------
/a*\x{3a3}/8iBZ
------------------------------------------------------------------
Bra
/i a*+
clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/\x{3a3}+a/8iBZ
------------------------------------------------------------------
Bra
clist 03a3 03c2 03c3 ++
/i a
Ket
End
------------------------------------------------------------------
/\x{3a3}*\x{3c2}/8iBZ
------------------------------------------------------------------
Bra
clist 03a3 03c2 03c3 *
clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/\x{3a3}{3}/8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
0: \x{3a3}\x{3c3}\x{3c2}
0+ \x{3a3}\x{3c3}\x{3c2}
/\x{3a3}{2,4}/8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}
0+ \x{3c3}\x{3c2}
/\x{3a3}{2,4}?/8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
0: \x{3a3}\x{3c3}
0+ \x{3c2}\x{3a3}\x{3c3}\x{3c2}
/\x{3a3}+./8i+
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
0+
/\x{3a3}++./8i+
** Failers
No match
\x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
No match
/\x{3a3}*\x{3c2}/8iBZ
------------------------------------------------------------------
Bra
clist 03a3 03c2 03c3 *
clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/[^\x{3a3}]*\x{3c2}/8iBZ
------------------------------------------------------------------
Bra
not clist 03a3 03c2 03c3 *+
clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/[^a]*\x{3c2}/8iBZ
------------------------------------------------------------------
Bra
/i [^a]*
clist 03a3 03c2 03c3
Ket
End
------------------------------------------------------------------
/ist/8iBZ
------------------------------------------------------------------
Bra
/i i
clist 0053 0073 017f
/i t
Ket
End
------------------------------------------------------------------
ikt
No match
/is+t/8i
iSs\x{17f}t
0: iSs\x{17f}t
ikt
No match
/is+?t/8i
ikt
No match
/is?t/8i
ikt
No match
/is{2}t/8i
iskt
No match
/-- This property is a PCRE special --/
/^\p{Xuc}/8
$abc
0: $
@abc
0: @
`abc
0: `
\x{1234}abc
0: \x{1234}
** Failers
No match
abc
No match
/^\p{Xuc}+/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
** Failers
No match
\x{9f}
No match
/^\p{Xuc}+?/8
$@`\x{a0}\x{1234}\x{e000}**
0: $
** Failers
No match
\x{9f}
No match
/^\p{Xuc}+?\*/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}*
** Failers
No match
\x{9f}
No match
/^\p{Xuc}++/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
** Failers
No match
\x{9f}
No match
/^\p{Xuc}{3,5}/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}
** Failers
No match
\x{9f}
No match
/^\p{Xuc}{3,5}?/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`
** Failers
No match
\x{9f}
No match
/^[\p{Xuc}]/8
$@`\x{a0}\x{1234}\x{e000}**
0: $
** Failers
No match
\x{9f}
No match
/^[\p{Xuc}]+/8
$@`\x{a0}\x{1234}\x{e000}**
0: $@`\x{a0}\x{1234}\x{e000}
** Failers
No match
\x{9f}
No match
/^\P{Xuc}/8
abc
0: a
** Failers
0: *
$abc
No match
@abc
No match
`abc
No match
\x{1234}abc
No match
/^[\P{Xuc}]/8
abc
0: a
** Failers
0: *
$abc
No match
@abc
No match
`abc
No match
\x{1234}abc
No match
/-- Some auto-possessification tests --/
/\pN+\z/BZ
------------------------------------------------------------------
Bra
prop N ++
\z
Ket
End
------------------------------------------------------------------
/\PN+\z/BZ
------------------------------------------------------------------
Bra
notprop N ++
\z
Ket
End
------------------------------------------------------------------
/\pN+/BZ
------------------------------------------------------------------
Bra
prop N ++
Ket
End
------------------------------------------------------------------
/\PN+/BZ
------------------------------------------------------------------
Bra
notprop N ++
Ket
End
------------------------------------------------------------------
/\p{Any}+\p{Any} \p{Any}+\P{Any} \p{Any}+\p{L&} \p{Any}+\p{L} \p{Any}+\p{Lu} \p{Any}+\p{Han} \p{Any}+\p{Xan} \p{Any}+\p{Xsp} \p{Any}+\p{Xps} \p{Xwd}+\p{Any} \p{Any}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Any +
prop Any
prop Any +
notprop Any
prop Any +
prop L&
prop Any +
prop L
prop Any +
prop Lu
prop Any +
prop Han
prop Any +
prop Xan
prop Any +
prop Xsp
prop Any +
prop Xps
prop Xwd +
prop Any
prop Any +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{L&}+\p{Any} \p{L&}+\p{L&} \P{L&}+\p{L&} \p{L&}+\p{L} \p{L&}+\p{Lu} \p{L&}+\p{Han} \p{L&}+\p{Xan} \p{L&}+\P{Xan} \p{L&}+\p{Xsp} \p{L&}+\p{Xps} \p{Xwd}+\p{L&} \p{L&}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop L& +
prop Any
prop L& +
prop L&
notprop L& ++
prop L&
prop L& +
prop L
prop L& +
prop Lu
prop L& +
prop Han
prop L& +
prop Xan
prop L& ++
notprop Xan
prop L& ++
prop Xsp
prop L& ++
prop Xps
prop Xwd +
prop L&
prop L& +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{N}+\p{Any} \p{N}+\p{L&} \p{N}+\p{L} \p{N}+\P{L} \p{N}+\P{N} \p{N}+\p{Lu} \p{N}+\p{Han} \p{N}+\p{Xan} \p{N}+\p{Xsp} \p{N}+\p{Xps} \p{Xwd}+\p{N} \p{N}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop N +
prop Any
prop N +
prop L&
prop N ++
prop L
prop N +
notprop L
prop N ++
notprop N
prop N ++
prop Lu
prop N +
prop Han
prop N +
prop Xan
prop N ++
prop Xsp
prop N ++
prop Xps
prop Xwd +
prop N
prop N +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{Lu}+\p{Any} \p{Lu}+\p{L&} \p{Lu}+\p{L} \p{Lu}+\p{Lu} \P{Lu}+\p{Lu} \p{Lu}+\p{Nd} \p{Lu}+\P{Nd} \p{Lu}+\p{Han} \p{Lu}+\p{Xan} \p{Lu}+\p{Xsp} \p{Lu}+\p{Xps} \p{Xwd}+\p{Lu} \p{Lu}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Lu +
prop Any
prop Lu +
prop L&
prop Lu +
prop L
prop Lu +
prop Lu
notprop Lu ++
prop Lu
prop Lu ++
prop Nd
prop Lu +
notprop Nd
prop Lu +
prop Han
prop Lu +
prop Xan
prop Lu ++
prop Xsp
prop Lu ++
prop Xps
prop Xwd +
prop Lu
prop Lu +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{Han}+\p{Lu} \p{Han}+\p{L&} \p{Han}+\p{L} \p{Han}+\p{Lu} \p{Han}+\p{Arabic} \p{Arabic}+\p{Arabic} \p{Han}+\p{Xan} \p{Han}+\p{Xsp} \p{Han}+\p{Xps} \p{Xwd}+\p{Han} \p{Han}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Han +
prop Lu
prop Han +
prop L&
prop Han +
prop L
prop Han +
prop Lu
prop Han ++
prop Arabic
prop Arabic +
prop Arabic
prop Han +
prop Xan
prop Han +
prop Xsp
prop Han +
prop Xps
prop Xwd +
prop Han
prop Han +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{Xan}+\p{Any} \p{Xan}+\p{L&} \P{Xan}+\p{L&} \p{Xan}+\p{L} \p{Xan}+\p{Lu} \p{Xan}+\p{Han} \p{Xan}+\p{Xan} \p{Xan}+\P{Xan} \p{Xan}+\p{Xsp} \p{Xan}+\p{Xps} \p{Xwd}+\p{Xan} \p{Xan}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Xan +
prop Any
prop Xan +
prop L&
notprop Xan ++
prop L&
prop Xan +
prop L
prop Xan +
prop Lu
prop Xan +
prop Han
prop Xan +
prop Xan
prop Xan ++
notprop Xan
prop Xan ++
prop Xsp
prop Xan ++
prop Xps
prop Xwd +
prop Xan
prop Xan +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{Xsp}+\p{Any} \p{Xsp}+\p{L&} \p{Xsp}+\p{L} \p{Xsp}+\p{Lu} \p{Xsp}+\p{Han} \p{Xsp}+\p{Xan} \p{Xsp}+\p{Xsp} \P{Xsp}+\p{Xsp} \p{Xsp}+\p{Xps} \p{Xwd}+\p{Xsp} \p{Xsp}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Xsp +
prop Any
prop Xsp ++
prop L&
prop Xsp ++
prop L
prop Xsp ++
prop Lu
prop Xsp +
prop Han
prop Xsp ++
prop Xan
prop Xsp +
prop Xsp
notprop Xsp ++
prop Xsp
prop Xsp +
prop Xps
prop Xwd ++
prop Xsp
prop Xsp +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{Xwd}+\p{Any} \p{Xwd}+\p{L&} \p{Xwd}+\p{L} \p{Xwd}+\p{Lu} \p{Xwd}+\p{Han} \p{Xwd}+\p{Xan} \p{Xwd}+\p{Xsp} \p{Xwd}+\p{Xps} \p{Xwd}+\p{Xwd} \p{Xwd}+\P{Xwd} \p{Xwd}+\p{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Xwd +
prop Any
prop Xwd +
prop L&
prop Xwd +
prop L
prop Xwd +
prop Lu
prop Xwd +
prop Han
prop Xwd +
prop Xan
prop Xwd ++
prop Xsp
prop Xwd ++
prop Xps
prop Xwd +
prop Xwd
prop Xwd ++
notprop Xwd
prop Xwd +
prop Xuc
Ket
End
------------------------------------------------------------------
/\p{Xuc}+\p{Any} \p{Xuc}+\p{L&} \p{Xuc}+\p{L} \p{Xuc}+\p{Lu} \p{Xuc}+\p{Han} \p{Xuc}+\p{Xan} \p{Xuc}+\p{Xsp} \p{Xuc}+\p{Xps} \p{Xwd}+\p{Xuc} \p{Xuc}+\p{Xuc} \p{Xuc}+\P{Xuc}/BWZx
------------------------------------------------------------------
Bra
prop Xuc +
prop Any
prop Xuc +
prop L&
prop Xuc +
prop L
prop Xuc +
prop Lu
prop Xuc +
prop Han
prop Xuc +
prop Xan
prop Xuc +
prop Xsp
prop Xuc +
prop Xps
prop Xwd +
prop Xuc
prop Xuc +
prop Xuc
prop Xuc ++
notprop Xuc
Ket
End
------------------------------------------------------------------
/\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/BWZx
------------------------------------------------------------------
Bra
prop N ++
prop Ll
prop N +
prop Nd
prop N +
notprop Nd
Ket
End
------------------------------------------------------------------
/\p{Xan}+\p{L} \p{Xan}+\p{N} \p{Xan}+\p{C} \p{Xan}+\P{L} \P{Xan}+\p{N} \p{Xan}+\P{C}/BWZx
------------------------------------------------------------------
Bra
prop Xan +
prop L
prop Xan +
prop N
prop Xan ++
prop C
prop Xan +
notprop L
notprop Xan ++
prop N
prop Xan +
notprop C
Ket
End
------------------------------------------------------------------
/\p{L}+\p{Xan} \p{N}+\p{Xan} \p{C}+\p{Xan} \P{L}+\p{Xan} \p{N}+\p{Xan} \P{C}+\p{Xan} \p{L}+\P{Xan}/BWZx
------------------------------------------------------------------
Bra
prop L +
prop Xan
prop N +
prop Xan
prop C ++
prop Xan
notprop L +
prop Xan
prop N +
prop Xan
notprop C +
prop Xan
prop L ++
notprop Xan
Ket
End
------------------------------------------------------------------
/\p{Xan}+\p{Lu} \p{Xan}+\p{Nd} \p{Xan}+\p{Cc} \p{Xan}+\P{Ll} \P{Xan}+\p{No} \p{Xan}+\P{Cf}/BWZx
------------------------------------------------------------------
Bra
prop Xan +
prop Lu
prop Xan +
prop Nd
prop Xan ++
prop Cc
prop Xan +
notprop Ll
notprop Xan ++
prop No
prop Xan +
notprop Cf
Ket
End
------------------------------------------------------------------
/\p{Lu}+\p{Xan} \p{Nd}+\p{Xan} \p{Cs}+\p{Xan} \P{Lt}+\p{Xan} \p{Nl}+\p{Xan} \P{Cc}+\p{Xan} \p{Lt}+\P{Xan}/BWZx
------------------------------------------------------------------
Bra
prop Lu +
prop Xan
prop Nd +
prop Xan
prop Cs ++
prop Xan
notprop Lt +
prop Xan
prop Nl +
prop Xan
notprop Cc +
prop Xan
prop Lt ++
notprop Xan
Ket
End
------------------------------------------------------------------
/\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/BWZx
------------------------------------------------------------------
Bra
prop Xwd +
prop P
prop Xwd +
prop Po
prop Xwd ++
prop Xsp
prop Xan ++
prop Xsp
prop Xsp ++
prop Xan
prop Xsp ++
prop Xwd
Ket
End
------------------------------------------------------------------
/\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/BWZx
------------------------------------------------------------------
Bra
prop Xwd +
notprop P
notprop Xwd +
prop Po
prop Xwd +
notprop Xsp
notprop Xan +
prop Xsp
prop Xsp +
notprop Xan
prop Xsp +
notprop Xwd
Ket
End
------------------------------------------------------------------
/\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/BWZx
------------------------------------------------------------------
Bra
prop Xwd +
prop Po
prop Xwd ++
prop Pc
notprop Xwd +
prop Po
notprop Xwd +
prop Pc
prop Xwd +
notprop Po
prop Xwd +
notprop Pc
Ket
End
------------------------------------------------------------------
/\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/BWZx
------------------------------------------------------------------
Bra
prop Nl +
prop Xan
notprop Nl +
prop Xan
prop Nl ++
notprop Xan
notprop Nl +
notprop Xan
Ket
End
------------------------------------------------------------------
/\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/BWZx
------------------------------------------------------------------
Bra
prop Xan +
prop Nl
notprop Xan ++
prop Nl
prop Xan +
notprop Nl
notprop Xan +
notprop Nl
Ket
End
------------------------------------------------------------------
/\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/BWZx
------------------------------------------------------------------
Bra
prop Xan +
prop Nd
notprop Xan ++
prop Nd
prop Xan +
notprop Nd
notprop Xan +
notprop Nd
Ket
End
------------------------------------------------------------------
/-- End auto-possessification tests --/
/\w+/8CWBZ
------------------------------------------------------------------
Bra
Callout 255 0 3
prop Xwd ++
Callout 255 3 0
Ket
End
------------------------------------------------------------------
abcd
--->abcd
+0 ^ \w+
+3 ^ ^
0: abcd
/[\p{N}]?+/BZO
------------------------------------------------------------------
Bra
[\p{N}]?+
Ket
End
------------------------------------------------------------------
/[\p{L}ab]{2,3}+/BZO
------------------------------------------------------------------
Bra
[ab\p{L}]{2,3}+
Ket
End
------------------------------------------------------------------
/\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \C+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/BZx
------------------------------------------------------------------
Bra
\D+
extuni
\d+
extuni
\S+
extuni
\s+
extuni
\W+
extuni
\w+
extuni
AllAny+
extuni
\R+
extuni
\H+
extuni
\h+
extuni
\V+
extuni
\v+
extuni
a+
extuni
\x0a+
extuni
Any+
extuni
Ket
End
------------------------------------------------------------------
/.+\X/BZxs
------------------------------------------------------------------
Bra
AllAny+
extuni
Ket
End
------------------------------------------------------------------
/\X+$/BZxm
------------------------------------------------------------------
Bra
extuni+
/m $
Ket
End
------------------------------------------------------------------
/\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\C \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/BZx
------------------------------------------------------------------
Bra
extuni+
\D
extuni+
\d
extuni+
\S
extuni+
\s
extuni+
\W
extuni+
\w
extuni+
Any
extuni+
AllAny
extuni+
\R
extuni+
\H
extuni+
\h
extuni+
\V
extuni+
\v
extuni+
extuni
extuni+
\Z
extuni++
\z
extuni+
$
Ket
End
------------------------------------------------------------------
/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/8WBZ
------------------------------------------------------------------
Bra
prop Nd ++
prop Xsp {0,5}+
=
prop Xsp *+
notprop Xsp ?
=
prop Xwd {0,4}+
notprop Xwd *+
Ket
End
------------------------------------------------------------------
/[RST]+/8iWBZ
------------------------------------------------------------------
Bra
[R-Tr-t\x{17f}]++
Ket
End
------------------------------------------------------------------
/[R-T]+/8iWBZ
------------------------------------------------------------------
Bra
[R-Tr-t\x{17f}]++
Ket
End
------------------------------------------------------------------
/[Q-U]+/8iWBZ
------------------------------------------------------------------
Bra
[Q-Uq-u\x{17f}]++
Ket
End
------------------------------------------------------------------
/^s?c/mi8I
Capturing subpattern count = 0
Options: caseless multiline utf
First char at start or follows newline
Need char = 'c' (caseless)
scat
0: sc
/a[[:punct:]b]/WBZ
------------------------------------------------------------------
Bra
a
[b[:punct:]]
Ket
End
------------------------------------------------------------------
/a[[:punct:]b]/8WBZ
------------------------------------------------------------------
Bra
a
[b[:punct:]]
Ket
End
------------------------------------------------------------------
/a[b[:punct:]]/8WBZ
------------------------------------------------------------------
Bra
a
[b[:punct:]]
Ket
End
------------------------------------------------------------------
/L(?#(|++<!(2)?/B8COZ
------------------------------------------------------------------
Bra
Callout 255 0 14
L?
Callout 255 14 0
Ket
End
------------------------------------------------------------------
/L(?#(|++<!(2)?/B8WCZ
------------------------------------------------------------------
Bra
Callout 255 0 14
L?+
Callout 255 14 0
Ket
End
------------------------------------------------------------------
/-- End of testinput7 --/
+7808
View File
@@ -0,0 +1,7808 @@
/-- This set of tests check the DFA matching functionality of pcre_dfa_exec(),
excluding UTF and Unicode property support. The -dfa flag must be used with
pcretest when running it. --/
< forbid 8W
/abc/
abc
0: abc
/ab*c/
abc
0: abc
abbbbc
0: abbbbc
ac
0: ac
/ab+c/
abc
0: abc
abbbbbbc
0: abbbbbbc
*** Failers
No match
ac
No match
ab
No match
/a*/O
a
0: a
1:
aaaaaaaaaaaaaaaaa
0: aaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaa
4: aaaaaaaaaaaaa
5: aaaaaaaaaaaa
6: aaaaaaaaaaa
7: aaaaaaaaaa
8: aaaaaaaaa
9: aaaaaaaa
10: aaaaaaa
11: aaaaaa
12: aaaaa
13: aaaa
14: aaa
15: aa
16: a
17:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaa
17: aaaaaaaaaaaaa
18: aaaaaaaaaaaa
19: aaaaaaaaaaa
20: aaaaaaaaaa
21: aaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
0:
/(a|abcd|african)/
a
0: a
abcd
0: abcd
1: a
african
0: african
1: a
/^abc/
abcdef
0: abc
*** Failers
No match
xyzabc
No match
xyz\nabc
No match
/^abc/m
abcdef
0: abc
xyz\nabc
0: abc
*** Failers
No match
xyzabc
No match
/\Aabc/
abcdef
0: abc
*** Failers
No match
xyzabc
No match
xyz\nabc
No match
/\Aabc/m
abcdef
0: abc
*** Failers
No match
xyzabc
No match
xyz\nabc
No match
/\Gabc/
abcdef
0: abc
xyzabc\>3
0: abc
*** Failers
No match
xyzabc
No match
xyzabc\>2
No match
/x\dy\Dz/
x9yzz
0: x9yzz
x0y+z
0: x0y+z
*** Failers
No match
xyz
No match
xxy0z
No match
/x\sy\Sz/
x yzz
0: x yzz
x y+z
0: x y+z
*** Failers
No match
xyz
No match
xxyyz
No match
/x\wy\Wz/
xxy+z
0: xxy+z
*** Failers
No match
xxy0z
No match
x+y+z
No match
/x.y/
x+y
0: x+y
x-y
0: x-y
*** Failers
No match
x\ny
No match
/x.y/s
x+y
0: x+y
x-y
0: x-y
x\ny
0: x\x0ay
/(a.b(?s)c.d|x.y)p.q/
a+bc+dp+q
0: a+bc+dp+q
a+bc\ndp+q
0: a+bc\x0adp+q
x\nyp+q
0: x\x0ayp+q
*** Failers
No match
a\nbc\ndp+q
No match
a+bc\ndp\nq
No match
x\nyp\nq
No match
/a\d\z/
ba0
0: a0
*** Failers
No match
ba0\n
No match
ba0\ncd
No match
/a\d\z/m
ba0
0: a0
*** Failers
No match
ba0\n
No match
ba0\ncd
No match
/a\d\Z/
ba0
0: a0
ba0\n
0: a0
*** Failers
No match
ba0\ncd
No match
/a\d\Z/m
ba0
0: a0
ba0\n
0: a0
*** Failers
No match
ba0\ncd
No match
/a\d$/
ba0
0: a0
ba0\n
0: a0
*** Failers
No match
ba0\ncd
No match
/a\d$/m
ba0
0: a0
ba0\n
0: a0
ba0\ncd
0: a0
*** Failers
No match
/abc/i
abc
0: abc
aBc
0: aBc
ABC
0: ABC
/[^a]/
abcd
0: b
/ab?\w/
abz
0: abz
1: ab
abbz
0: abb
1: ab
azz
0: az
/x{0,3}yz/
ayzq
0: yz
axyzq
0: xyz
axxyz
0: xxyz
axxxyzq
0: xxxyz
axxxxyzq
0: xxxyz
*** Failers
No match
ax
No match
axx
No match
/x{3}yz/
axxxyzq
0: xxxyz
axxxxyzq
0: xxxyz
*** Failers
No match
ax
No match
axx
No match
ayzq
No match
axyzq
No match
axxyz
No match
/x{2,3}yz/
axxyz
0: xxyz
axxxyzq
0: xxxyz
axxxxyzq
0: xxxyz
*** Failers
No match
ax
No match
axx
No match
ayzq
No match
axyzq
No match
/[^a]+/O
bac
0: b
bcdefax
0: bcdef
1: bcde
2: bcd
3: bc
4: b
*** Failers
0: *** F
1: ***
2: ***
3: **
4: *
aaaaa
No match
/[^a]*/O
bac
0: b
1:
bcdefax
0: bcdef
1: bcde
2: bcd
3: bc
4: b
5:
*** Failers
0: *** F
1: ***
2: ***
3: **
4: *
5:
aaaaa
0:
/[^a]{3,5}/O
xyz
0: xyz
awxyza
0: wxyz
1: wxy
abcdefa
0: bcdef
1: bcde
2: bcd
abcdefghijk
0: bcdef
1: bcde
2: bcd
*** Failers
0: *** F
1: ***
2: ***
axya
No match
axa
No match
aaaaa
No match
/\d*/
1234b567
0: 1234
xyz
0:
/\D*/
a1234b567
0: a
xyz
0: xyz
/\d+/
ab1234c56
0: 1234
*** Failers
No match
xyz
No match
/\D+/
ab123c56
0: ab
*** Failers
0: *** Failers
789
No match
/\d?A/
045ABC
0: 5A
ABC
0: A
*** Failers
No match
XYZ
No match
/\D?A/
ABC
0: A
BAC
0: BA
9ABC
0: A
*** Failers
No match
/a+/
aaaa
0: aaaa
/^.*xyz/
xyz
0: xyz
ggggggggxyz
0: ggggggggxyz
/^.+xyz/
abcdxyz
0: abcdxyz
axyz
0: axyz
*** Failers
No match
xyz
No match
/^.?xyz/
xyz
0: xyz
cxyz
0: cxyz
/^\d{2,3}X/
12X
0: 12X
123X
0: 123X
*** Failers
No match
X
No match
1X
No match
1234X
No match
/^[abcd]\d/
a45
0: a4
b93
0: b9
c99z
0: c9
d04
0: d0
*** Failers
No match
e45
No match
abcd
No match
abcd1234
No match
1234
No match
/^[abcd]*\d/
a45
0: a4
b93
0: b9
c99z
0: c9
d04
0: d0
abcd1234
0: abcd1
1234
0: 1
*** Failers
No match
e45
No match
abcd
No match
/^[abcd]+\d/
a45
0: a4
b93
0: b9
c99z
0: c9
d04
0: d0
abcd1234
0: abcd1
*** Failers
No match
1234
No match
e45
No match
abcd
No match
/^a+X/
aX
0: aX
aaX
0: aaX
/^[abcd]?\d/
a45
0: a4
b93
0: b9
c99z
0: c9
d04
0: d0
1234
0: 1
*** Failers
No match
abcd1234
No match
e45
No match
/^[abcd]{2,3}\d/
ab45
0: ab4
bcd93
0: bcd9
*** Failers
No match
1234
No match
a36
No match
abcd1234
No match
ee45
No match
/^(abc)*\d/
abc45
0: abc4
abcabcabc45
0: abcabcabc4
42xyz
0: 4
*** Failers
No match
/^(abc)+\d/
abc45
0: abc4
abcabcabc45
0: abcabcabc4
*** Failers
No match
42xyz
No match
/^(abc)?\d/
abc45
0: abc4
42xyz
0: 4
*** Failers
No match
abcabcabc45
No match
/^(abc){2,3}\d/
abcabc45
0: abcabc4
abcabcabc45
0: abcabcabc4
*** Failers
No match
abcabcabcabc45
No match
abc45
No match
42xyz
No match
/1(abc|xyz)2(?1)3/
1abc2abc3456
0: 1abc2abc3
1abc2xyz3456
0: 1abc2xyz3
/^(a*\w|ab)=(a*\w|ab)/
ab=ab
0: ab=ab
1: ab=a
/^(a*\w|ab)=(?1)/
ab=ab
0: ab=ab
1: ab=a
/^([^()]|\((?1)*\))*$/
abc
0: abc
a(b)c
0: a(b)c
a(b(c))d
0: a(b(c))d
*** Failers)
No match
a(b(c)d
No match
/^>abc>([^()]|\((?1)*\))*<xyz<$/
>abc>123<xyz<
0: >abc>123<xyz<
>abc>1(2)3<xyz<
0: >abc>1(2)3<xyz<
>abc>(1(2)3)<xyz<
0: >abc>(1(2)3)<xyz<
/^(?>a*)\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
*** Failers
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
<>
0: <>
<abcd>
0: <abcd>
<abc <123> hij>
0: <abc <123> hij>
<abc <def> hij>
0: <def>
<abc<>def>
0: <abc<>def>
<abc<>
0: <>
*** Failers
No match
<abc
No match
/^(?(?=abc)\w{3}:|\d\d)$/
abc:
0: abc:
12
0: 12
*** Failers
No match
123
No match
xyz
No match
/^(?(?!abc)\d\d|\w{3}:)$/
abc:
0: abc:
12
0: 12
*** Failers
No match
123
No match
xyz
No match
/^(?=abc)\w{5}:$/
abcde:
0: abcde:
*** Failers
No match
abc..
No match
123
No match
vwxyz
No match
/^(?!abc)\d\d$/
12
0: 12
*** Failers
No match
abcde:
No match
abc..
No match
123
No match
vwxyz
No match
/(?<=abc|xy)123/
abc12345
0: 123
wxy123z
0: 123
*** Failers
No match
123abc
No match
/(?<!abc|xy)123/
123abc
0: 123
mno123456
0: 123
*** Failers
No match
abc12345
No match
wxy123z
No match
/abc(?C1)xyz/
abcxyz
--->abcxyz
1 ^ ^ x
0: abcxyz
123abcxyz999
--->123abcxyz999
1 ^ ^ x
0: abcxyz
/(ab|cd){3,4}/C
ababab
--->ababab
+0 ^ (ab|cd){3,4}
+1 ^ a
+4 ^ c
+2 ^^ b
+3 ^ ^ |
+1 ^ ^ a
+4 ^ ^ c
+2 ^ ^ b
+3 ^ ^ |
+1 ^ ^ a
+4 ^ ^ c
+2 ^ ^ b
+3 ^ ^ |
+12 ^ ^
+1 ^ ^ a
+4 ^ ^ c
0: ababab
abcdabcd
--->abcdabcd
+0 ^ (ab|cd){3,4}
+1 ^ a
+4 ^ c
+2 ^^ b
+3 ^ ^ |
+1 ^ ^ a
+4 ^ ^ c
+5 ^ ^ d
+6 ^ ^ )
+1 ^ ^ a
+4 ^ ^ c
+2 ^ ^ b
+3 ^ ^ |
+12 ^ ^
+1 ^ ^ a
+4 ^ ^ c
+5 ^ ^ d
+6 ^ ^ )
+12 ^ ^
0: abcdabcd
1: abcdab
abcdcdcdcdcd
--->abcdcdcdcdcd
+0 ^ (ab|cd){3,4}
+1 ^ a
+4 ^ c
+2 ^^ b
+3 ^ ^ |
+1 ^ ^ a
+4 ^ ^ c
+5 ^ ^ d
+6 ^ ^ )
+1 ^ ^ a
+4 ^ ^ c
+5 ^ ^ d
+6 ^ ^ )
+12 ^ ^
+1 ^ ^ a
+4 ^ ^ c
+5 ^ ^ d
+6 ^ ^ )
+12 ^ ^
0: abcdcdcd
1: abcdcd
/^abc/
abcdef
0: abc
*** Failers
No match
abcdef\B
No match
/^(a*|xyz)/
bcd
0:
aaabcd
0: aaa
xyz
0: xyz
1:
xyz\N
0: xyz
*** Failers
0:
bcd\N
No match
/xyz$/
xyz
0: xyz
xyz\n
0: xyz
*** Failers
No match
xyz\Z
No match
xyz\n\Z
No match
/xyz$/m
xyz
0: xyz
xyz\n
0: xyz
abcxyz\npqr
0: xyz
abcxyz\npqr\Z
0: xyz
xyz\n\Z
0: xyz
*** Failers
No match
xyz\Z
No match
/\Gabc/
abcdef
0: abc
defabcxyz\>3
0: abc
*** Failers
No match
defabcxyz
No match
/^abcdef/
ab\P
Partial match: ab
abcde\P
Partial match: abcde
abcdef\P
0: abcdef
*** Failers
No match
abx\P
No match
/^a{2,4}\d+z/
a\P
Partial match: a
aa\P
Partial match: aa
aa2\P
Partial match: aa2
aaa\P
Partial match: aaa
aaa23\P
Partial match: aaa23
aaaa12345\P
Partial match: aaaa12345
aa0z\P
0: aa0z
aaaa4444444444444z\P
0: aaaa4444444444444z
*** Failers
No match
az\P
No match
aaaaa\P
No match
a56\P
No match
/^abcdef/
abc\P
Partial match: abc
def\R
0: def
/(?<=foo)bar/
xyzfo\P
No match
foob\P\>2
Partial match at offset 3: foob
foobar...\R\P\>4
0: ar
xyzfo\P
No match
foobar\>2
0: bar
*** Failers
No match
xyzfo\P
No match
obar\R
No match
/(ab*(cd|ef))+X/
adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
No match
lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
Partial match: abbbbbbcdaefabbbbbbbefa
cdabbbbbbbb\P\R\B\Z
Partial match: cdabbbbbbbb
efabbbbbbbbbbbbbbbb\P\R\B\Z
Partial match: efabbbbbbbbbbbbbbbb
bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
0: bbbbbbbbbbbbcdX
/(a|b)/SF>testsavedregex
Compiled pattern written to testsavedregex
Study data written to testsavedregex
<testsavedregex
Compiled pattern (byte-inverted) loaded from testsavedregex
Study data loaded from testsavedregex
abc
0: a
** Failers
0: a
def
No match
/the quick brown fox/
the quick brown fox
0: the quick brown fox
The quick brown FOX
No match
What do you know about the quick brown fox?
0: the quick brown fox
What do you know about THE QUICK BROWN FOX?
No match
/The quick brown fox/i
the quick brown fox
0: the quick brown fox
The quick brown FOX
0: The quick brown FOX
What do you know about the quick brown fox?
0: the quick brown fox
What do you know about THE QUICK BROWN FOX?
0: THE QUICK BROWN FOX
/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
abcd\t\n\r\f\a\e9;\$\\?caxyz
0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
abxyzpqrrrabbxyyyypqAzz
0: abxyzpqrrrabbxyyyypqAzz
abxyzpqrrrabbxyyyypqAzz
0: abxyzpqrrrabbxyyyypqAzz
aabxyzpqrrrabbxyyyypqAzz
0: aabxyzpqrrrabbxyyyypqAzz
aaabxyzpqrrrabbxyyyypqAzz
0: aaabxyzpqrrrabbxyyyypqAzz
aaaabxyzpqrrrabbxyyyypqAzz
0: aaaabxyzpqrrrabbxyyyypqAzz
abcxyzpqrrrabbxyyyypqAzz
0: abcxyzpqrrrabbxyyyypqAzz
aabcxyzpqrrrabbxyyyypqAzz
0: aabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypAzz
0: aaabcxyzpqrrrabbxyyyypAzz
aaabcxyzpqrrrabbxyyyypqAzz
0: aaabcxyzpqrrrabbxyyyypqAzz
aaabcxyzpqrrrabbxyyyypqqAzz
0: aaabcxyzpqrrrabbxyyyypqqAzz
aaabcxyzpqrrrabbxyyyypqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
aaabcxyzpqrrrabbxyyyypqqqqqqAzz
0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
aaaabcxyzpqrrrabbxyyyypqAzz
0: aaaabcxyzpqrrrabbxyyyypqAzz
abxyzzpqrrrabbxyyyypqAzz
0: abxyzzpqrrrabbxyyyypqAzz
aabxyzzzpqrrrabbxyyyypqAzz
0: aabxyzzzpqrrrabbxyyyypqAzz
aaabxyzzzzpqrrrabbxyyyypqAzz
0: aaabxyzzzzpqrrrabbxyyyypqAzz
aaaabxyzzzzpqrrrabbxyyyypqAzz
0: aaaabxyzzzzpqrrrabbxyyyypqAzz
abcxyzzpqrrrabbxyyyypqAzz
0: abcxyzzpqrrrabbxyyyypqAzz
aabcxyzzzpqrrrabbxyyyypqAzz
0: aabcxyzzzpqrrrabbxyyyypqAzz
aaabcxyzzzzpqrrrabbxyyyypqAzz
0: aaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbxyyyypqAzz
0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyypqAzz
0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
aaabcxyzpqrrrabbxyyyypABzz
0: aaabcxyzpqrrrabbxyyyypABzz
aaabcxyzpqrrrabbxyyyypABBzz
0: aaabcxyzpqrrrabbxyyyypABBzz
>>>aaabxyzpqrrrabbxyyyypqAzz
0: aaabxyzpqrrrabbxyyyypqAzz
>aaaabxyzpqrrrabbxyyyypqAzz
0: aaaabxyzpqrrrabbxyyyypqAzz
>>>>abcxyzpqrrrabbxyyyypqAzz
0: abcxyzpqrrrabbxyyyypqAzz
*** Failers
No match
abxyzpqrrabbxyyyypqAzz
No match
abxyzpqrrrrabbxyyyypqAzz
No match
abxyzpqrrrabxyyyypqAzz
No match
aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
No match
aaaabcxyzzzzpqrrrabbbxyyypqAzz
No match
aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
No match
/^(abc){1,2}zz/
abczz
0: abczz
abcabczz
0: abcabczz
*** Failers
No match
zz
No match
abcabcabczz
No match
>>abczz
No match
/^(b+?|a){1,2}?c/
bc
0: bc
bbc
0: bbc
bbbc
0: bbbc
bac
0: bac
bbac
0: bbac
aac
0: aac
abbbbbbbbbbbc
0: abbbbbbbbbbbc
bbbbbbbbbbbac
0: bbbbbbbbbbbac
*** Failers
No match
aaac
No match
abbbbbbbbbbbac
No match
/^(b+|a){1,2}c/
bc
0: bc
bbc
0: bbc
bbbc
0: bbbc
bac
0: bac
bbac
0: bbac
aac
0: aac
abbbbbbbbbbbc
0: abbbbbbbbbbbc
bbbbbbbbbbbac
0: bbbbbbbbbbbac
*** Failers
No match
aaac
No match
abbbbbbbbbbbac
No match
/^(b+|a){1,2}?bc/
bbc
0: bbc
/^(b*|ba){1,2}?bc/
babc
0: babc
bbabc
0: bbabc
bababc
0: bababc
*** Failers
No match
bababbc
No match
babababc
No match
/^(ba|b*){1,2}?bc/
babc
0: babc
bbabc
0: bbabc
bababc
0: bababc
*** Failers
No match
bababbc
No match
babababc
No match
/^\ca\cA\c[\c{\c:/
\x01\x01\e;z
0: \x01\x01\x1b;z
/^[ab\]cde]/
athing
0: a
bthing
0: b
]thing
0: ]
cthing
0: c
dthing
0: d
ething
0: e
*** Failers
No match
fthing
No match
[thing
No match
\\thing
No match
/^[]cde]/
]thing
0: ]
cthing
0: c
dthing
0: d
ething
0: e
*** Failers
No match
athing
No match
fthing
No match
/^[^ab\]cde]/
fthing
0: f
[thing
0: [
\\thing
0: \
*** Failers
0: *
athing
No match
bthing
No match
]thing
No match
cthing
No match
dthing
No match
ething
No match
/^[^]cde]/
athing
0: a
fthing
0: f
*** Failers
0: *
]thing
No match
cthing
No match
dthing
No match
ething
No match
/^\/
0: \x81
/^ÿ/
ÿ
0: \xff
/^[0-9]+$/
0
0: 0
1
0: 1
2
0: 2
3
0: 3
4
0: 4
5
0: 5
6
0: 6
7
0: 7
8
0: 8
9
0: 9
10
0: 10
100
0: 100
*** Failers
No match
abc
No match
/^.*nter/
enter
0: enter
inter
0: inter
uponter
0: uponter
/^xxx[0-9]+$/
xxx0
0: xxx0
xxx1234
0: xxx1234
*** Failers
No match
xxx
No match
/^.+[0-9][0-9][0-9]$/
x123
0: x123
xx123
0: xx123
123456
0: 123456
*** Failers
No match
123
No match
x1234
0: x1234
/^.+?[0-9][0-9][0-9]$/
x123
0: x123
xx123
0: xx123
123456
0: 123456
*** Failers
No match
123
No match
x1234
0: x1234
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
abc!pqr=apquxz.ixr.zzz.ac.uk
0: abc!pqr=apquxz.ixr.zzz.ac.uk
*** Failers
No match
!pqr=apquxz.ixr.zzz.ac.uk
No match
abc!=apquxz.ixr.zzz.ac.uk
No match
abc!pqr=apquxz:ixr.zzz.ac.uk
No match
abc!pqr=apquxz.ixr.zzz.ac.ukk
No match
/:/
Well, we need a colon: somewhere
0: :
*** Fail if we don't
No match
/([\da-f:]+)$/i
0abc
0: 0abc
abc
0: abc
fed
0: fed
E
0: E
::
0: ::
5f03:12C0::932e
0: 5f03:12C0::932e
fed def
0: def
Any old stuff
0: ff
*** Failers
No match
0zzz
No match
gzzz
No match
fed\x20
No match
Any old rubbish
No match
/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
.1.2.3
0: .1.2.3
A.12.123.0
0: A.12.123.0
*** Failers
No match
.1.2.3333
No match
1.2.3
No match
1234.2.3
No match
/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
1 IN SOA non-sp1 non-sp2(
0: 1 IN SOA non-sp1 non-sp2(
1 IN SOA non-sp1 non-sp2 (
0: 1 IN SOA non-sp1 non-sp2 (
*** Failers
No match
1IN SOA non-sp1 non-sp2(
No match
/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
a.
0: a.
Z.
0: Z.
2.
0: 2.
ab-c.pq-r.
0: ab-c.pq-r.
sxk.zzz.ac.uk.
0: sxk.zzz.ac.uk.
x-.y-.
0: x-.y-.
*** Failers
No match
-abc.peq.
No match
/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
*.a
0: *.a
*.b0-a
0: *.b0-a
*.c3-b.c
0: *.c3-b.c
*.c-a.b-c
0: *.c-a.b-c
*** Failers
No match
*.0
No match
*.a-
No match
*.a-b.c-
No match
*.c-a.0-c
No match
/^(?=ab(de))(abd)(e)/
abde
0: abde
/^(?!(ab)de|x)(abd)(f)/
abdf
0: abdf
/^(?=(ab(cd)))(ab)/
abcd
0: ab
/^[\da-f](\.[\da-f])*$/i
a.b.c.d
0: a.b.c.d
A.B.C.D
0: A.B.C.D
a.b.c.1.2.3.C
0: a.b.c.1.2.3.C
/^\".*\"\s*(;.*)?$/
\"1234\"
0: "1234"
\"abcd\" ;
0: "abcd" ;
\"\" ; rhubarb
0: "" ; rhubarb
*** Failers
No match
\"1234\" : things
No match
/^$/
\
0:
*** Failers
No match
/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
ab c
0: ab c
*** Failers
No match
abc
No match
ab cde
No match
/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
ab c
0: ab c
*** Failers
No match
abc
No match
ab cde
No match
/^ a\ b[c ]d $/x
a bcd
0: a bcd
a b d
0: a b d
*** Failers
No match
abcd
No match
ab d
No match
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
abcdefhijklm
0: abcdefhijklm
/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
abcdefhijklm
0: abcdefhijklm
/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
a+ Z0+\x08\n\x1d\x12
0: a+ Z0+\x08\x0a\x1d\x12
/^[.^$|()*+?{,}]+/
.^\$(*+)|{?,?}
0: .^$(*+)|{?,?}
/^a*\w/
z
0: z
az
0: az
1: a
aaaz
0: aaaz
1: aaa
2: aa
3: a
a
0: a
aa
0: aa
1: a
aaaa
0: aaaa
1: aaa
2: aa
3: a
a+
0: a
aa+
0: aa
1: a
/^a*?\w/
z
0: z
az
0: az
1: a
aaaz
0: aaaz
1: aaa
2: aa
3: a
a
0: a
aa
0: aa
1: a
aaaa
0: aaaa
1: aaa
2: aa
3: a
a+
0: a
aa+
0: aa
1: a
/^a+\w/
az
0: az
aaaz
0: aaaz
1: aaa
2: aa
aa
0: aa
aaaa
0: aaaa
1: aaa
2: aa
aa+
0: aa
/^a+?\w/
az
0: az
aaaz
0: aaaz
1: aaa
2: aa
aa
0: aa
aaaa
0: aaaa
1: aaa
2: aa
aa+
0: aa
/^\d{8}\w{2,}/
1234567890
0: 1234567890
12345678ab
0: 12345678ab
12345678__
0: 12345678__
*** Failers
No match
1234567
No match
/^[aeiou\d]{4,5}$/
uoie
0: uoie
1234
0: 1234
12345
0: 12345
aaaaa
0: aaaaa
*** Failers
No match
123456
No match
/^[aeiou\d]{4,5}?/
uoie
0: uoie
1234
0: 1234
12345
0: 12345
1: 1234
aaaaa
0: aaaaa
1: aaaa
123456
0: 12345
1: 1234
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
From abcd Mon Sep 01 12:33:02 1997
0: From abcd Mon Sep 01 12:33
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
From abcd Mon Sep 01 12:33:02 1997
0: From abcd Mon Sep 01 12:33
From abcd Mon Sep 1 12:33:02 1997
0: From abcd Mon Sep 1 12:33
*** Failers
No match
From abcd Sep 01 12:33:02 1997
No match
/^12.34/s
12\n34
0: 12\x0a34
12\r34
0: 12\x0d34
/\w+(?=\t)/
the quick brown\t fox
0: brown
/foo(?!bar)(.*)/
foobar is foolish see?
0: foolish see?
/(?:(?!foo)...|^.{0,2})bar(.*)/
foobar crowbar etc
0: rowbar etc
barrel
0: barrel
2barrel
0: 2barrel
A barrel
0: A barrel
/^(\D*)(?=\d)(?!123)/
abc456
0: abc
*** Failers
No match
abc123
No match
/^1234(?# test newlines
inside)/
1234
0: 1234
/^1234 #comment in extended re
/x
1234
0: 1234
/#rhubarb
abcd/x
abcd
0: abcd
/^abcd#rhubarb/x
abcd
0: abcd
/(?!^)abc/
the abc
0: abc
*** Failers
No match
abc
No match
/(?=^)abc/
abc
0: abc
*** Failers
No match
the abc
No match
/^[ab]{1,3}(ab*|b)/O
aabbbbb
0: aabbbbb
1: aabbbb
2: aabbb
3: aabb
4: aab
5: aa
/^[ab]{1,3}?(ab*|b)/O
aabbbbb
0: aabbbbb
1: aabbbb
2: aabbb
3: aabb
4: aab
5: aa
/^[ab]{1,3}?(ab*?|b)/O
aabbbbb
0: aabbbbb
1: aabbbb
2: aabbb
3: aabb
4: aab
5: aa
/^[ab]{1,3}(ab*?|b)/O
aabbbbb
0: aabbbbb
1: aabbbb
2: aabbb
3: aabb
4: aab
5: aa
/ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional leading comment
(?: (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # one word, optionally followed by....
(?:
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
\(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) | # comments, or...
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
# quoted strings
)*
< (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # leading <
(?: @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* , (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
)* # further okay, if led by comma
: # closing colon
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* )? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) # initial word
(?: (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
" (?: # opening quote...
[^\\\x80-\xff\n\015"] # Anything except backslash and quote
| # or
\\ [^\x80-\xff] # Escaped something (something != CR)
)* " # closing quote
) )* # further okay, if led by a period
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* @ (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # initial subdomain
(?: #
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* \. # if led by a period...
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* (?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
| \[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
) # ...further okay
)*
# address spec
(?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* > # trailing >
# name and address
) (?: [\040\t] | \(
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
\) )* # optional trailing comment
/x
Alan Other <user\@dom.ain>
0: Alan Other <user@dom.ain>
<user\@dom.ain>
0: user@dom.ain
1: user@dom
user\@dom.ain
0: user@dom.ain
1: user@dom
\"A. Other\" <user.1234\@dom.ain> (a comment)
0: "A. Other" <user.1234@dom.ain> (a comment)
1: "A. Other" <user.1234@dom.ain>
2: "A. Other" <user.1234@dom.ain>
A. Other <user.1234\@dom.ain> (a comment)
0: Other <user.1234@dom.ain> (a comment)
1: Other <user.1234@dom.ain>
2: Other <user.1234@dom.ain>
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
A missing angle <user\@some.where
0: user@some.where
1: user@some
*** Failers
No match
The quick brown fox
No match
/[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional leading comment
(?:
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address
| # or
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
# leading word
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
(?:
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
|
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
) # "special" comment or quoted string
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
)*
<
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# <
(?:
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
(?: ,
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
)* # additional domains
:
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)? # optional route
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
# Atom
| # or
" # "
[^\\\x80-\xff\n\015"] * # normal
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
" # "
# Quoted string
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# additional words
)*
@
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
(?:
\.
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
(?:
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
|
\[ # [
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
\] # ]
)
[\040\t]* # Nab whitespace.
(?:
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: # (
(?: \\ [^\x80-\xff] |
\( # (
[^\\\x80-\xff\n\015()] * # normal*
(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
\) # )
) # special
[^\\\x80-\xff\n\015()] * # normal*
)* # )*
\) # )
[\040\t]* )* # If comment found, allow more spaces.
# optional trailing comments
)*
# address spec
> # >
# name and address
)
/x
Alan Other <user\@dom.ain>
0: Alan Other <user@dom.ain>
<user\@dom.ain>
0: user@dom.ain
1: user@dom
user\@dom.ain
0: user@dom.ain
1: user@dom
\"A. Other\" <user.1234\@dom.ain> (a comment)
0: "A. Other" <user.1234@dom.ain>
A. Other <user.1234\@dom.ain> (a comment)
0: Other <user.1234@dom.ain>
\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
A missing angle <user\@some.where
0: user@some.where
1: user@some
*** Failers
No match
The quick brown fox
No match
/abc\0def\00pqr\000xyz\0000AB/
abc\0def\00pqr\000xyz\0000AB
0: abc\x00def\x00pqr\x00xyz\x000AB
abc456 abc\0def\00pqr\000xyz\0000ABCDE
0: abc\x00def\x00pqr\x00xyz\x000AB
/abc\x0def\x00pqr\x000xyz\x0000AB/
abc\x0def\x00pqr\x000xyz\x0000AB
0: abc\x0def\x00pqr\x000xyz\x0000AB
abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
0: abc\x0def\x00pqr\x000xyz\x0000AB
/^[\000-\037]/
\0A
0: \x00
\01B
0: \x01
\037C
0: \x1f
/\0*/
\0\0\0\0
0: \x00\x00\x00\x00
/A\x0{2,3}Z/
The A\x0\x0Z
0: A\x00\x00Z
An A\0\x0\0Z
0: A\x00\x00\x00Z
*** Failers
No match
A\0Z
No match
A\0\x0\0\x0Z
No match
/^\s/
\040abc
0:
\x0cabc
0: \x0c
\nabc
0: \x0a
\rabc
0: \x0d
\tabc
0: \x09
*** Failers
No match
abc
No match
/^a b
c/x
abc
0: abc
/ab{1,3}bc/
abbbbc
0: abbbbc
abbbc
0: abbbc
abbc
0: abbc
*** Failers
No match
abc
No match
abbbbbc
No match
/([^.]*)\.([^:]*):[T ]+(.*)/
track1.title:TBlah blah blah
0: track1.title:TBlah blah blah
/([^.]*)\.([^:]*):[T ]+(.*)/i
track1.title:TBlah blah blah
0: track1.title:TBlah blah blah
/([^.]*)\.([^:]*):[t ]+(.*)/i
track1.title:TBlah blah blah
0: track1.title:TBlah blah blah
/^[W-c]+$/
WXY_^abc
0: WXY_^abc
*** Failers
No match
wxy
No match
/^[W-c]+$/i
WXY_^abc
0: WXY_^abc
wxy_^ABC
0: wxy_^ABC
/^[\x3f-\x5F]+$/i
WXY_^abc
0: WXY_^abc
wxy_^ABC
0: wxy_^ABC
/^abc$/m
abc
0: abc
qqq\nabc
0: abc
abc\nzzz
0: abc
qqq\nabc\nzzz
0: abc
/^abc$/
abc
0: abc
*** Failers
No match
qqq\nabc
No match
abc\nzzz
No match
qqq\nabc\nzzz
No match
/\Aabc\Z/m
abc
0: abc
abc\n
0: abc
*** Failers
No match
qqq\nabc
No match
abc\nzzz
No match
qqq\nabc\nzzz
No match
/\A(.)*\Z/s
abc\ndef
0: abc\x0adef
/\A(.)*\Z/m
*** Failers
0: *** Failers
abc\ndef
No match
/(?:b)|(?::+)/
b::c
0: b
c::b
0: ::
/[-az]+/
az-
0: az-
*** Failers
0: a
b
No match
/[az-]+/
za-
0: za-
*** Failers
0: a
b
No match
/[a\-z]+/
a-z
0: a-z
*** Failers
0: a
b
No match
/[a-z]+/
abcdxyz
0: abcdxyz
/[\d-]+/
12-34
0: 12-34
*** Failers
No match
aaa
No match
/[\d-z]+/
12-34z
0: 12-34z
*** Failers
No match
aaa
No match
/\x5c/
\\
0: \
/\x20Z/
the Zoo
0: Z
*** Failers
No match
Zulu
No match
/ab{3cd/
ab{3cd
0: ab{3cd
/ab{3,cd/
ab{3,cd
0: ab{3,cd
/ab{3,4a}cd/
ab{3,4a}cd
0: ab{3,4a}cd
/{4,5a}bc/
{4,5a}bc
0: {4,5a}bc
/^a.b/<lf>
a\rb
0: a\x0db
*** Failers
No match
a\nb
No match
/abc$/
abc
0: abc
abc\n
0: abc
*** Failers
No match
abc\ndef
No match
/(abc)\123/
abc\x53
0: abcS
/(abc)\223/
abc\x93
0: abc\x93
/(abc)\323/
abc\xd3
0: abc\xd3
/(abc)\100/
abc\x40
0: abc@
abc\100
0: abc@
/(abc)\1000/
abc\x400
0: abc@0
abc\x40\x30
0: abc@0
abc\1000
0: abc@0
abc\100\x30
0: abc@0
abc\100\060
0: abc@0
abc\100\60
0: abc@0
/^A\8B\9C$/
A8B9C
0: A8B9C
*** Failers
No match
A\08B\09C
No match
/^[A\8B\9C]+$/
A8B9C
0: A8B9C
*** Failers
No match
A8B9C\x00
No match
/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
abcdefghijk\12S
0: abcdefghijk\x0aS
/ab\idef/
abidef
0: abidef
/a{0}bc/
bc
0: bc
/(a|(bc)){0,0}?xyz/
xyz
0: xyz
/abc[\10]de/
abc\010de
0: abc\x08de
/abc[\1]de/
abc\1de
0: abc\x01de
/(abc)[\1]de/
abc\1de
0: abc\x01de
/(?s)a.b/
a\nb
0: a\x0ab
/^([^a])([^\b])([^c]*)([^d]{3,4})/
baNOTccccd
0: baNOTcccc
1: baNOTccc
2: baNOTcc
3: baNOTc
baNOTcccd
0: baNOTccc
1: baNOTcc
2: baNOTc
baNOTccd
0: baNOTcc
1: baNOTc
bacccd
0: baccc
*** Failers
0: *** Failers
1: *** Failer
2: *** Faile
3: *** Fail
4: *** Fai
5: *** Fa
anything
No match
b\bc
No match
baccd
No match
/[^a]/
Abc
0: A
/[^a]/i
Abc
0: b
/[^a]+/
AAAaAbc
0: AAA
/[^a]+/i
AAAaAbc
0: bc
/[^a]+/
bbb\nccc
0: bbb\x0accc
/[^k]$/
abc
0: c
*** Failers
0: s
abk
No match
/[^k]{2,3}$/
abc
0: abc
kbc
0: bc
kabc
0: abc
*** Failers
0: ers
abk
No match
akb
No match
akk
No match
/^\d{8,}\@.+[^k]$/
12345678\@a.b.c.d
0: 12345678@a.b.c.d
123456789\@x.y.z
0: 123456789@x.y.z
*** Failers
No match
12345678\@x.y.uk
No match
1234567\@a.b.c.d
No match
/[^a]/
aaaabcd
0: b
aaAabcd
0: A
/[^a]/i
aaaabcd
0: b
aaAabcd
0: b
/[^az]/
aaaabcd
0: b
aaAabcd
0: A
/[^az]/i
aaaabcd
0: b
aaAabcd
0: b
/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
/P[^*]TAIRE[^*]{1,6}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
0: PSTAIREISLL
/P[^*]TAIRE[^*]{1,}?LL/
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
0: PSTAIREISLL
/(\.\d\d[1-9]?)\d+/
1.230003938
0: .230003938
1.875000282
0: .875000282
1.235
0: .235
/(\.\d\d((?=0)|\d(?=\d)))/
1.230003938
0: .230
1: .23
1.875000282
0: .875
*** Failers
No match
1.235
No match
/a(?)b/
ab
0: ab
/\b(foo)\s+(\w+)/i
Food is on the foo table
0: foo table
/foo(.*)bar/
The food is under the bar in the barn.
0: food is under the bar in the bar
1: food is under the bar
/foo(.*?)bar/
The food is under the bar in the barn.
0: food is under the bar in the bar
1: food is under the bar
/(.*)(\d*)/O
I have 2 numbers: 53147
Matched, but offsets vector is too small to show all matches
0: I have 2 numbers: 53147
1: I have 2 numbers: 5314
2: I have 2 numbers: 531
3: I have 2 numbers: 53
4: I have 2 numbers: 5
5: I have 2 numbers:
6: I have 2 numbers:
7: I have 2 numbers
8: I have 2 number
9: I have 2 numbe
10: I have 2 numb
11: I have 2 num
12: I have 2 nu
13: I have 2 n
14: I have 2
15: I have 2
16: I have
17: I have
18: I hav
19: I ha
20: I h
21: I
/(.*)(\d+)/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2
/(.*?)(\d*)/O
I have 2 numbers: 53147
Matched, but offsets vector is too small to show all matches
0: I have 2 numbers: 53147
1: I have 2 numbers: 5314
2: I have 2 numbers: 531
3: I have 2 numbers: 53
4: I have 2 numbers: 5
5: I have 2 numbers:
6: I have 2 numbers:
7: I have 2 numbers
8: I have 2 number
9: I have 2 numbe
10: I have 2 numb
11: I have 2 num
12: I have 2 nu
13: I have 2 n
14: I have 2
15: I have 2
16: I have
17: I have
18: I hav
19: I ha
20: I h
21: I
/(.*?)(\d+)/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
1: I have 2
/(.*)(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
/(.*?)(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
/(.*)\b(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
/(.*\D)(\d+)$/
I have 2 numbers: 53147
0: I have 2 numbers: 53147
/^\D*(?!123)/
ABC123
0: AB
1: A
2:
/^(\D*)(?=\d)(?!123)/
ABC445
0: ABC
*** Failers
No match
ABC123
No match
/^[W-]46]/
W46]789
0: W46]
-46]789
0: -46]
*** Failers
No match
Wall
No match
Zebra
No match
42
No match
[abcd]
No match
]abcd[
No match
/^[W-\]46]/
W46]789
0: W
Wall
0: W
Zebra
0: Z
Xylophone
0: X
42
0: 4
[abcd]
0: [
]abcd[
0: ]
\\backslash
0: \
*** Failers
No match
-46]789
No match
well
No match
/\d\d\/\d\d\/\d\d\d\d/
01/01/2000
0: 01/01/2000
/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
No match
/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
No match
/^(a){0,0}/
bcd
0:
abc
0:
aab
0:
/^(a){0,1}/
bcd
0:
abc
0: a
1:
aab
0: a
1:
/^(a){0,2}/
bcd
0:
abc
0: a
1:
aab
0: aa
1: a
2:
/^(a){0,3}/
bcd
0:
abc
0: a
1:
aab
0: aa
1: a
2:
aaa
0: aaa
1: aa
2: a
3:
/^(a){0,}/
bcd
0:
abc
0: a
1:
aab
0: aa
1: a
2:
aaa
0: aaa
1: aa
2: a
3:
aaaaaaaa
0: aaaaaaaa
1: aaaaaaa
2: aaaaaa
3: aaaaa
4: aaaa
5: aaa
6: aa
7: a
8:
/^(a){1,1}/
bcd
No match
abc
0: a
aab
0: a
/^(a){1,2}/
bcd
No match
abc
0: a
aab
0: aa
1: a
/^(a){1,3}/
bcd
No match
abc
0: a
aab
0: aa
1: a
aaa
0: aaa
1: aa
2: a
/^(a){1,}/
bcd
No match
abc
0: a
aab
0: aa
1: a
aaa
0: aaa
1: aa
2: a
aaaaaaaa
0: aaaaaaaa
1: aaaaaaa
2: aaaaaa
3: aaaaa
4: aaaa
5: aaa
6: aa
7: a
/.*\.gif/
borfle\nbib.gif\nno
0: bib.gif
/.{0,}\.gif/
borfle\nbib.gif\nno
0: bib.gif
/.*\.gif/m
borfle\nbib.gif\nno
0: bib.gif
/.*\.gif/s
borfle\nbib.gif\nno
0: borfle\x0abib.gif
/.*\.gif/ms
borfle\nbib.gif\nno
0: borfle\x0abib.gif
/.*$/
borfle\nbib.gif\nno
0: no
/.*$/m
borfle\nbib.gif\nno
0: borfle
/.*$/s
borfle\nbib.gif\nno
0: borfle\x0abib.gif\x0ano
/.*$/ms
borfle\nbib.gif\nno
0: borfle\x0abib.gif\x0ano
1: borfle\x0abib.gif
2: borfle
/.*$/
borfle\nbib.gif\nno\n
0: no
/.*$/m
borfle\nbib.gif\nno\n
0: borfle
/.*$/s
borfle\nbib.gif\nno\n
0: borfle\x0abib.gif\x0ano\x0a
1: borfle\x0abib.gif\x0ano
/.*$/ms
borfle\nbib.gif\nno\n
0: borfle\x0abib.gif\x0ano\x0a
1: borfle\x0abib.gif\x0ano
2: borfle\x0abib.gif
3: borfle
/(.*X|^B)/
abcde\n1234Xyz
0: 1234X
BarFoo
0: B
*** Failers
No match
abcde\nBar
No match
/(.*X|^B)/m
abcde\n1234Xyz
0: 1234X
BarFoo
0: B
abcde\nBar
0: B
/(.*X|^B)/s
abcde\n1234Xyz
0: abcde\x0a1234X
BarFoo
0: B
*** Failers
No match
abcde\nBar
No match
/(.*X|^B)/ms
abcde\n1234Xyz
0: abcde\x0a1234X
BarFoo
0: B
abcde\nBar
0: B
/(?s)(.*X|^B)/
abcde\n1234Xyz
0: abcde\x0a1234X
BarFoo
0: B
*** Failers
No match
abcde\nBar
No match
/(?s:.*X|^B)/
abcde\n1234Xyz
0: abcde\x0a1234X
BarFoo
0: B
*** Failers
No match
abcde\nBar
No match
/^.*B/
**** Failers
No match
abc\nB
No match
/(?s)^.*B/
abc\nB
0: abc\x0aB
/(?m)^.*B/
abc\nB
0: B
/(?ms)^.*B/
abc\nB
0: abc\x0aB
/(?ms)^B/
abc\nB
0: B
/(?s)B$/
B\n
0: B
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
123456654321
0: 123456654321
/^\d\d\d\d\d\d\d\d\d\d\d\d/
123456654321
0: 123456654321
/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
123456654321
0: 123456654321
/^[abc]{12}/
abcabcabcabc
0: abcabcabcabc
/^[a-c]{12}/
abcabcabcabc
0: abcabcabcabc
/^(a|b|c){12}/
abcabcabcabc
0: abcabcabcabc
/^[abcdefghijklmnopqrstuvwxy0123456789]/
n
0: n
*** Failers
No match
z
No match
/abcde{0,0}/
abcd
0: abcd
*** Failers
No match
abce
No match
/ab[cd]{0,0}e/
abe
0: abe
*** Failers
No match
abcde
No match
/ab(c){0,0}d/
abd
0: abd
*** Failers
No match
abcd
No match
/a(b*)/
a
0: a
ab
0: ab
abbbb
0: abbbb
*** Failers
0: a
bbbbb
No match
/ab\d{0}e/
abe
0: abe
*** Failers
No match
ab1e
No match
/"([^\\"]+|\\.)*"/
the \"quick\" brown fox
0: "quick"
\"the \\\"quick\\\" brown fox\"
0: "the \"quick\" brown fox"
/.*?/g+
abc
0: abc
0+
1: ab
2: a
3:
0:
0+
/\b/g+
abc
0:
0+ abc
0:
0+
/\b/+g
abc
0:
0+ abc
0:
0+
//g
abc
0:
0:
0:
0:
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
/a[^a]b/
acb
0: acb
a\nb
0: a\x0ab
/a.b/
acb
0: acb
*** Failers
No match
a\nb
No match
/a[^a]b/s
acb
0: acb
a\nb
0: a\x0ab
/a.b/s
acb
0: acb
a\nb
0: a\x0ab
/^(b+?|a){1,2}?c/
bac
0: bac
bbac
0: bbac
bbbac
0: bbbac
bbbbac
0: bbbbac
bbbbbac
0: bbbbbac
/^(b+|a){1,2}?c/
bac
0: bac
bbac
0: bbac
bbbac
0: bbbac
bbbbac
0: bbbbac
bbbbbac
0: bbbbbac
/(?!\A)x/m
x\nb\n
No match
a\bx\n
0: x
/\x0{ab}/
\0{ab}
0: \x00{ab}
/(A|B)*?CD/
CD
0: CD
/(A|B)*CD/
CD
0: CD
/(?<!bar)foo/
foo
0: foo
catfood
0: foo
arfootle
0: foo
rfoosh
0: foo
*** Failers
No match
barfoo
No match
towbarfoo
No match
/\w{3}(?<!bar)foo/
catfood
0: catfoo
*** Failers
No match
foo
No match
barfoo
No match
towbarfoo
No match
/(?<=(foo)a)bar/
fooabar
0: bar
*** Failers
No match
bar
No match
foobbar
No match
/\Aabc\z/m
abc
0: abc
*** Failers
No match
abc\n
No match
qqq\nabc
No match
abc\nzzz
No match
qqq\nabc\nzzz
No match
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
No match
"(?>.*/)foo"
/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
/(?>(\.\d\d[1-9]?))\d+/
1.230003938
0: .230003938
1.875000282
0: .875000282
*** Failers
No match
1.235
No match
/^((?>\w+)|(?>\s+))*$/
now is the time for all good men to come to the aid of the party
0: now is the time for all good men to come to the aid of the party
*** Failers
No match
this is not a line with only words and spaces!
No match
/(\d+)(\w)/
12345a
0: 12345a
1: 12345
2: 1234
3: 123
4: 12
12345+
0: 12345
1: 1234
2: 123
3: 12
/((?>\d+))(\w)/
12345a
0: 12345a
*** Failers
No match
12345+
No match
/(?>a+)b/
aaab
0: aaab
/((?>a+)b)/
aaab
0: aaab
/(?>(a+))b/
aaab
0: aaab
/(?>b)+/
aaabbbccc
0: bbb
1: bb
2: b
/(?>a+|b+|c+)*c/
aaabbbbccccd
0: aaabbbbcccc
1: aaabbbbc
/(a+|b+|c+)*c/
aaabbbbccccd
0: aaabbbbcccc
1: aaabbbbccc
2: aaabbbbcc
3: aaabbbbc
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
0: abc(ade)ufh()()x
1: abc(ade)ufh()()
2: abc(ade)ufh()
3: abc(ade)ufh
4: abc(ade)
5: abc
/\(((?>[^()]+)|\([^()]+\))+\)/
(abc)
0: (abc)
(abc(def)xyz)
0: (abc(def)xyz)
*** Failers
No match
((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
/a(?-i)b/i
ab
0: ab
Ab
0: Ab
*** Failers
No match
aB
No match
AB
No match
/(a (?x)b c)d e/
a bcd e
0: a bcd e
*** Failers
No match
a b cd e
No match
abcd e
No match
a bcde
No match
/(a b(?x)c d (?-x)e f)/
a bcde f
0: a bcde f
*** Failers
No match
abcdef
No match
/(a(?i)b)c/
abc
0: abc
aBc
0: aBc
*** Failers
No match
abC
No match
aBC
No match
Abc
No match
ABc
No match
ABC
No match
AbC
No match
/a(?i:b)c/
abc
0: abc
aBc
0: aBc
*** Failers
No match
ABC
No match
abC
No match
aBC
No match
/a(?i:b)*c/
aBc
0: aBc
aBBc
0: aBBc
*** Failers
No match
aBC
No match
aBBC
No match
/a(?=b(?i)c)\w\wd/
abcd
0: abcd
abCd
0: abCd
*** Failers
No match
aBCd
No match
abcD
No match
/(?s-i:more.*than).*million/i
more than million
0: more than million
more than MILLION
0: more than MILLION
more \n than Million
0: more \x0a than Million
*** Failers
No match
MORE THAN MILLION
No match
more \n than \n million
No match
/(?:(?s-i)more.*than).*million/i
more than million
0: more than million
more than MILLION
0: more than MILLION
more \n than Million
0: more \x0a than Million
*** Failers
No match
MORE THAN MILLION
No match
more \n than \n million
No match
/(?>a(?i)b+)+c/
abc
0: abc
aBbc
0: aBbc
aBBc
0: aBBc
*** Failers
No match
Abc
No match
abAb
No match
abbC
No match
/(?=a(?i)b)\w\wc/
abc
0: abc
aBc
0: aBc
*** Failers
No match
Ab
No match
abC
No match
aBC
No match
/(?<=a(?i)b)(\w\w)c/
abxxc
0: xxc
aBxxc
0: xxc
*** Failers
No match
Abxxc
No match
ABxxc
No match
abxxC
No match
/^(?(?=abc)\w{3}:|\d\d)$/
abc:
0: abc:
12
0: 12
*** Failers
No match
123
No match
xyz
No match
/^(?(?!abc)\d\d|\w{3}:)$/
abc:
0: abc:
12
0: 12
*** Failers
No match
123
No match
xyz
No match
/(?(?<=foo)bar|cat)/
foobar
0: bar
cat
0: cat
fcat
0: cat
focat
0: cat
*** Failers
No match
foocat
No match
/(?(?<!foo)cat|bar)/
foobar
0: bar
cat
0: cat
fcat
0: cat
focat
0: cat
*** Failers
No match
foocat
No match
/(?>a*)*/
a
0: a
1:
aa
0: aa
1:
aaaa
0: aaaa
1:
/(abc|)+/
abc
0: abc
1:
abcabc
0: abcabc
1: abc
2:
abcabcabc
0: abcabcabc
1: abcabc
2: abc
3:
xyz
0:
/([a]*)*/
a
0: a
1:
aaaaa
0: aaaaa
1: aaaa
2: aaa
3: aa
4: a
5:
/([ab]*)*/
a
0: a
1:
b
0: b
1:
ababab
0: ababab
1: ababa
2: abab
3: aba
4: ab
5: a
6:
aaaabcde
0: aaaab
1: aaaa
2: aaa
3: aa
4: a
5:
bbbb
0: bbbb
1: bbb
2: bb
3: b
4:
/([^a]*)*/
b
0: b
1:
bbbb
0: bbbb
1: bbb
2: bb
3: b
4:
aaa
0:
/([^ab]*)*/
cccc
0: cccc
1: ccc
2: cc
3: c
4:
abab
0:
/([a]*?)*/
a
0: a
1:
aaaa
0: aaaa
1: aaa
2: aa
3: a
4:
/([ab]*?)*/
a
0: a
1:
b
0: b
1:
abab
0: abab
1: aba
2: ab
3: a
4:
baba
0: baba
1: bab
2: ba
3: b
4:
/([^a]*?)*/
b
0: b
1:
bbbb
0: bbbb
1: bbb
2: bb
3: b
4:
aaa
0:
/([^ab]*?)*/
c
0: c
1:
cccc
0: cccc
1: ccc
2: cc
3: c
4:
baba
0:
/(?>a*)*/
a
0: a
1:
aaabcde
0: aaa
1:
/((?>a*))*/
aaaaa
0: aaaaa
1:
aabbaa
0: aa
1:
/((?>a*?))*/
aaaaa
0: aaaaa
1:
aabbaa
0: aa
1:
/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
12-sep-98
0: 12-sep-98
12-09-98
0: 12-09-98
*** Failers
No match
sep-12-98
No match
/(?i:saturday|sunday)/
saturday
0: saturday
sunday
0: sunday
Saturday
0: Saturday
Sunday
0: Sunday
SATURDAY
0: SATURDAY
SUNDAY
0: SUNDAY
SunDay
0: SunDay
/(a(?i)bc|BB)x/
abcx
0: abcx
aBCx
0: aBCx
bbx
0: bbx
BBx
0: BBx
*** Failers
No match
abcX
No match
aBCX
No match
bbX
No match
BBX
No match
/^([ab](?i)[cd]|[ef])/
ac
0: ac
aC
0: aC
bD
0: bD
elephant
0: e
Europe
0: E
frog
0: f
France
0: F
*** Failers
No match
Africa
No match
/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
ab
0: ab
aBd
0: aBd
xy
0: xy
xY
0: xY
zebra
0: z
Zambesi
0: Z
*** Failers
No match
aCD
No match
XY
No match
/(?<=foo\n)^bar/m
foo\nbar
0: bar
*** Failers
No match
bar
No match
baz\nbar
No match
/(?<=(?<!foo)bar)baz/
barbaz
0: baz
barbarbaz
0: baz
koobarbaz
0: baz
*** Failers
No match
baz
No match
foobarbaz
No match
/The following tests are taken from the Perl 5.005 test suite; some of them/
/are compatible with 5.004, but I'd rather not have to sort them out./
No match
/abc/
abc
0: abc
xabcy
0: abc
ababc
0: abc
*** Failers
No match
xbc
No match
axc
No match
abx
No match
/ab*c/
abc
0: abc
/ab*bc/
abc
0: abc
abbc
0: abbc
abbbbc
0: abbbbc
/.{1}/
abbbbc
0: a
/.{3,4}/
abbbbc
0: abbb
/ab{0,}bc/
abbbbc
0: abbbbc
/ab+bc/
abbc
0: abbc
*** Failers
No match
abc
No match
abq
No match
/ab+bc/
abbbbc
0: abbbbc
/ab{1,}bc/
abbbbc
0: abbbbc
/ab{1,3}bc/
abbbbc
0: abbbbc
/ab{3,4}bc/
abbbbc
0: abbbbc
/ab{4,5}bc/
*** Failers
No match
abq
No match
abbbbc
No match
/ab?bc/
abbc
0: abbc
abc
0: abc
/ab{0,1}bc/
abc
0: abc
/ab?bc/
/ab?c/
abc
0: abc
/ab{0,1}c/
abc
0: abc
/^abc$/
abc
0: abc
*** Failers
No match
abbbbc
No match
abcc
No match
/^abc/
abcc
0: abc
/^abc$/
/abc$/
aabc
0: abc
*** Failers
No match
aabc
0: abc
aabcd
No match
/^/
abc
0:
/$/
abc
0:
/a.c/
abc
0: abc
axc
0: axc
/a.*c/
axyzc
0: axyzc
/a[bc]d/
abd
0: abd
*** Failers
No match
axyzd
No match
abc
No match
/a[b-d]e/
ace
0: ace
/a[b-d]/
aac
0: ac
/a[-b]/
a-
0: a-
/a[b-]/
a-
0: a-
/a]/
a]
0: a]
/a[]]b/
a]b
0: a]b
/a[^bc]d/
aed
0: aed
*** Failers
No match
abd
No match
abd
No match
/a[^-b]c/
adc
0: adc
/a[^]b]c/
adc
0: adc
*** Failers
No match
a-c
0: a-c
a]c
No match
/\ba\b/
a-
0: a
-a
0: a
-a-
0: a
/\by\b/
*** Failers
No match
xy
No match
yz
No match
xyz
No match
/\Ba\B/
*** Failers
0: a
a-
No match
-a
No match
-a-
No match
/\By\b/
xy
0: y
/\by\B/
yz
0: y
/\By\B/
xyz
0: y
/\w/
a
0: a
/\W/
-
0: -
*** Failers
0: *
-
0: -
a
No match
/a\sb/
a b
0: a b
/a\Sb/
a-b
0: a-b
*** Failers
No match
a-b
0: a-b
a b
No match
/\d/
1
0: 1
/\D/
-
0: -
*** Failers
0: *
-
0: -
1
No match
/[\w]/
a
0: a
/[\W]/
-
0: -
*** Failers
0: *
-
0: -
a
No match
/a[\s]b/
a b
0: a b
/a[\S]b/
a-b
0: a-b
*** Failers
No match
a-b
0: a-b
a b
No match
/[\d]/
1
0: 1
/[\D]/
-
0: -
*** Failers
0: *
-
0: -
1
No match
/ab|cd/
abc
0: ab
abcd
0: ab
/()ef/
def
0: ef
/$b/
/a\(b/
a(b
0: a(b
/a\(*b/
ab
0: ab
a((b
0: a((b
/a\\b/
a\b
No match
/((a))/
abc
0: a
/(a)b(c)/
abc
0: abc
/a+b+c/
aabbabc
0: abc
/a{1,}b{1,}c/
aabbabc
0: abc
/a.+?c/
abcabc
0: abcabc
1: abc
/(a+|b)*/
ab
0: ab
1: a
2:
/(a+|b){0,}/
ab
0: ab
1: a
2:
/(a+|b)+/
ab
0: ab
1: a
/(a+|b){1,}/
ab
0: ab
1: a
/(a+|b)?/
ab
0: a
1:
/(a+|b){0,1}/
ab
0: a
1:
/[^ab]*/
cde
0: cde
/abc/
*** Failers
No match
b
No match
/a*/
/([abc])*d/
abbbcd
0: abbbcd
/([abc])*bcd/
abcd
0: abcd
/a|b|c|d|e/
e
0: e
/(a|b|c|d|e)f/
ef
0: ef
/abcd*efg/
abcdefg
0: abcdefg
/ab*/
xabyabbbz
0: ab
xayabbbz
0: a
/(ab|cd)e/
abcde
0: cde
/[abhgefdc]ij/
hij
0: hij
/^(ab|cd)e/
/(abc|)ef/
abcdef
0: ef
/(a|b)c*d/
abcd
0: bcd
/(ab|ab*)bc/
abc
0: abc
/a([bc]*)c*/
abc
0: abc
1: a
/a([bc]*)(c*d)/
abcd
0: abcd
/a([bc]+)(c*d)/
abcd
0: abcd
/a([bc]*)(c+d)/
abcd
0: abcd
/a[bcd]*dcdcde/
adcdcde
0: adcdcde
/a[bcd]+dcdcde/
*** Failers
No match
abcde
No match
adcdcde
No match
/(ab|a)b*c/
abc
0: abc
/((a)(b)c)(d)/
abcd
0: abcd
/[a-zA-Z_][a-zA-Z0-9_]*/
alpha
0: alpha
/^a(bc+|b[eh])g|.h$/
abh
0: bh
/(bc+d$|ef*g.|h?i(j|k))/
effgz
0: effgz
ij
0: ij
reffgz
0: effgz
*** Failers
No match
effg
No match
bcdd
No match
/((((((((((a))))))))))/
a
0: a
/(((((((((a)))))))))/
a
0: a
/multiple words of text/
*** Failers
No match
aa
No match
uh-uh
No match
/multiple words/
multiple words, yeah
0: multiple words
/(.*)c(.*)/
abcde
0: abcde
/\((.*), (.*)\)/
(a, b)
0: (a, b)
/[k]/
/abcd/
abcd
0: abcd
/a(bc)d/
abcd
0: abcd
/a[-]?c/
ac
0: ac
/abc/i
ABC
0: ABC
XABCY
0: ABC
ABABC
0: ABC
*** Failers
No match
aaxabxbaxbbx
No match
XBC
No match
AXC
No match
ABX
No match
/ab*c/i
ABC
0: ABC
/ab*bc/i
ABC
0: ABC
ABBC
0: ABBC
/ab*?bc/i
ABBBBC
0: ABBBBC
/ab{0,}?bc/i
ABBBBC
0: ABBBBC
/ab+?bc/i
ABBC
0: ABBC
/ab+bc/i
*** Failers
No match
ABC
No match
ABQ
No match
/ab{1,}bc/i
/ab+bc/i
ABBBBC
0: ABBBBC
/ab{1,}?bc/i
ABBBBC
0: ABBBBC
/ab{1,3}?bc/i
ABBBBC
0: ABBBBC
/ab{3,4}?bc/i
ABBBBC
0: ABBBBC
/ab{4,5}?bc/i
*** Failers
No match
ABQ
No match
ABBBBC
No match
/ab??bc/i
ABBC
0: ABBC
ABC
0: ABC
/ab{0,1}?bc/i
ABC
0: ABC
/ab??bc/i
/ab??c/i
ABC
0: ABC
/ab{0,1}?c/i
ABC
0: ABC
/^abc$/i
ABC
0: ABC
*** Failers
No match
ABBBBC
No match
ABCC
No match
/^abc/i
ABCC
0: ABC
/^abc$/i
/abc$/i
AABC
0: ABC
/^/i
ABC
0:
/$/i
ABC
0:
/a.c/i
ABC
0: ABC
AXC
0: AXC
/a.*?c/i
AXYZC
0: AXYZC
/a.*c/i
*** Failers
No match
AABC
0: AABC
AXYZD
No match
/a[bc]d/i
ABD
0: ABD
/a[b-d]e/i
ACE
0: ACE
*** Failers
No match
ABC
No match
ABD
No match
/a[b-d]/i
AAC
0: AC
/a[-b]/i
A-
0: A-
/a[b-]/i
A-
0: A-
/a]/i
A]
0: A]
/a[]]b/i
A]B
0: A]B
/a[^bc]d/i
AED
0: AED
/a[^-b]c/i
ADC
0: ADC
*** Failers
No match
ABD
No match
A-C
No match
/a[^]b]c/i
ADC
0: ADC
/ab|cd/i
ABC
0: AB
ABCD
0: AB
/()ef/i
DEF
0: EF
/$b/i
*** Failers
No match
A]C
No match
B
No match
/a\(b/i
A(B
0: A(B
/a\(*b/i
AB
0: AB
A((B
0: A((B
/a\\b/i
A\B
No match
/((a))/i
ABC
0: A
/(a)b(c)/i
ABC
0: ABC
/a+b+c/i
AABBABC
0: ABC
/a{1,}b{1,}c/i
AABBABC
0: ABC
/a.+?c/i
ABCABC
0: ABCABC
1: ABC
/a.*?c/i
ABCABC
0: ABCABC
1: ABC
/a.{0,5}?c/i
ABCABC
0: ABCABC
1: ABC
/(a+|b)*/i
AB
0: AB
1: A
2:
/(a+|b){0,}/i
AB
0: AB
1: A
2:
/(a+|b)+/i
AB
0: AB
1: A
/(a+|b){1,}/i
AB
0: AB
1: A
/(a+|b)?/i
AB
0: A
1:
/(a+|b){0,1}/i
AB
0: A
1:
/(a+|b){0,1}?/i
AB
0: A
1:
/[^ab]*/i
CDE
0: CDE
/abc/i
/a*/i
/([abc])*d/i
ABBBCD
0: ABBBCD
/([abc])*bcd/i
ABCD
0: ABCD
/a|b|c|d|e/i
E
0: E
/(a|b|c|d|e)f/i
EF
0: EF
/abcd*efg/i
ABCDEFG
0: ABCDEFG
/ab*/i
XABYABBBZ
0: AB
XAYABBBZ
0: A
/(ab|cd)e/i
ABCDE
0: CDE
/[abhgefdc]ij/i
HIJ
0: HIJ
/^(ab|cd)e/i
ABCDE
No match
/(abc|)ef/i
ABCDEF
0: EF
/(a|b)c*d/i
ABCD
0: BCD
/(ab|ab*)bc/i
ABC
0: ABC
/a([bc]*)c*/i
ABC
0: ABC
1: A
/a([bc]*)(c*d)/i
ABCD
0: ABCD
/a([bc]+)(c*d)/i
ABCD
0: ABCD
/a([bc]*)(c+d)/i
ABCD
0: ABCD
/a[bcd]*dcdcde/i
ADCDCDE
0: ADCDCDE
/a[bcd]+dcdcde/i
/(ab|a)b*c/i
ABC
0: ABC
/((a)(b)c)(d)/i
ABCD
0: ABCD
/[a-zA-Z_][a-zA-Z0-9_]*/i
ALPHA
0: ALPHA
/^a(bc+|b[eh])g|.h$/i
ABH
0: BH
/(bc+d$|ef*g.|h?i(j|k))/i
EFFGZ
0: EFFGZ
IJ
0: IJ
REFFGZ
0: EFFGZ
*** Failers
No match
ADCDCDE
No match
EFFG
No match
BCDD
No match
/((((((((((a))))))))))/i
A
0: A
/(((((((((a)))))))))/i
A
0: A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
A
0: A
/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
C
0: C
/multiple words of text/i
*** Failers
No match
AA
No match
UH-UH
No match
/multiple words/i
MULTIPLE WORDS, YEAH
0: MULTIPLE WORDS
/(.*)c(.*)/i
ABCDE
0: ABCDE
/\((.*), (.*)\)/i
(A, B)
0: (A, B)
/[k]/i
/abcd/i
ABCD
0: ABCD
/a(bc)d/i
ABCD
0: ABCD
/a[-]?c/i
AC
0: AC
/a(?!b)./
abad
0: ad
/a(?=d)./
abad
0: ad
/a(?=c|d)./
abad
0: ad
/a(?:b|c|d)(.)/
ace
0: ace
/a(?:b|c|d)*(.)/
ace
0: ace
1: ac
/a(?:b|c|d)+?(.)/
ace
0: ace
acdbcdbe
0: acdbcdbe
1: acdbcdb
2: acdbcd
3: acdbc
4: acdb
5: acd
/a(?:b|c|d)+(.)/
acdbcdbe
0: acdbcdbe
1: acdbcdb
2: acdbcd
3: acdbc
4: acdb
5: acd
/a(?:b|c|d){2}(.)/
acdbcdbe
0: acdb
/a(?:b|c|d){4,5}(.)/
acdbcdbe
0: acdbcdb
1: acdbcd
/a(?:b|c|d){4,5}?(.)/
acdbcdbe
0: acdbcdb
1: acdbcd
/((foo)|(bar))*/
foobar
0: foobar
1: foo
2:
/a(?:b|c|d){6,7}(.)/
acdbcdbe
0: acdbcdbe
/a(?:b|c|d){6,7}?(.)/
acdbcdbe
0: acdbcdbe
/a(?:b|c|d){5,6}(.)/
acdbcdbe
0: acdbcdbe
1: acdbcdb
/a(?:b|c|d){5,6}?(.)/
acdbcdbe
0: acdbcdbe
1: acdbcdb
/a(?:b|c|d){5,7}(.)/
acdbcdbe
0: acdbcdbe
1: acdbcdb
/a(?:b|c|d){5,7}?(.)/
acdbcdbe
0: acdbcdbe
1: acdbcdb
/a(?:b|(c|e){1,2}?|d)+?(.)/
ace
0: ace
/^(.+)?B/
AB
0: AB
/^([^a-z])|(\^)$/
.
0: .
/^[<>]&/
<&OUT
0: <&
/(?:(f)(o)(o)|(b)(a)(r))*/
foobar
0: foobar
1: foo
2:
/(?<=a)b/
ab
0: b
*** Failers
No match
cb
No match
b
No match
/(?<!c)b/
ab
0: b
b
0: b
b
0: b
/(?:..)*a/
aba
0: aba
1: a
/(?:..)*?a/
aba
0: aba
1: a
/^(){3,5}/
abc
0:
/^(a+)*ax/
aax
0: aax
/^((a|b)+)*ax/
aax
0: aax
/^((a|bc)+)*ax/
aax
0: aax
/(a|x)*ab/
cab
0: ab
/(a)*ab/
cab
0: ab
/(?:(?i)a)b/
ab
0: ab
/((?i)a)b/
ab
0: ab
/(?:(?i)a)b/
Ab
0: Ab
/((?i)a)b/
Ab
0: Ab
/(?:(?i)a)b/
*** Failers
No match
cb
No match
aB
No match
/((?i)a)b/
/(?i:a)b/
ab
0: ab
/((?i:a))b/
ab
0: ab
/(?i:a)b/
Ab
0: Ab
/((?i:a))b/
Ab
0: Ab
/(?i:a)b/
*** Failers
No match
aB
No match
aB
No match
/((?i:a))b/
/(?:(?-i)a)b/i
ab
0: ab
/((?-i)a)b/i
ab
0: ab
/(?:(?-i)a)b/i
aB
0: aB
/((?-i)a)b/i
aB
0: aB
/(?:(?-i)a)b/i
*** Failers
No match
aB
0: aB
Ab
No match
/((?-i)a)b/i
/(?:(?-i)a)b/i
aB
0: aB
/((?-i)a)b/i
aB
0: aB
/(?:(?-i)a)b/i
*** Failers
No match
Ab
No match
AB
No match
/((?-i)a)b/i
/(?-i:a)b/i
ab
0: ab
/((?-i:a))b/i
ab
0: ab
/(?-i:a)b/i
aB
0: aB
/((?-i:a))b/i
aB
0: aB
/(?-i:a)b/i
*** Failers
No match
AB
No match
Ab
No match
/((?-i:a))b/i
/(?-i:a)b/i
aB
0: aB
/((?-i:a))b/i
aB
0: aB
/(?-i:a)b/i
*** Failers
No match
Ab
No match
AB
No match
/((?-i:a))b/i
/((?-i:a.))b/i
*** Failers
No match
AB
No match
a\nB
No match
/((?s-i:a.))b/i
a\nB
0: a\x0aB
/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
cabbbb
0: cabbbb
/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
/foo\w*\d{4}baz/
foobar1234baz
0: foobar1234baz
/x(~~)*(?:(?:F)?)?/
x~~
0: x~~
1: x
/^a(?#xxx){3}c/
aaac
0: aaac
/^a (?#xxx) (?#yyy) {3}c/x
aaac
0: aaac
/(?<![cd])b/
*** Failers
No match
B\nB
No match
dbcb
No match
/(?<![cd])[ab]/
dbaacb
0: a
/(?<!(c|d))b/
/(?<!(c|d))[ab]/
dbaacb
0: a
/(?<!cd)[ab]/
cdaccb
0: b
/^(?:a?b?)*$/
*** Failers
No match
dbcb
No match
a--
No match
/((?s)^a(.))((?m)^b$)/
a\nb\nc\n
0: a\x0ab
/((?m)^b$)/
a\nb\nc\n
0: b
/(?m)^b/
a\nb\n
0: b
/(?m)^(b)/
a\nb\n
0: b
/((?m)^b)/
a\nb\n
0: b
/\n((?m)^b)/
a\nb\n
0: \x0ab
/((?s).)c(?!.)/
a\nb\nc\n
0: \x0ac
a\nb\nc\n
0: \x0ac
/((?s)b.)c(?!.)/
a\nb\nc\n
0: b\x0ac
a\nb\nc\n
0: b\x0ac
/^b/
/()^b/
*** Failers
No match
a\nb\nc\n
No match
a\nb\nc\n
No match
/((?m)^b)/
a\nb\nc\n
0: b
/(?(?!a)a|b)/
/(?(?!a)b|a)/
a
0: a
/(?(?=a)b|a)/
*** Failers
No match
a
No match
a
No match
/(?(?=a)a|b)/
a
0: a
/(\w+:)+/
one:
0: one:
/$(?<=^(a))/
a
0:
/([\w:]+::)?(\w+)$/
abcd
0: abcd
xy:z:::abcd
0: xy:z:::abcd
/^[^bcd]*(c+)/
aexycd
0: aexyc
/(a*)b+/
caab
0: aab
/([\w:]+::)?(\w+)$/
abcd
0: abcd
xy:z:::abcd
0: xy:z:::abcd
*** Failers
0: Failers
abcd:
No match
abcd:
No match
/^[^bcd]*(c+)/
aexycd
0: aexyc
/(>a+)ab/
/(?>a+)b/
aaab
0: aaab
/([[:]+)/
a:[b]:
0: :[
/([[=]+)/
a=[b]=
0: =[
/([[.]+)/
a.[b].
0: .[
/((?>a+)b)/
aaab
0: aaab
/(?>(a+))b/
aaab
0: aaab
/((?>[^()]+)|\([^()]*\))+/
((abc(ade)ufh()()x
0: abc(ade)ufh()()x
1: abc(ade)ufh()()
2: abc(ade)ufh()
3: abc(ade)ufh
4: abc(ade)
5: abc
/a\Z/
*** Failers
No match
aaab
No match
a\nb\n
No match
/b\Z/
a\nb\n
0: b
/b\z/
/b\Z/
a\nb
0: b
/b\z/
a\nb
0: b
*** Failers
No match
/(?>.*)(?<=(abcd|wxyz))/
alphabetabcd
0: alphabetabcd
endingwxyz
0: endingwxyz
*** Failers
No match
a rather long string that doesn't end with one of them
No match
/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
word cat dog elephant mussel cow horse canary baboon snake shark otherword
0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
word cat dog elephant mussel cow horse canary baboon snake shark
No match
/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
No match
/(?<=\d{3}(?!999))foo/
999foo
0: foo
123999foo
0: foo
*** Failers
No match
123abcfoo
No match
/(?<=(?!...999)\d{3})foo/
999foo
0: foo
123999foo
0: foo
*** Failers
No match
123abcfoo
No match
/(?<=\d{3}(?!999)...)foo/
123abcfoo
0: foo
123456foo
0: foo
*** Failers
No match
123999foo
No match
/(?<=\d{3}...)(?<!999)foo/
123abcfoo
0: foo
123456foo
0: foo
*** Failers
No match
123999foo
No match
/((Z)+|A)*/
ZABCDEFG
0: ZA
1: Z
2:
/(Z()|A)*/
ZABCDEFG
0: ZA
1: Z
2:
/(Z(())|A)*/
ZABCDEFG
0: ZA
1: Z
2:
/((?>Z)+|A)*/
ZABCDEFG
0: ZA
1: Z
2:
/((?>)+|A)*/
ZABCDEFG
0:
/a*/g
abbab
0: a
0:
0:
0: a
0:
0:
/^[\d-a]/
abcde
0: a
-things
0: -
0digit
0: 0
*** Failers
No match
bcdef
No match
/[[:space:]]+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09\x0a\x0c\x0d\x0b
/[[:blank:]]+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09
/[\s]+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09\x0a\x0c\x0d\x0b
/\s+/
> \x09\x0a\x0c\x0d\x0b<
0: \x09\x0a\x0c\x0d\x0b
/a b/x
ab
0: ab
/(?!\A)x/m
a\nxb\n
0: x
/(?!^)x/m
a\nxb\n
No match
/abc\Qabc\Eabc/
abcabcabc
0: abcabcabc
/abc\Q(*+|\Eabc/
abc(*+|abc
0: abc(*+|abc
/ abc\Q abc\Eabc/x
abc abcabc
0: abc abcabc
*** Failers
No match
abcabcabc
No match
/abc#comment
\Q#not comment
literal\E/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/abc#comment
\Q#not comment
literal/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/abc#comment
\Q#not comment
literal\E #more comment
/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/abc#comment
\Q#not comment
literal\E #more comment/x
abc#not comment\n literal
0: abc#not comment\x0a literal
/\Qabc\$xyz\E/
abc\\\$xyz
0: abc\$xyz
/\Qabc\E\$\Qxyz\E/
abc\$xyz
0: abc$xyz
/\Gabc/
abc
0: abc
*** Failers
No match
xyzabc
No match
/\Gabc./g
abc1abc2xyzabc3
0: abc1
0: abc2
/abc./g
abc1abc2xyzabc3
0: abc1
0: abc2
0: abc3
/a(?x: b c )d/
XabcdY
0: abcd
*** Failers
No match
Xa b c d Y
No match
/((?x)x y z | a b c)/
XabcY
0: abc
AxyzB
0: xyz
/(?i)AB(?-i)C/
XabCY
0: abC
*** Failers
No match
XabcY
No match
/((?i)AB(?-i)C|D)E/
abCE
0: abCE
DE
0: DE
*** Failers
No match
abcE
No match
abCe
No match
dE
No match
De
No match
/[z\Qa-d]\E]/
z
0: z
a
0: a
-
0: -
d
0: d
]
0: ]
*** Failers
0: a
b
No match
/[\z\C]/
z
0: z
C
0: C
/\M/
M
0: M
/(a+)*b/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
/(?i)reg(?:ul(?:[aä]|ae)r|ex)/
REGular
0: REGular
regulaer
0: regulaer
Regex
0: Regex
regulär
0: regul\xe4r
/Åæåä[à-ÿÀ-ß]+/
Åæåäà
0: \xc5\xe6\xe5\xe4\xe0
Åæåäÿ
0: \xc5\xe6\xe5\xe4\xff
ÅæåäÀ
0: \xc5\xe6\xe5\xe4\xc0
Åæåäß
0: \xc5\xe6\xe5\xe4\xdf
/(?<=Z)X./
\x84XAZXB
0: XB
/^(?(2)a|(1)(2))+$/
123a
Error -17 (backreference condition or recursion test not supported for DFA matching)
/(?<=a|bbbb)c/
ac
0: c
bbbbc
0: c
/abc/SS>testsavedregex
Compiled pattern written to testsavedregex
<testsavedregex
Compiled pattern loaded from testsavedregex
No study data
abc
0: abc
*** Failers
No match
bca
No match
/abc/FSS>testsavedregex
Compiled pattern written to testsavedregex
<testsavedregex
Compiled pattern (byte-inverted) loaded from testsavedregex
No study data
abc
0: abc
*** Failers
No match
bca
No match
/(a|b)/S>testsavedregex
Compiled pattern written to testsavedregex
Study data written to testsavedregex
<testsavedregex
Compiled pattern loaded from testsavedregex
Study data loaded from testsavedregex
abc
0: a
*** Failers
0: a
def
No match
/(a|b)/SF>testsavedregex
Compiled pattern written to testsavedregex
Study data written to testsavedregex
<testsavedregex
Compiled pattern (byte-inverted) loaded from testsavedregex
Study data loaded from testsavedregex
abc
0: a
*** Failers
0: a
def
No match
/line\nbreak/
this is a line\nbreak
0: line\x0abreak
line one\nthis is a line\nbreak in the second line
0: line\x0abreak
/line\nbreak/f
this is a line\nbreak
0: line\x0abreak
** Failers
No match
line one\nthis is a line\nbreak in the second line
No match
/line\nbreak/mf
this is a line\nbreak
0: line\x0abreak
** Failers
No match
line one\nthis is a line\nbreak in the second line
No match
/1234/
123\P
Partial match: 123
a4\P\R
No match
/1234/
123\P
Partial match: 123
4\P\R
0: 4
/^/mg
a\nb\nc\n
0:
0:
0:
\
0:
/(?<=C\n)^/mg
A\nC\nC\n
0:
/(?s)A?B/
AB
0: AB
aB
0: B
/(?s)A*B/
AB
0: AB
aB
0: B
/(?m)A?B/
AB
0: AB
aB
0: B
/(?m)A*B/
AB
0: AB
aB
0: B
/Content-Type\x3A[^\r\n]{6,}/
Content-Type:xxxxxyyy
0: Content-Type:xxxxxyyy
/Content-Type\x3A[^\r\n]{6,}z/
Content-Type:xxxxxyyyz
0: Content-Type:xxxxxyyyz
/Content-Type\x3A[^a]{6,}/
Content-Type:xxxyyy
0: Content-Type:xxxyyy
/Content-Type\x3A[^a]{6,}z/
Content-Type:xxxyyyz
0: Content-Type:xxxyyyz
/^abc/m
xyz\nabc
0: abc
xyz\nabc\<lf>
0: abc
xyz\r\nabc\<lf>
0: abc
xyz\rabc\<cr>
0: abc
xyz\r\nabc\<crlf>
0: abc
** Failers
No match
xyz\nabc\<cr>
No match
xyz\r\nabc\<cr>
No match
xyz\nabc\<crlf>
No match
xyz\rabc\<crlf>
No match
xyz\rabc\<lf>
No match
/abc$/m<lf>
xyzabc
0: abc
xyzabc\n
0: abc
xyzabc\npqr
0: abc
xyzabc\r\<cr>
0: abc
xyzabc\rpqr\<cr>
0: abc
xyzabc\r\n\<crlf>
0: abc
xyzabc\r\npqr\<crlf>
0: abc
** Failers
No match
xyzabc\r
No match
xyzabc\rpqr
No match
xyzabc\r\n
No match
xyzabc\r\npqr
No match
/^abc/m<cr>
xyz\rabcdef
0: abc
xyz\nabcdef\<lf>
0: abc
** Failers
No match
xyz\nabcdef
No match
/^abc/m<lf>
xyz\nabcdef
0: abc
xyz\rabcdef\<cr>
0: abc
** Failers
No match
xyz\rabcdef
No match
/^abc/m<crlf>
xyz\r\nabcdef
0: abc
xyz\rabcdef\<cr>
0: abc
** Failers
No match
xyz\rabcdef
No match
/.*/<lf>
abc\ndef
0: abc
abc\rdef
0: abc\x0ddef
abc\r\ndef
0: abc\x0d
\<cr>abc\ndef
0: abc\x0adef
\<cr>abc\rdef
0: abc
\<cr>abc\r\ndef
0: abc
\<crlf>abc\ndef
0: abc\x0adef
\<crlf>abc\rdef
0: abc\x0ddef
\<crlf>abc\r\ndef
0: abc
/\w+(.)(.)?def/s
abc\ndef
0: abc\x0adef
abc\rdef
0: abc\x0ddef
abc\r\ndef
0: abc\x0d\x0adef
/^\w+=.*(\\\n.*)*/
abc=xyz\\\npqr
0: abc=xyz\\x0apqr
1: abc=xyz\\x0apq
2: abc=xyz\\x0ap
3: abc=xyz\\x0a
4: abc=xyz\
5: abc=xyz
6: abc=xy
7: abc=x
8: abc=
/^(a()*)*/
aaaa
0: aaaa
1: aaa
2: aa
3: a
4:
/^(?:a(?:(?:))*)*/
aaaa
0: aaaa
1: aaa
2: aa
3: a
4:
/^(a()+)+/
aaaa
0: aaaa
1: aaa
2: aa
3: a
/^(?:a(?:(?:))+)+/
aaaa
0: aaaa
1: aaa
2: aa
3: a
/(a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?>a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/(?:a|)*\d/
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
No match
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
/^a.b/<lf>
a\rb
0: a\x0db
a\nb\<cr>
0: a\x0ab
** Failers
No match
a\nb
No match
a\nb\<any>
No match
a\rb\<cr>
No match
a\rb\<any>
No match
/^abc./mgx<any>
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
0: abc1
0: abc2
0: abc3
0: abc4
0: abc5
0: abc6
0: abc7
/abc.$/mgx<any>
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
0: abc1
0: abc2
0: abc3
0: abc4
0: abc5
0: abc6
0: abc9
/^a\Rb/<bsr_unicode>
a\nb
0: a\x0ab
a\rb
0: a\x0db
a\r\nb
0: a\x0d\x0ab
a\x0bb
0: a\x0bb
a\x0cb
0: a\x0cb
a\x85b
0: a\x85b
** Failers
No match
a\n\rb
No match
/^a\R*b/<bsr_unicode>
ab
0: ab
a\nb
0: a\x0ab
a\rb
0: a\x0db
a\r\nb
0: a\x0d\x0ab
a\x0bb
0: a\x0bb
a\x0cb
0: a\x0cb
a\x85b
0: a\x85b
a\n\rb
0: a\x0a\x0db
a\n\r\x85\x0cb
0: a\x0a\x0d\x85\x0cb
/^a\R+b/<bsr_unicode>
a\nb
0: a\x0ab
a\rb
0: a\x0db
a\r\nb
0: a\x0d\x0ab
a\x0bb
0: a\x0bb
a\x0cb
0: a\x0cb
a\x85b
0: a\x85b
a\n\rb
0: a\x0a\x0db
a\n\r\x85\x0cb
0: a\x0a\x0d\x85\x0cb
** Failers
No match
ab
No match
/^a\R{1,3}b/<bsr_unicode>
a\nb
0: a\x0ab
a\n\rb
0: a\x0a\x0db
a\n\r\x85b
0: a\x0a\x0d\x85b
a\r\n\r\nb
0: a\x0d\x0a\x0d\x0ab
a\r\n\r\n\r\nb
0: a\x0d\x0a\x0d\x0a\x0d\x0ab
a\n\r\n\rb
0: a\x0a\x0d\x0a\x0db
a\n\n\r\nb
0: a\x0a\x0a\x0d\x0ab
** Failers
No match
a\n\n\n\rb
No match
a\r
No match
/^a[\R]b/<bsr_unicode>
aRb
0: aRb
** Failers
No match
a\nb
No match
/.+foo/
afoo
0: afoo
** Failers
No match
\r\nfoo
No match
\nfoo
No match
/.+foo/<crlf>
afoo
0: afoo
\nfoo
0: \x0afoo
** Failers
No match
\r\nfoo
No match
/.+foo/<any>
afoo
0: afoo
** Failers
No match
\nfoo
No match
\r\nfoo
No match
/.+foo/s
afoo
0: afoo
\r\nfoo
0: \x0d\x0afoo
\nfoo
0: \x0afoo
/^$/mg<any>
abc\r\rxyz
0:
abc\n\rxyz
0:
** Failers
No match
abc\r\nxyz
No match
/^X/m
XABC
0: X
** Failers
No match
XABC\B
No match
/(?m)^$/<any>g+
abc\r\n\r\n
0:
0+ \x0d\x0a
/(?m)^$|^\r\n/<any>g+
abc\r\n\r\n
0: \x0d\x0a
0+
1:
/(?m)$/<any>g+
abc\r\n\r\n
0:
0+ \x0d\x0a\x0d\x0a
0:
0+ \x0d\x0a
0:
0+
/(?|(abc)|(xyz))/
>abc<
0: abc
>xyz<
0: xyz
/(x)(?|(abc)|(xyz))(x)/
xabcx
0: xabcx
xxyzx
0: xxyzx
/(x)(?|(abc)(pqr)|(xyz))(x)/
xabcpqrx
0: xabcpqrx
xxyzx
0: xxyzx
/(?|(abc)|(xyz))(?1)/
abcabc
0: abcabc
xyzabc
0: xyzabc
** Failers
No match
xyzxyz
No match
/\H\h\V\v/
X X\x0a
0: X X\x0a
X\x09X\x0b
0: X\x09X\x0b
** Failers
No match
\xa0 X\x0a
No match
/\H*\h+\V?\v{3,4}/
\x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
0: \x09 \xa0X\x0a\x0b\x0c\x0d
\x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
0: \x09 \xa0\x0a\x0b\x0c\x0d
\x09\x20\xa0\x0a\x0b\x0c
0: \x09 \xa0\x0a\x0b\x0c
** Failers
No match
\x09\x20\xa0\x0a\x0b
No match
/\H{3,4}/
XY ABCDE
0: ABCD
XY PQR ST
0: PQR
/.\h{3,4}./
XY AB PQRS
0: B P
1: B
/\h*X\h?\H+Y\H?Z/
>XNNNYZ
0: XNNNYZ
> X NYQZ
0: X NYQZ
** Failers
No match
>XYZ
No match
> X NY Z
No match
/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
>XY\x0aZ\x0aA\x0bNN\x0c
0: XY\x0aZ\x0aA\x0bNN\x0c
>\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
/.+A/<crlf>
\r\nA
No match
/\nA/<crlf>
\r\nA
0: \x0aA
/[\r\n]A/<crlf>
\r\nA
0: \x0aA
/(\r|\n)A/<crlf>
\r\nA
0: \x0aA
/a\Rb/I<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf
First char = 'a'
Need char = 'b'
a\rb
0: a\x0db
a\nb
0: a\x0ab
a\r\nb
0: a\x0d\x0ab
** Failers
No match
a\x85b
No match
a\x0bb
No match
/a\Rb/I<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode
First char = 'a'
Need char = 'b'
a\rb
0: a\x0db
a\nb
0: a\x0ab
a\r\nb
0: a\x0d\x0ab
a\x85b
0: a\x85b
a\x0bb
0: a\x0bb
** Failers
No match
a\x85b\<bsr_anycrlf>
No match
a\x0bb\<bsr_anycrlf>
No match
/a\R?b/I<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf
First char = 'a'
Need char = 'b'
a\rb
0: a\x0db
a\nb
0: a\x0ab
a\r\nb
0: a\x0d\x0ab
** Failers
No match
a\x85b
No match
a\x0bb
No match
/a\R?b/I<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode
First char = 'a'
Need char = 'b'
a\rb
0: a\x0db
a\nb
0: a\x0ab
a\r\nb
0: a\x0d\x0ab
a\x85b
0: a\x85b
a\x0bb
0: a\x0bb
** Failers
No match
a\x85b\<bsr_anycrlf>
No match
a\x0bb\<bsr_anycrlf>
No match
/a\R{2,4}b/I<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf
First char = 'a'
Need char = 'b'
a\r\n\nb
0: a\x0d\x0a\x0ab
a\n\r\rb
0: a\x0a\x0d\x0db
a\r\n\r\n\r\n\r\nb
0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab
** Failers
No match
a\x85\85b
No match
a\x0b\0bb
No match
/a\R{2,4}b/I<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode
First char = 'a'
Need char = 'b'
a\r\rb
0: a\x0d\x0db
a\n\n\nb
0: a\x0a\x0a\x0ab
a\r\n\n\r\rb
0: a\x0d\x0a\x0a\x0d\x0db
a\x85\85b
No match
a\x0b\0bb
No match
** Failers
No match
a\r\r\r\r\rb
No match
a\x85\85b\<bsr_anycrlf>
No match
a\x0b\0bb\<bsr_anycrlf>
No match
/a(?!)|\wbc/
abc
0: abc
/a[]b/<JS>
** Failers
No match
ab
No match
/a[]+b/<JS>
** Failers
No match
ab
No match
/a[]*+b/<JS>
** Failers
No match
ab
No match
/a[^]b/<JS>
aXb
0: aXb
a\nb
0: a\x0ab
** Failers
No match
ab
No match
/a[^]+b/<JS>
aXb
0: aXb
a\nX\nXb
0: a\x0aX\x0aXb
** Failers
No match
ab
No match
/X$/E
X
0: X
** Failers
No match
X\n
No match
/X$/
X
0: X
X\n
0: X
/xyz/C
xyz
--->xyz
+0 ^ x
+1 ^^ y
+2 ^ ^ z
+3 ^ ^
0: xyz
abcxyz
--->abcxyz
+0 ^ x
+1 ^^ y
+2 ^ ^ z
+3 ^ ^
0: xyz
abcxyz\Y
--->abcxyz
+0 ^ x
+0 ^ x
+0 ^ x
+0 ^ x
+1 ^^ y
+2 ^ ^ z
+3 ^ ^
0: xyz
** Failers
No match
abc
No match
abc\Y
--->abc
+0 ^ x
+0 ^ x
+0 ^ x
+0 ^ x
No match
abcxypqr
No match
abcxypqr\Y
--->abcxypqr
+0 ^ x
+0 ^ x
+0 ^ x
+0 ^ x
+1 ^^ y
+2 ^ ^ z
+0 ^ x
+0 ^ x
+0 ^ x
+0 ^ x
+0 ^ x
No match
/(*NO_START_OPT)xyz/C
abcxyz
--->abcxyz
+15 ^ x
+15 ^ x
+15 ^ x
+15 ^ x
+16 ^^ y
+17 ^ ^ z
+18 ^ ^
0: xyz
/(?C)ab/
ab
--->ab
0 ^ a
0: ab
\C-ab
0: ab
/ab/C
ab
--->ab
+0 ^ a
+1 ^^ b
+2 ^ ^
0: ab
\C-ab
0: ab
/^"((?(?=[a])[^"])|b)*"$/C
"ab"
--->"ab"
+0 ^ ^
+1 ^ "
+2 ^^ ((?(?=[a])[^"])|b)*
+21 ^^ "
+3 ^^ (?(?=[a])[^"])
+18 ^^ b
+5 ^^ (?=[a])
+8 ^ [a]
+11 ^^ )
+12 ^^ [^"]
+16 ^ ^ )
+17 ^ ^ |
+21 ^ ^ "
+3 ^ ^ (?(?=[a])[^"])
+18 ^ ^ b
+5 ^ ^ (?=[a])
+8 ^ [a]
+19 ^ ^ )
+21 ^ ^ "
+3 ^ ^ (?(?=[a])[^"])
+18 ^ ^ b
+5 ^ ^ (?=[a])
+8 ^ [a]
+17 ^ ^ |
+22 ^ ^ $
+23 ^ ^
0: "ab"
\C-"ab"
0: "ab"
/\d+X|9+Y/
++++123999\P
Partial match: 123999
++++123999Y\P
0: 999Y
/Z(*F)/
Z\P
No match
ZA\P
No match
/Z(?!)/
Z\P
No match
ZA\P
No match
/dog(sbody)?/
dogs\P
0: dog
dogs\P\P
Partial match: dogs
/dog(sbody)??/
dogs\P
0: dog
dogs\P\P
Partial match: dogs
/dog|dogsbody/
dogs\P
0: dog
dogs\P\P
Partial match: dogs
/dogsbody|dog/
dogs\P
0: dog
dogs\P\P
Partial match: dogs
/Z(*F)Q|ZXY/
Z\P
Partial match: Z
ZA\P
No match
X\P
No match
/\bthe cat\b/
the cat\P
0: the cat
the cat\P\P
Partial match: the cat
/dog(sbody)?/
dogs\D\P
0: dog
body\D\R
0: body
/dog(sbody)?/
dogs\D\P\P
Partial match: dogs
body\D\R
0: body
/abc/
abc\P
0: abc
abc\P\P
0: abc
/abc\K123/
xyzabc123pqr
Error -16 (item unsupported for DFA matching)
/(?<=abc)123/
xyzabc123pqr
0: 123
xyzabc12\P
Partial match at offset 6: abc12
xyzabc12\P\P
Partial match at offset 6: abc12
/\babc\b/
+++abc+++
0: abc
+++ab\P
Partial match at offset 3: +ab
+++ab\P\P
Partial match at offset 3: +ab
/(?=C)/g+
ABCDECBA
0:
0+ CDECBA
0:
0+ CBA
/(abc|def|xyz)/I
Capturing subpattern count = 1
No options
No first char
No need char
terhjk;abcdaadsfe
0: abc
the quick xyz brown fox
0: xyz
\Yterhjk;abcdaadsfe
0: abc
\Ythe quick xyz brown fox
0: xyz
** Failers
No match
thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
No match
\Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
No match
/(abc|def|xyz)/SI
Capturing subpattern count = 1
No options
No first char
No need char
Subject length lower bound = 3
Starting chars: a d x
terhjk;abcdaadsfe
0: abc
the quick xyz brown fox
0: xyz
\Yterhjk;abcdaadsfe
0: abc
\Ythe quick xyz brown fox
0: xyz
** Failers
No match
thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
No match
\Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
No match
/abcd*/+
xxxxabcd\P
0: abcd
0+
xxxxabcd\P\P
Partial match: abcd
dddxxx\R
0: ddd
0+ xxx
xxxxabcd\P\P
Partial match: abcd
xxx\R
0:
0+ xxx
/abcd*/i
xxxxabcd\P
0: abcd
xxxxabcd\P\P
Partial match: abcd
XXXXABCD\P
0: ABCD
XXXXABCD\P\P
Partial match: ABCD
/abc\d*/
xxxxabc1\P
0: abc1
xxxxabc1\P\P
Partial match: abc1
/abc[de]*/
xxxxabcde\P
0: abcde
xxxxabcde\P\P
Partial match: abcde
/(?:(?1)|B)(A(*F)|C)/
ABCD
0: BC
CCD
0: CC
** Failers
No match
CAD
No match
/^(?:(?1)|B)(A(*F)|C)/
CCD
0: CC
BCD
0: BC
** Failers
No match
ABCD
No match
CAD
No match
BAD
No match
/^(?!a(*SKIP)b)/
ac
Error -16 (item unsupported for DFA matching)
/^(?=a(*SKIP)b|ac)/
** Failers
No match
ac
Error -16 (item unsupported for DFA matching)
/^(?=a(*THEN)b|ac)/
ac
Error -16 (item unsupported for DFA matching)
/^(?=a(*PRUNE)b)/
ab
Error -16 (item unsupported for DFA matching)
** Failers
No match
ac
Error -16 (item unsupported for DFA matching)
/^(?(?!a(*SKIP)b))/
ac
Error -16 (item unsupported for DFA matching)
/(?<=abc)def/
abc\P\P
Partial match at offset 3: abc
/abc$/
abc
0: abc
abc\P
0: abc
abc\P\P
Partial match: abc
/abc$/m
abc
0: abc
abc\n
0: abc
abc\P\P
Partial match: abc
abc\n\P\P
0: abc
abc\P
0: abc
abc\n\P
0: abc
/abc\z/
abc
0: abc
abc\P
0: abc
abc\P\P
Partial match: abc
/abc\Z/
abc
0: abc
abc\P
0: abc
abc\P\P
Partial match: abc
/abc\b/
abc
0: abc
abc\P
0: abc
abc\P\P
Partial match: abc
/abc\B/
abc
No match
abc\P
Partial match: abc
abc\P\P
Partial match: abc
/.+/
abc\>0
0: abc
abc\>1
0: bc
abc\>2
0: c
abc\>3
No match
abc\>4
Error -24 (bad offset value)
abc\>-4
Error -24 (bad offset value)
/^(?:a)++\w/
aaaab
0: aaaab
** Failers
No match
aaaa
No match
bbb
No match
/^(?:aa|(?:a)++\w)/
aaaab
0: aaaab
1: aa
aaaa
0: aa
** Failers
No match
bbb
No match
/^(?:a)*+\w/
aaaab
0: aaaab
bbb
0: b
** Failers
No match
aaaa
No match
/^(a)++\w/
aaaab
0: aaaab
** Failers
No match
aaaa
No match
bbb
No match
/^(a|)++\w/
aaaab
0: aaaab
** Failers
No match
aaaa
No match
bbb
No match
/(?=abc){3}abc/+
abcabcabc
0: abc
0+ abcabc
** Failers
No match
xyz
No match
/(?=abc)+abc/+
abcabcabc
0: abc
0+ abcabc
** Failers
No match
xyz
No match
/(?=abc)++abc/+
abcabcabc
0: abc
0+ abcabc
** Failers
No match
xyz
No match
/(?=abc){0}xyz/
xyz
0: xyz
/(?=abc){1}xyz/
** Failers
No match
xyz
No match
/(?=(a))?./
ab
0: a
bc
0: b
/(?=(a))??./
ab
0: a
bc
0: b
/^(?=(a)){0}b(?1)/
backgammon
0: ba
/^(?=(?1))?[az]([abc])d/
abd
0: abd
zcdxx
0: zcd
/^(?!a){0}\w+/
aaaaa
0: aaaaa
/(?<=(abc))?xyz/
abcxyz
0: xyz
pqrxyz
0: xyz
/((?2))((?1))/
abc
Error -26 (nested recursion at the same subject position)
/(?(R)a+|(?R)b)/
aaaabcde
0: aaaab
/(?(R)a+|((?R))b)/
aaaabcde
0: aaaab
/((?(R)a+|(?1)b))/
aaaabcde
0: aaaab
/((?(R2)a+|(?1)b))/
aaaabcde
Error -17 (backreference condition or recursion test not supported for DFA matching)
/(?(R)a*(?1)|((?R))b)/
aaaabcde
Error -26 (nested recursion at the same subject position)
/(a+)/O
\O6aaaa
Matched, but offsets vector is too small to show all matches
0: aaaa
1: aaa
2: aa
\O8aaaa
0: aaaa
1: aaa
2: aa
3: a
/ab\Cde/
abXde
0: abXde
/(?<=ab\Cde)X/
abZdeX
0: X
/^\R/
\r\P
0: \x0d
\r\P\P
Partial match: \x0d
/^\R{2,3}x/
\r\P
Partial match: \x0d
\r\P\P
Partial match: \x0d
\r\r\P
Partial match: \x0d\x0d
\r\r\P\P
Partial match: \x0d\x0d
\r\r\r\P
Partial match: \x0d\x0d\x0d
\r\r\r\P\P
Partial match: \x0d\x0d\x0d
\r\rx
0: \x0d\x0dx
\r\r\rx
0: \x0d\x0d\x0dx
/^\R{2,3}?x/
\r\P
Partial match: \x0d
\r\P\P
Partial match: \x0d
\r\r\P
Partial match: \x0d\x0d
\r\r\P\P
Partial match: \x0d\x0d
\r\r\r\P
Partial match: \x0d\x0d\x0d
\r\r\r\P\P
Partial match: \x0d\x0d\x0d
\r\rx
0: \x0d\x0dx
\r\r\rx
0: \x0d\x0d\x0dx
/^\R?x/
\r\P
Partial match: \x0d
\r\P\P
Partial match: \x0d
x
0: x
\rx
0: \x0dx
/^\R+x/
\r\P
Partial match: \x0d
\r\P\P
Partial match: \x0d
\r\n\P
Partial match: \x0d\x0a
\r\n\P\P
Partial match: \x0d\x0a
\rx
0: \x0dx
/^a$/<CRLF>
a\r\P
Partial match: a\x0d
a\r\P\P
Partial match: a\x0d
/^a$/m<CRLF>
a\r\P
Partial match: a\x0d
a\r\P\P
Partial match: a\x0d
/^(a$|a\r)/<CRLF>
a\r\P
0: a\x0d
a\r\P\P
Partial match: a\x0d
/^(a$|a\r)/m<CRLF>
a\r\P
0: a\x0d
a\r\P\P
Partial match: a\x0d
/./<CRLF>
\r\P
0: \x0d
\r\P\P
Partial match: \x0d
/.{2,3}/<CRLF>
\r\P
Partial match: \x0d
\r\P\P
Partial match: \x0d
\r\r\P
0: \x0d\x0d
\r\r\P\P
Partial match: \x0d\x0d
\r\r\r\P
0: \x0d\x0d\x0d
\r\r\r\P\P
Partial match: \x0d\x0d\x0d
/.{2,3}?/<CRLF>
\r\P
Partial match: \x0d
\r\P\P
Partial match: \x0d
\r\r\P
0: \x0d\x0d
\r\r\P\P
Partial match: \x0d\x0d
\r\r\r\P
0: \x0d\x0d\x0d
1: \x0d\x0d
\r\r\r\P\P
Partial match: \x0d\x0d\x0d
/-- Test simple validity check for restarts --/
/abcdef/
abc\R
Error -30 (invalid data in workspace for DFA restart)
/<H((?(?!<H|F>)(.)|(?R))++)*F>/
text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text.
0: <H more text <H texting more hexA0-"\xa0" hex above 7F-"\xbc" F> text xxxxx <H text F> text F>
/^(?>.{4})abc|^\w\w.xabcd/
xxxxabcd
0: xxxxabcd
1: xxxxabc
xx\xa0xabcd
0: xx\xa0xabcd
1: xx\xa0xabc
/^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/
xxxxxxxxabcd
0: xxxxxxxxabcd
1: xxxxxxxxabc
xx\xa0xxxxxabcd
0: xx\xa0xxxxxabcd
1: xx\xa0xxxxxabc
/abcd/
abcd\O0
Matched, but offsets vector is too small to show all matches
/-- These tests show up auto-possessification --/
/[ab]*/
aaaa
0: aaaa
/[ab]*?/
aaaa
0: aaaa
1: aaa
2: aa
3: a
4:
/[ab]?/
aaaa
0: a
/[ab]??/
aaaa
0: a
1:
/[ab]+/
aaaa
0: aaaa
/[ab]+?/
aaaa
0: aaaa
1: aaa
2: aa
3: a
/[ab]{2,3}/
aaaa
0: aaa
/[ab]{2,3}?/
aaaa
0: aaa
1: aa
/[ab]{2,}/
aaaa
0: aaaa
/[ab]{2,}?/
aaaa
0: aaaa
1: aaa
2: aa
'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER
'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++'
NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
0: NON QUOTED "QUOT""ED" AFTER
/(?(?!)a|b)/
bbb
0: b
aaa
No match
/()()a+/O=
aaa\D
** Show all captures ignored after DFA matching
0: aaa
1: aa
2: a
a\D
** Show all captures ignored after DFA matching
0: a
/(02-)?[0-9]{3}-[0-9]{3}/
02-123-123
0: 02-123-123
/-- End of testinput8 --/
+1287
View File
@@ -0,0 +1,1287 @@
/-- This set of tests checks UTF-8 support with the DFA matching functionality
of pcre_dfa_exec(), excluding Unicode property support. The -dfa flag must
be used with pcretest when running it. --/
< forbid W
/\x{100}ab/8
\x{100}ab
0: \x{100}ab
/a\x{100}*b/8
ab
0: ab
a\x{100}b
0: a\x{100}b
a\x{100}\x{100}b
0: a\x{100}\x{100}b
/a\x{100}+b/8
a\x{100}b
0: a\x{100}b
a\x{100}\x{100}b
0: a\x{100}\x{100}b
*** Failers
No match
ab
No match
/\bX/8
Xoanon
0: X
+Xoanon
0: X
\x{300}Xoanon
0: X
*** Failers
No match
YXoanon
No match
/\BX/8
YXoanon
0: X
*** Failers
No match
Xoanon
No match
+Xoanon
No match
\x{300}Xoanon
No match
/X\b/8
X+oanon
0: X
ZX\x{300}oanon
0: X
FAX
0: X
*** Failers
No match
Xoanon
No match
/X\B/8
Xoanon
0: X
*** Failers
No match
X+oanon
No match
ZX\x{300}oanon
No match
FAX
No match
/[^a]/8
abcd
0: b
a\x{100}
0: \x{100}
/^[abc\x{123}\x{400}-\x{402}]{2,3}\d/8
ab99
0: ab9
\x{123}\x{123}45
0: \x{123}\x{123}4
\x{400}\x{401}\x{402}6
0: \x{400}\x{401}\x{402}6
*** Failers
No match
d99
No match
\x{123}\x{122}4
No match
\x{400}\x{403}6
No match
\x{400}\x{401}\x{402}\x{402}6
No match
/a.b/8
acb
0: acb
a\x7fb
0: a\x{7f}b
a\x{100}b
0: a\x{100}b
*** Failers
No match
a\nb
No match
/a(.{3})b/8
a\x{4000}xyb
0: a\x{4000}xyb
a\x{4000}\x7fyb
0: a\x{4000}\x{7f}yb
a\x{4000}\x{100}yb
0: a\x{4000}\x{100}yb
*** Failers
No match
a\x{4000}b
No match
ac\ncb
No match
/a(.*?)(.)/
a\xc0\x88b
0: a\xc0\x88b
1: a\xc0\x88
2: a\xc0
/a(.*?)(.)/8
a\x{100}b
0: a\x{100}b
1: a\x{100}
/a(.*)(.)/
a\xc0\x88b
0: a\xc0\x88b
1: a\xc0\x88
2: a\xc0
/a(.*)(.)/8
a\x{100}b
0: a\x{100}b
1: a\x{100}
/a(.)(.)/
a\xc0\x92bcd
0: a\xc0\x92
/a(.)(.)/8
a\x{240}bcd
0: a\x{240}b
/a(.?)(.)/
a\xc0\x92bcd
0: a\xc0\x92
1: a\xc0
/a(.?)(.)/8
a\x{240}bcd
0: a\x{240}b
1: a\x{240}
/a(.??)(.)/
a\xc0\x92bcd
0: a\xc0\x92
1: a\xc0
/a(.??)(.)/8
a\x{240}bcd
0: a\x{240}b
1: a\x{240}
/a(.{3})b/8
a\x{1234}xyb
0: a\x{1234}xyb
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
*** Failers
No match
a\x{1234}b
No match
ac\ncb
No match
/a(.{3,})b/8
a\x{1234}xyb
0: a\x{1234}xyb
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
0: axxxxbcdefghijb
1: axxxxb
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
*** Failers
No match
a\x{1234}b
No match
/a(.{3,}?)b/8
a\x{1234}xyb
0: a\x{1234}xyb
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
0: axxxxbcdefghijb
1: axxxxb
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
*** Failers
No match
a\x{1234}b
No match
/a(.{3,5})b/8
a\x{1234}xyb
0: a\x{1234}xyb
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
0: axxxxb
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
0: axbxxb
axxxxxbcdefghijb
0: axxxxxb
*** Failers
No match
a\x{1234}b
No match
axxxxxxbcdefghijb
No match
/a(.{3,5}?)b/8
a\x{1234}xyb
0: a\x{1234}xyb
a\x{1234}\x{4321}yb
0: a\x{1234}\x{4321}yb
a\x{1234}\x{4321}\x{3412}b
0: a\x{1234}\x{4321}\x{3412}b
axxxxbcdefghijb
0: axxxxb
a\x{1234}\x{4321}\x{3412}\x{3421}b
0: a\x{1234}\x{4321}\x{3412}\x{3421}b
axbxxbcdefghijb
0: axbxxb
axxxxxbcdefghijb
0: axxxxxb
*** Failers
No match
a\x{1234}b
No match
axxxxxxbcdefghijb
No match
/^[a\x{c0}]/8
*** Failers
No match
\x{100}
No match
/(?<=aXb)cd/8
aXbcd
0: cd
/(?<=a\x{100}b)cd/8
a\x{100}bcd
0: cd
/(?<=a\x{100000}b)cd/8
a\x{100000}bcd
0: cd
/(?:\x{100}){3}b/8
\x{100}\x{100}\x{100}b
0: \x{100}\x{100}\x{100}b
*** Failers
No match
\x{100}\x{100}b
No match
/\x{ab}/8
\x{ab}
0: \x{ab}
\xc2\xab
0: \x{ab}
*** Failers
No match
\x00{ab}
No match
/(?<=(.))X/8
WXYZ
0: X
\x{256}XYZ
0: X
*** Failers
No match
XYZ
No match
/[^a]+/8g
bcd
0: bcd
\x{100}aY\x{256}Z
0: \x{100}
0: Y\x{256}Z
/^[^a]{2}/8
\x{100}bc
0: \x{100}b
/^[^a]{2,}/8
\x{100}bcAa
0: \x{100}bcA
/^[^a]{2,}?/8
\x{100}bca
0: \x{100}bc
1: \x{100}b
/[^a]+/8ig
bcd
0: bcd
\x{100}aY\x{256}Z
0: \x{100}
0: Y\x{256}Z
/^[^a]{2}/8i
\x{100}bc
0: \x{100}b
/^[^a]{2,}/8i
\x{100}bcAa
0: \x{100}bc
/^[^a]{2,}?/8i
\x{100}bca
0: \x{100}bc
1: \x{100}b
/\x{100}{0,0}/8
abcd
0:
/\x{100}?/8
abcd
0:
\x{100}\x{100}
0: \x{100}
/\x{100}{0,3}/8
\x{100}\x{100}
0: \x{100}\x{100}
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}
/\x{100}*/8
abce
0:
\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
/\x{100}{1,1}/8
abcd\x{100}\x{100}\x{100}\x{100}
0: \x{100}
/\x{100}{1,3}/8
abcd\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}
/\x{100}+/8
abcd\x{100}\x{100}\x{100}\x{100}
0: \x{100}\x{100}\x{100}\x{100}
/\x{100}{3}/8
abcd\x{100}\x{100}\x{100}XX
0: \x{100}\x{100}\x{100}
/\x{100}{3,5}/8
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
0: \x{100}\x{100}\x{100}\x{100}\x{100}
/\x{100}{3,}/8O
abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
1: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
2: \x{100}\x{100}\x{100}\x{100}\x{100}
3: \x{100}\x{100}\x{100}\x{100}
4: \x{100}\x{100}\x{100}
/(?<=a\x{100}{2}b)X/8
Xyyya\x{100}\x{100}bXzzz
0: X
/\D*/8O
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Matched, but offsets vector is too small to show all matches
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
8: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
9: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/\D*/8O
\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
Matched, but offsets vector is too small to show all matches
0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
1: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
2: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
3: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
4: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
5: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
6: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
7: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
8: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
9: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
10: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
11: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
12: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
13: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
14: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
15: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
16: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
17: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
18: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
19: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
20: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
21: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
/\D/8
1X2
0: X
1\x{100}2
0: \x{100}
/>\S/8
> >X Y
0: >X
> >\x{100} Y
0: >\x{100}
/\d/8
\x{100}3
0: 3
/\s/8
\x{100} X
0:
/\D+/8
12abcd34
0: abcd
*** Failers
0: *** Failers
1234
No match
/\D{2,3}/8
12abcd34
0: abc
12ab34
0: ab
*** Failers
0: ***
1234
No match
12a34
No match
/\D{2,3}?/8
12abcd34
0: abc
1: ab
12ab34
0: ab
*** Failers
0: ***
1: **
1234
No match
12a34
No match
/\d+/8
12abcd34
0: 12
*** Failers
No match
/\d{2,3}/8
12abcd34
0: 12
1234abcd
0: 123
*** Failers
No match
1.4
No match
/\d{2,3}?/8
12abcd34
0: 12
1234abcd
0: 123
1: 12
*** Failers
No match
1.4
No match
/\S+/8
12abcd34
0: 12abcd34
*** Failers
0: ***
\ \
No match
/\S{2,3}/8
12abcd34
0: 12a
1234abcd
0: 123
*** Failers
0: ***
\ \
No match
/\S{2,3}?/8
12abcd34
0: 12a
1: 12
1234abcd
0: 123
1: 12
*** Failers
0: ***
1: **
\ \
No match
/>\s+</8
12> <34
0: > <
*** Failers
No match
/>\s{2,3}</8
ab> <cd
0: > <
ab> <ce
0: > <
*** Failers
No match
ab> <cd
No match
/>\s{2,3}?</8
ab> <cd
0: > <
ab> <ce
0: > <
*** Failers
No match
ab> <cd
No match
/\w+/8
12 34
0: 12
*** Failers
0: Failers
+++=*!
No match
/\w{2,3}/8
ab cd
0: ab
abcd ce
0: abc
*** Failers
0: Fai
a.b.c
No match
/\w{2,3}?/8
ab cd
0: ab
abcd ce
0: abc
1: ab
*** Failers
0: Fai
1: Fa
a.b.c
No match
/\W+/8
12====34
0: ====
*** Failers
0: ***
abcd
No match
/\W{2,3}/8
ab====cd
0: ===
ab==cd
0: ==
*** Failers
0: ***
a.b.c
No match
/\W{2,3}?/8
ab====cd
0: ===
1: ==
ab==cd
0: ==
*** Failers
0: ***
1: **
a.b.c
No match
/[\x{100}]/8
\x{100}
0: \x{100}
Z\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[Z\x{100}]/8
Z\x{100}
0: Z
\x{100}
0: \x{100}
\x{100}Z
0: \x{100}
*** Failers
No match
/[\x{100}\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
*** Failers
No match
/[\x{100}-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
*** Failers
No match
/[z-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
abzcd
0: z
ab|cd
0: |
*** Failers
No match
/[Q\x{100}\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
Q?
0: Q
*** Failers
No match
/[Q\x{100}-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
Q?
0: Q
*** Failers
No match
/[Qz-\x{200}]/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{111}cd
0: \x{111}
abzcd
0: z
ab|cd
0: |
Q?
0: Q
*** Failers
No match
/[\x{100}\x{200}]{1,3}/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}\x{100}\x{200}
*** Failers
No match
/[\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}\x{100}\x{200}
1: \x{200}\x{100}
2: \x{200}
*** Failers
No match
/[Q\x{100}\x{200}]{1,3}/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}\x{100}\x{200}
*** Failers
No match
/[Q\x{100}\x{200}]{1,3}?/8
ab\x{100}cd
0: \x{100}
ab\x{200}cd
0: \x{200}
ab\x{200}\x{100}\x{200}\x{100}cd
0: \x{200}\x{100}\x{200}
1: \x{200}\x{100}
2: \x{200}
*** Failers
No match
/(?<=[\x{100}\x{200}])X/8
abc\x{200}X
0: X
abc\x{100}X
0: X
*** Failers
No match
X
No match
/(?<=[Q\x{100}\x{200}])X/8
abc\x{200}X
0: X
abc\x{100}X
0: X
abQX
0: X
*** Failers
No match
X
No match
/(?<=[\x{100}\x{200}]{3})X/8
abc\x{100}\x{200}\x{100}X
0: X
*** Failers
No match
abc\x{200}X
No match
X
No match
/[^\x{100}\x{200}]X/8
AX
0: AX
\x{150}X
0: \x{150}X
\x{500}X
0: \x{500}X
*** Failers
No match
\x{100}X
No match
\x{200}X
No match
/[^Q\x{100}\x{200}]X/8
AX
0: AX
\x{150}X
0: \x{150}X
\x{500}X
0: \x{500}X
*** Failers
No match
\x{100}X
No match
\x{200}X
No match
QX
No match
/[^\x{100}-\x{200}]X/8
AX
0: AX
\x{500}X
0: \x{500}X
*** Failers
No match
\x{100}X
No match
\x{150}X
No match
\x{200}X
No match
/[z-\x{100}]/8i
z
0: z
Z
0: Z
\x{100}
0: \x{100}
*** Failers
No match
\x{102}
No match
y
No match
/[\xFF]/
>\xff<
0: \xff
/[\xff]/8
>\x{ff}<
0: \x{ff}
/[^\xFF]/
XYZ
0: X
/[^\xff]/8
XYZ
0: X
\x{123}
0: \x{123}
/^[ac]*b/8
xb
No match
/^[ac\x{100}]*b/8
xb
No match
/^[^x]*b/8i
xb
No match
/^[^x]*b/8
xb
No match
/^\d*b/8
xb
No match
/(|a)/g8
catac
0:
0: a
1:
0:
0: a
1:
0:
0:
a\x{256}a
0: a
1:
0:
0: a
1:
0:
/^\x{85}$/8i
\x{85}
0: \x{85}
/^abc./mgx8<any>
abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
0: abc1
0: abc2
0: abc3
0: abc4
0: abc5
0: abc6
0: abc7
0: abc8
0: abc9
/abc.$/mgx8<any>
abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
0: abc1
0: abc2
0: abc3
0: abc4
0: abc5
0: abc6
0: abc7
0: abc8
0: abc9
/^a\Rb/8<bsr_unicode>
a\nb
0: a\x{0a}b
a\rb
0: a\x{0d}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x0bb
0: a\x{0b}b
a\x0cb
0: a\x{0c}b
a\x{85}b
0: a\x{85}b
a\x{2028}b
0: a\x{2028}b
a\x{2029}b
0: a\x{2029}b
** Failers
No match
a\n\rb
No match
/^a\R*b/8<bsr_unicode>
ab
0: ab
a\nb
0: a\x{0a}b
a\rb
0: a\x{0d}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x0bb
0: a\x{0b}b
a\x0c\x{2028}\x{2029}b
0: a\x{0c}\x{2028}\x{2029}b
a\x{85}b
0: a\x{85}b
a\n\rb
0: a\x{0a}\x{0d}b
a\n\r\x{85}\x0cb
0: a\x{0a}\x{0d}\x{85}\x{0c}b
/^a\R+b/8<bsr_unicode>
a\nb
0: a\x{0a}b
a\rb
0: a\x{0d}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x0bb
0: a\x{0b}b
a\x0c\x{2028}\x{2029}b
0: a\x{0c}\x{2028}\x{2029}b
a\x{85}b
0: a\x{85}b
a\n\rb
0: a\x{0a}\x{0d}b
a\n\r\x{85}\x0cb
0: a\x{0a}\x{0d}\x{85}\x{0c}b
** Failers
No match
ab
No match
/^a\R{1,3}b/8<bsr_unicode>
a\nb
0: a\x{0a}b
a\n\rb
0: a\x{0a}\x{0d}b
a\n\r\x{85}b
0: a\x{0a}\x{0d}\x{85}b
a\r\n\r\nb
0: a\x{0d}\x{0a}\x{0d}\x{0a}b
a\r\n\r\n\r\nb
0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
a\n\r\n\rb
0: a\x{0a}\x{0d}\x{0a}\x{0d}b
a\n\n\r\nb
0: a\x{0a}\x{0a}\x{0d}\x{0a}b
** Failers
No match
a\n\n\n\rb
No match
a\r
No match
/\h+\V?\v{3,4}/8O
\x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
1: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}
/\V?\v{3,4}/8O
\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
0: X\x{0a}\x{0b}\x{0c}\x{0d}
1: X\x{0a}\x{0b}\x{0c}
/\h+\V?\v{3,4}/8O
>\x09\x20\x{a0}X\x0a\x0a\x0a<
0: \x{09} \x{a0}X\x{0a}\x{0a}\x{0a}
/\V?\v{3,4}/8O
>\x09\x20\x{a0}X\x0a\x0a\x0a<
0: X\x{0a}\x{0a}\x{0a}
/\H\h\V\v/8
X X\x0a
0: X X\x{0a}
X\x09X\x0b
0: X\x{09}X\x{0b}
** Failers
No match
\x{a0} X\x0a
No match
/\H*\h+\V?\v{3,4}/8O
\x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
1: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}
\x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
1: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
\x09\x20\x{a0}\x0a\x0b\x0c
0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
** Failers
No match
\x09\x20\x{a0}\x0a\x0b
No match
/\H\h\V\v/8
\x{3001}\x{3000}\x{2030}\x{2028}
0: \x{3001}\x{3000}\x{2030}\x{2028}
X\x{180e}X\x{85}
0: X\x{180e}X\x{85}
** Failers
No match
\x{2009} X\x0a
No match
/\H*\h+\V?\v{3,4}/8O
\x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
1: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}
\x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
1: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}
\x09\x20\x{202f}\x0a\x0b\x0c
0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
** Failers
No match
\x09\x{200a}\x{a0}\x{2028}\x0b
No match
/a\Rb/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
** Failers
No match
a\x{85}b
No match
a\x0bb
No match
/a\Rb/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x{85}b
0: a\x{85}b
a\x0bb
0: a\x{0b}b
** Failers
No match
a\x{85}b\<bsr_anycrlf>
No match
a\x0bb\<bsr_anycrlf>
No match
/a\R?b/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
** Failers
No match
a\x{85}b
No match
a\x0bb
No match
/a\R?b/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf
First char = 'a'
Need char = 'b'
a\rb
0: a\x{0d}b
a\nb
0: a\x{0a}b
a\r\nb
0: a\x{0d}\x{0a}b
a\x{85}b
0: a\x{85}b
a\x0bb
0: a\x{0b}b
** Failers
No match
a\x{85}b\<bsr_anycrlf>
No match
a\x0bb\<bsr_anycrlf>
No match
/X/8f<any>
A\x{1ec5}ABCXYZ
0: X
/abcd*/8
xxxxabcd\P
0: abcd
xxxxabcd\P\P
Partial match: abcd
/abcd*/i8
xxxxabcd\P
0: abcd
xxxxabcd\P\P
Partial match: abcd
XXXXABCD\P
0: ABCD
XXXXABCD\P\P
Partial match: ABCD
/abc\d*/8
xxxxabc1\P
0: abc1
xxxxabc1\P\P
Partial match: abc1
/abc[de]*/8
xxxxabcde\P
0: abcde
xxxxabcde\P\P
Partial match: abcde
/\bthe cat\b/8
the cat\P
0: the cat
the cat\P\P
Partial match: the cat
/ab\Cde/8
abXde
Error -16 (item unsupported for DFA matching)
/(?<=ab\Cde)X/8
Failed: \C not allowed in lookbehind assertion at offset 10
/./8<CRLF>
\r\P
0: \x{0d}
\r\P\P
Partial match: \x{0d}
/.{2,3}/8<CRLF>
\r\P
Partial match: \x{0d}
\r\P\P
Partial match: \x{0d}
\r\r\P
0: \x{0d}\x{0d}
\r\r\P\P
Partial match: \x{0d}\x{0d}
\r\r\r\P
0: \x{0d}\x{0d}\x{0d}
\r\r\r\P\P
Partial match: \x{0d}\x{0d}\x{0d}
/.{2,3}?/8<CRLF>
\r\P
Partial match: \x{0d}
\r\P\P
Partial match: \x{0d}
\r\r\P
0: \x{0d}\x{0d}
\r\r\P\P
Partial match: \x{0d}\x{0d}
\r\r\r\P
0: \x{0d}\x{0d}\x{0d}
1: \x{0d}\x{0d}
\r\r\r\P\P
Partial match: \x{0d}\x{0d}\x{0d}
/[^\x{100}]/8
\x{100}\x{101}X
0: \x{101}
/[^\x{100}]+/8
\x{100}\x{101}X
0: \x{101}X
/-- End of testinput9 --/
+188
View File
@@ -0,0 +1,188 @@
/-- This is a specialized test for checking, when PCRE is compiled with the
EBCDIC option but in an ASCII environment, that newline and white space
functionality is working. It catches cases where explicit values such as 0x0a
have been used instead of names like CHAR_LF. Needless to say, it is not a
genuine EBCDIC test! In patterns, alphabetic characters that follow a backslash
must be in EBCDIC code. In data, newlines and other spacing characters must be
in EBCDIC, but can be specified as escapes. --/
/-- Test default newline and variations --/
/^A/m
ABC
0: A
12\x15ABC
0: A
/^A/m<any>
12\x15ABC
0: A
12\x0dABC
0: A
12\x0d\x15ABC
0: A
12\x25ABC
0: A
/^A/m<anycrlf>
12\x15ABC
0: A
12\x0dABC
0: A
12\x0d\x15ABC
0: A
** Fail
No match
12\x25ABC
No match
/-- Test \h --/
/^A\ˆ/
A B
0: A\x20
A\x41B
0: AA
/-- Test \H --/
/^A\È/
AB
0: AB
A\x42B
0: AB
** Fail
No match
A B
No match
A\x41B
No match
/-- Test \R --/
/^A\Ù/
A\x15B
0: A\x15
A\x0dB
0: A\x0d
A\x25B
0: A\x25
A\x0bB
0: A\x0b
A\x0cB
0: A\x0c
** Fail
No match
A B
No match
/-- Test \v --/
/^A\¥/
A\x15B
0: A\x15
A\x0dB
0: A\x0d
A\x25B
0: A\x25
A\x0bB
0: A\x0b
A\x0cB
0: A\x0c
** Fail
No match
A B
No match
/-- Test \V --/
/^A\å/
A B
0: A\x20
** Fail
No match
A\x15B
No match
A\x0dB
No match
A\x25B
No match
A\x0bB
No match
A\x0cB
No match
/-- For repeated items, use an atomic group so that the output is the same
for DFA matching (otherwise it may show multiple matches). --/
/-- Test \h+ --/
/^A(?>\ˆ+)/
A B
0: A\x20
/-- Test \H+ --/
/^A(?>\È+)/
AB
0: AB
** Fail
No match
A B
No match
/-- Test \R+ --/
/^A(?>\Ù+)/
A\x15B
0: A\x15
A\x0dB
0: A\x0d
A\x25B
0: A\x25
A\x0bB
0: A\x0b
A\x0cB
0: A\x0c
** Fail
No match
A B
No match
/-- Test \v+ --/
/^A(?>\¥+)/
A\x15B
0: A\x15
A\x0dB
0: A\x0d
A\x25B
0: A\x25
A\x0bB
0: A\x0b
A\x0cB
0: A\x0c
** Fail
No match
A B
No match
/-- Test \V+ --/
/^A(?>\å+)/
A B
0: A\x20B
** Fail
No match
A\x15B
No match
A\x0dB
No match
A\x25B
No match
A\x0bB
No match
A\x0cB
No match
/-- End --/
+15
View File
@@ -0,0 +1,15 @@
{
name
Memcheck:Addr16
obj:???
obj:???
obj:???
}
{
name
Memcheck:Cond
obj:???
obj:???
obj:???
}
+91
View File
@@ -0,0 +1,91 @@
/^[\w]+/
*** Failers
École
/^[\w]+/Lfrench
École
/^[\w]+/
*** Failers
École
/^[\W]+/
École
/^[\W]+/Lfrench
*** Failers
École
/[\b]/
\b
*** Failers
a
/[\b]/Lfrench
\b
*** Failers
a
/^\w+/
*** Failers
École
/^\w+/Lfrench
École
/(.+)\b(.+)/
École
/(.+)\b(.+)/Lfrench
*** Failers
École
/École/i
École
*** Failers
école
/École/iLfrench
École
école
/\w/IS
/\w/ISLfrench
/^[\xc8-\xc9]/iLfrench
École
école
/^[\xc8-\xc9]/Lfrench
École
*** Failers
école
/\W+/Lfrench
>>>\xaa<<<
>>>\xba<<<
/[\W]+/Lfrench
>>>\xaa<<<
>>>\xba<<<
/[^[:alpha:]]+/Lfrench
>>>\xaa<<<
>>>\xba<<<
/\w+/Lfrench
>>>\xaa<<<
>>>\xba<<<
/[\w]+/Lfrench
>>>\xaa<<<
>>>\xba<<<
/[[:alpha:]]+/Lfrench
>>>\xaa<<<
>>>\xba<<<
/[[:alpha:]][[:lower:]][[:upper:]]/DZLfrench
/ End of testinput3 /
+166
View File
@@ -0,0 +1,166 @@
/^[\w]+/
*** Failers
No match
École
No match
/^[\w]+/Lfrench
École
0: École
/^[\w]+/
*** Failers
No match
École
No match
/^[\W]+/
École
0: \xc9
/^[\W]+/Lfrench
*** Failers
0: ***
École
No match
/[\b]/
\b
0: \x08
*** Failers
No match
a
No match
/[\b]/Lfrench
\b
0: \x08
*** Failers
No match
a
No match
/^\w+/
*** Failers
No match
École
No match
/^\w+/Lfrench
École
0: École
/(.+)\b(.+)/
École
0: \xc9cole
1: \xc9
2: cole
/(.+)\b(.+)/Lfrench
*** Failers
0: *** Failers
1: ***
2: Failers
École
No match
/École/i
École
0: \xc9cole
*** Failers
No match
école
No match
/École/iLfrench
École
0: École
école
0: école
/\w/IS
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
/\w/ISLfrench
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting chars: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
ƒ Š Œ Ž š œ ž Ÿ ª ² ³ µ ¹ º À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö
Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý
þ ÿ
/^[\xc8-\xc9]/iLfrench
École
0: É
école
0: é
/^[\xc8-\xc9]/Lfrench
École
0: É
*** Failers
No match
école
No match
/\W+/Lfrench
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[\W]+/Lfrench
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/[^[:alpha:]]+/Lfrench
>>>\xaa<<<
0: >>>
>>>\xba<<<
0: >>>
/\w+/Lfrench
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[\w]+/Lfrench
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]]+/Lfrench
>>>\xaa<<<
0: ª
>>>\xba<<<
0: º
/[[:alpha:]][[:lower:]][[:upper:]]/DZLfrench
------------------------------------------------------------------
Bra
[A-Za-z\x83\x8a\x8c\x8e\x9a\x9c\x9e\x9f\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff]
[a-z\x83\x9a\x9c\x9e\xaa\xb5\xba\xdf-\xf6\xf8-\xff]
[A-Z\x8a\x8c\x8e\x9f\xc0-\xd6\xd8-\xde]
Ket
End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char
/ End of testinput3 /