| # This set of tests checks the API, internals, and non-Perl stuff for UTF | |
| # support, including Unicode properties. However, tests that give different | |
| # results in 8-bit, 16-bit, and 32-bit modes are excluded (see tests 10 and | |
| # 12). | |
| #newline_default lf any anycrlf | |
| # PCRE2 and Perl disagree about the characteristics of certain Unicode | |
| # characters. For example, 061C was considered by Perl to be Arabic, though | |
| # it was not listed as such in the Unicode Scripts.txt file for Unicode 8. | |
| # However, it *is* in that file for Unicode 10, but when I came to re-check, | |
| # Perl had changed in the meantime, with 5.026 not recognizing it as Arabic. | |
| # 2066-2069 are graphic and printable according to Perl, though they are | |
| # actually "isolate" control characters. That is why the following tests are | |
| # here rather than in test 4. | |
| /^[\p{Arabic}]/utf | |
| \x{061c} | |
| 0: \x{61c} | |
| /^[[:graph:]]+$/utf,ucp | |
| \= Expect no match | |
| \x{61c} | |
| No match | |
| \x{2066} | |
| No match | |
| \x{2067} | |
| No match | |
| \x{2068} | |
| No match | |
| \x{2069} | |
| No match | |
| /^[[:print:]]+$/utf,ucp | |
| \= Expect no match | |
| \x{61c} | |
| No match | |
| \x{2066} | |
| No match | |
| \x{2067} | |
| No match | |
| \x{2068} | |
| No match | |
| \x{2069} | |
| No match | |
| /^[[:^graph:]]+$/utf,ucp | |
| \x{09}\x{0a}\x{1D}\x{20}\x{85}\x{a0}\x{61c}\x{1680} | |
| 0: \x{09}\x{0a}\x{1d} \x{85}\x{a0}\x{61c}\x{1680} | |
| \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} | |
| /^[[:^print:]]+$/utf,ucp | |
| \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} | |
| 0: \x{2068}\x{2069} | |
| # Perl does not consider U+180e to be a space character. It is true that it | |
| # does not appear in the Unicode PropList.txt file as such, but in many other | |
| # sources it is listed as a space, and has been treated as such in PCRE for | |
| # a long time. | |
| /^>[[:blank:]]*/utf,ucp | |
| >\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} | |
| /^A\s+Z/utf,ucp | |
| A\x{85}\x{180e}\x{2005}Z | |
| 0: A\x{85}\x{180e}\x{2005}Z | |
| /^A[\s]+Z/utf,ucp | |
| A\x{2005}Z | |
| 0: A\x{2005}Z | |
| A\x{85}\x{2005}Z | |
| 0: A\x{85}\x{2005}Z | |
| /^[[:graph:]]+$/utf,ucp | |
| \= Expect no match | |
| \x{180e} | |
| No match | |
| /^[[:print:]]+$/utf,ucp | |
| \x{180e} | |
| 0: \x{180e} | |
| /^[[:^graph:]]+$/utf,ucp | |
| \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} | |
| /^[[:^print:]]+$/utf,ucp | |
| \= Expect no match | |
| \x{180e} | |
| No match | |
| # End of U+180E tests. | |
| # --------------------------------------------------------------------- | |
| # Use no_start_optimize because the first code unit is different in 8-bit from | |
| # the wider modes. | |
| /\65535/IB,utf,no_start_optimize | |
| ------------------------------------------------------------------ | |
| Bra | |
| \x{1ad}35 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: no_start_optimize utf | |
| Optimizations: auto_possess,dotstar_anchor | |
| /\65536/IB,utf,no_start_optimize | |
| ------------------------------------------------------------------ | |
| Bra | |
| \x{1ad}36 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: no_start_optimize utf | |
| Optimizations: auto_possess,dotstar_anchor | |
| /\x{110000}/IB,utf | |
| Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large | |
| here: \x{110000 |<--| } | |
| /\o{4200000}/IB,utf | |
| Failed: error 134 at offset 10: character code point value in \x{} or \o{} is too large | |
| here: \o{4200000 |<--| } | |
| /\x{ffffffff}/utf | |
| Failed: error 134 at offset 11: character code point value in \x{} or \o{} is too large | |
| here: ...x{ffffffff |<--| } | |
| /\o{37777777777}/utf | |
| Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large | |
| here: ...7777777777 |<--| } | |
| /\x{100000000}/utf | |
| Failed: error 134 at offset 12: character code point value in \x{} or \o{} is too large | |
| here: ...{100000000 |<--| } | |
| /\o{77777777777}/utf | |
| Failed: error 134 at offset 14: character code point value in \x{} or \o{} is too large | |
| here: ...7777777777 |<--| } | |
| /\x{d800}/utf | |
| Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \x{d800 |<--| } | |
| /\o{154000}/utf | |
| Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \o{154000 |<--| } | |
| /\x{dfff}/utf | |
| Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \x{dfff |<--| } | |
| /\o{157777}/utf | |
| Failed: error 173 at offset 9: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \o{157777 |<--| } | |
| /\x{d7ff}/utf | |
| /\o{153777}/utf | |
| /\x{e000}/utf | |
| /\o{170000}/utf | |
| /^\x{100}a\x{1234}/utf | |
| \x{100}a\x{1234}bcd | |
| 0: \x{100}a\x{1234} | |
| /\x{0041}\x{2262}\x{0391}\x{002e}/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| A\x{2262}\x{391}. | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| First code unit = 'A' | |
| Last code unit = '.' | |
| Subject length lower bound = 4 | |
| \x{0041}\x{2262}\x{0391}\x{002e} | |
| 0: A\x{2262}\x{391}. | |
| /.{3,5}X/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| Any{3} | |
| Any{0,2} | |
| X | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| Last code unit = 'X' | |
| Subject length lower bound = 4 | |
| \x{212ab}\x{212ab}\x{212ab}\x{861}X | |
| 0: \x{212ab}\x{212ab}\x{212ab}\x{861}X | |
| /.{3,5}?/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| Any{3} | |
| Any{0,2}? | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| Subject length lower bound = 3 | |
| \x{212ab}\x{212ab}\x{212ab}\x{861} | |
| 0: \x{212ab}\x{212ab}\x{212ab} | |
| /^[ab]/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| [ab] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Compile options: utf | |
| Overall options: anchored utf | |
| Starting code units: a b | |
| Subject length lower bound = 1 | |
| bar | |
| 0: b | |
| \= Expect no match | |
| c | |
| No match | |
| \x{ff} | |
| No match | |
| \x{100} | |
| No match | |
| /\x{100}*(\d+|"(?1)")/utf | |
| 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" | |
| \= Expect no match | |
| \x{100}\x{100}abcd | |
| No match | |
| /\x{100}*/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| \x{100}*+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| May match empty string | |
| Options: utf | |
| Subject length lower bound = 0 | |
| /a\x{100}*/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| a | |
| \x{100}*+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| First code unit = 'a' | |
| Subject length lower bound = 1 | |
| /ab\x{100}*/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ab | |
| \x{100}*+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| First code unit = 'a' | |
| Last code unit = 'b' | |
| Subject length lower bound = 2 | |
| /[\x{200}-\x{100}]/utf | |
| Failed: error 108 at offset 16: range out of order in character class | |
| here: ...0}-\x{100} |<--| ] | |
| /[Ä-Ä]/utf | |
| \x{100} | |
| 0: \x{100} | |
| \x{104} | |
| 0: \x{104} | |
| \= Expect no match | |
| \x{105} | |
| No match | |
| \x{ff} | |
| No match | |
| /[\xFF]/IB | |
| ------------------------------------------------------------------ | |
| Bra | |
| \x{ff} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| First code unit = \xff | |
| Subject length lower bound = 1 | |
| >\xff< | |
| 0: \xff | |
| /[^\xFF]/IB | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x{ff}] (not) | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Subject length lower bound = 1 | |
| /[Ã-Ã]/utf | |
| Ã # Matches without Study | |
| 0: \x{d6} | |
| \x{d6} | |
| 0: \x{d6} | |
| /[Ã-Ã]/utf | |
| Ã <-- Same with Study | |
| 0: \x{d6} | |
| \x{d6} | |
| 0: \x{d6} | |
| /[\x{c4}-\x{dc}]/utf | |
| Ã # Matches without Study | |
| 0: \x{d6} | |
| \x{d6} | |
| 0: \x{d6} | |
| /[\x{c4}-\x{dc}]/utf | |
| Ã <-- Same with Study | |
| 0: \x{d6} | |
| \x{d6} | |
| 0: \x{d6} | |
| /[^\x{100}]abc(xyz(?1))/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x{100}] (not) | |
| abc | |
| CBra 1 | |
| xyz | |
| Recurse | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 1 | |
| Options: utf | |
| Last code unit = 'z' | |
| Subject length lower bound = 7 | |
| /(\x{100}(b(?2)c))?/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| Brazero | |
| CBra 1 | |
| \x{100} | |
| CBra 2 | |
| b | |
| Recurse | |
| c | |
| Ket | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 2 | |
| May match empty string | |
| Options: utf | |
| Subject length lower bound = 0 | |
| /(\x{100}(b(?2)c)){0,2}/IB,utf | |
| ------------------------------------------------------------------ | |
| 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 | |
| ------------------------------------------------------------------ | |
| Capture group count = 2 | |
| May match empty string | |
| Options: utf | |
| Subject length lower bound = 0 | |
| /(\x{100}(b(?1)c))?/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| Brazero | |
| CBra 1 | |
| \x{100} | |
| CBra 2 | |
| b | |
| Recurse | |
| c | |
| Ket | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 2 | |
| May match empty string | |
| Options: utf | |
| Subject length lower bound = 0 | |
| /(\x{100}(b(?1)c)){0,2}/IB,utf | |
| ------------------------------------------------------------------ | |
| 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 | |
| ------------------------------------------------------------------ | |
| Capture group count = 2 | |
| May match empty string | |
| Options: utf | |
| Subject length lower bound = 0 | |
| # Exercise the opcode forms that find_bracket() must skip while resolving a | |
| # recursive subpattern reference during compilation. | |
| /[^\x{100}](a)(?1)/I,utf | |
| Capture group count = 1 | |
| Options: utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /(?C'name')(a)(?1)/I | |
| Capture group count = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /(?<=a)(a)(?1)/I | |
| Capture group count = 1 | |
| Max lookbehind = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}*(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}*?(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}+(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /\p{L}+?(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /\p{L}?(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}??(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}*+(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}++(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /\p{L}?+(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\p{L}{1,3}(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /\p{L}{1,3}?(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /\p{L}{1,3}+(a)(?1)/I,utf,ucp | |
| Capture group count = 1 | |
| Options: ucp utf | |
| Last code unit = 'a' | |
| Subject length lower bound = 3 | |
| /(*MARK:A)(a)(?1)/I | |
| Capture group count = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /(*COMMIT:A)(a)(?1)/I | |
| Capture group count = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /(*PRUNE:A)(a)(?1)/I | |
| Capture group count = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /(*SKIP:A)(a)(?1)/I | |
| Capture group count = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /(*THEN:A)(a)(?1)/I | |
| Capture group count = 1 | |
| First code unit = 'a' | |
| Subject length lower bound = 2 | |
| /\W/utf | |
| A.B | |
| 0: . | |
| A\x{100}B | |
| 0: \x{100} | |
| /\w/utf | |
| \x{100}X | |
| 0: X | |
| # Use no_start_optimize because the first code unit is different in 8-bit from | |
| # the wider modes. | |
| /^\á´/IB,utf,no_start_optimize | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| \x{1234} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Compile options: no_start_optimize utf | |
| Overall options: anchored no_start_optimize utf | |
| Optimizations: auto_possess,dotstar_anchor | |
| /()()()()()()()()()() | |
| ()()()()()()()()()() | |
| ()()()()()()()()()() | |
| ()()()()()()()()()() | |
| A (x) (?41) B/x,utf | |
| 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}]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| [\x{100}-\x{150}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /^[\QÄ\E-\QÅ\E]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| [\x{100}-\x{150}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /^abc./gmx,newline=any,utf | |
| 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.$/gmx,newline=any,utf | |
| 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/bsr=unicode,utf | |
| 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 | |
| \= Expect no match | |
| a\n\rb | |
| No match | |
| /^a.b/newline=any,utf | |
| a\x0bb | |
| No match | |
| a\x0cb | |
| No match | |
| a\x{2028}b | |
| No match | |
| a\x{2029}b | |
| No match | |
| /(?<=.)\R/bsr=unicode,newline=any,utf | |
| a\x{2028} | |
| 0: \x{2028} | |
| a\x{2029} | |
| 0: \x{2029} | |
| a\r\n | |
| 0: \x{0d}\x{0a} | |
| /^a\R*b/bsr=unicode,utf | |
| 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/bsr=unicode,utf | |
| 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 | |
| \= Expect no match | |
| ab | |
| No match | |
| /^a\R{1,3}b/bsr=unicode,utf | |
| 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 | |
| \= Expect no match | |
| a\n\n\n\rb | |
| No match | |
| a\r | |
| No match | |
| /\H\h\V\v/utf | |
| X X\x0a | |
| 0: X X\x{0a} | |
| X\x09X\x0b | |
| 0: X\x{09}X\x{0b} | |
| \= Expect no match | |
| \x{a0} X\x0a | |
| No match | |
| /\H*\h+\V?\v{3,4}/utf | |
| \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} | |
| \= Expect no match | |
| \x09\x20\x{a0}\x0a\x0b | |
| No match | |
| /\H\h\V\v/utf | |
| \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} | |
| \= Expect no match | |
| \x{2009} X\x0a | |
| No match | |
| /\H*\h+\V?\v{3,4}/utf | |
| \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} | |
| \= Expect no match | |
| \x09\x{200a}\x{a0}\x{2028}\x0b | |
| No match | |
| /[\h]/B,utf | |
| ------------------------------------------------------------------ | |
| 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,}/B,utf | |
| ------------------------------------------------------------------ | |
| 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]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x0a-\x0d\x85\x{2028}-\x{2029}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\H]/B,utf | |
| ------------------------------------------------------------------ | |
| 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]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /.*$/newline=any,utf | |
| \x{1ec5} | |
| 0: \x{1ec5} | |
| /a\Rb/I,bsr=anycrlf,utf | |
| Capture group count = 0 | |
| Options: utf | |
| \R matches CR, LF, or CRLF | |
| First code unit = 'a' | |
| Last code unit = 'b' | |
| Subject length lower bound = 3 | |
| a\rb | |
| 0: a\x{0d}b | |
| a\nb | |
| 0: a\x{0a}b | |
| a\r\nb | |
| 0: a\x{0d}\x{0a}b | |
| \= Expect no match | |
| a\x{85}b | |
| No match | |
| a\x0bb | |
| No match | |
| /a\Rb/I,bsr=unicode,utf | |
| Capture group count = 0 | |
| Options: utf | |
| \R matches any Unicode newline | |
| First code unit = 'a' | |
| Last code unit = 'b' | |
| Subject length lower bound = 3 | |
| 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 | |
| /a\R?b/I,bsr=anycrlf,utf | |
| Capture group count = 0 | |
| Options: utf | |
| \R matches CR, LF, or CRLF | |
| First code unit = 'a' | |
| Last code unit = 'b' | |
| Subject length lower bound = 2 | |
| a\rb | |
| 0: a\x{0d}b | |
| a\nb | |
| 0: a\x{0a}b | |
| a\r\nb | |
| 0: a\x{0d}\x{0a}b | |
| \= Expect no match | |
| a\x{85}b | |
| No match | |
| a\x0bb | |
| No match | |
| /a\R?b/I,bsr=unicode,utf | |
| Capture group count = 0 | |
| Options: utf | |
| \R matches any Unicode newline | |
| First code unit = 'a' | |
| Last code unit = 'b' | |
| Subject length lower bound = 2 | |
| 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 | |
| /.*a.*=.b.*/utf,newline=any | |
| QQQ\x{2029}ABCaXYZ=!bPQR | |
| 0: ABCaXYZ=!bPQR | |
| \= Expect no match | |
| a\x{2029}b | |
| No match | |
| \x61\xe2\x80\xa9\x62 | |
| No match | |
| /[[:a\x{100}b:]]/utf | |
| Failed: error 130 at offset 14: unknown POSIX class name | |
| here: ...\x{100}b:] |<--| ] | |
| /[\p{InvalidOrBadProperty}]/ | |
| Failed: error 147 at offset 25: unknown property after \P or \p | |
| here: ...dProperty} |<--| ] | |
| /a[^]b/utf,allow_empty_class,match_unset_backref | |
| a\x{1234}b | |
| 0: a\x{1234}b | |
| a\nb | |
| 0: a\x{0a}b | |
| \= Expect no match | |
| ab | |
| No match | |
| /a[^]+b/utf,allow_empty_class,match_unset_backref | |
| aXb | |
| 0: aXb | |
| a\nX\nX\x{1234}b | |
| 0: a\x{0a}X\x{0a}X\x{1234}b | |
| \= Expect no match | |
| ab | |
| No match | |
| /(\x{de})\1/ | |
| \x{de}\x{de} | |
| 0: \xde\xde | |
| 1: \xde | |
| /X/newline=any,utf,firstline | |
| A\x{1ec5}ABCXYZ | |
| 0: X | |
| /Xa{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /Xa{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /Xa{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X\x{123}{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X\x{123}{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X\x{123}{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X\x{123}{2,4}b/utf | |
| \= Expect no match | |
| Xx\=ps | |
| No match | |
| X\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}\x{123}\x{123}x\=ps | |
| No match | |
| /X\x{123}{2,4}?b/utf | |
| \= Expect no match | |
| Xx\=ps | |
| No match | |
| X\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}\x{123}\x{123}x\=ps | |
| No match | |
| /X\x{123}{2,4}+b/utf | |
| \= Expect no match | |
| Xx\=ps | |
| No match | |
| X\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}\x{123}x\=ps | |
| No match | |
| X\x{123}\x{123}\x{123}\x{123}x\=ps | |
| No match | |
| /X\d{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| X3\=ps | |
| Partial match: X3 | |
| X33\=ps | |
| Partial match: X33 | |
| X333\=ps | |
| Partial match: X333 | |
| X3333\=ps | |
| Partial match: X3333 | |
| /X\d{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| X3\=ps | |
| Partial match: X3 | |
| X33\=ps | |
| Partial match: X33 | |
| X333\=ps | |
| Partial match: X333 | |
| X3333\=ps | |
| Partial match: X3333 | |
| /X\d{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| X3\=ps | |
| Partial match: X3 | |
| X33\=ps | |
| Partial match: X33 | |
| X333\=ps | |
| Partial match: X333 | |
| X3333\=ps | |
| Partial match: X3333 | |
| /X\D{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X\D{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X\D{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X\D{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X\D{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X\D{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X[abc]{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X[abc]{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X[abc]{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| Xa\=ps | |
| Partial match: Xa | |
| Xaa\=ps | |
| Partial match: Xaa | |
| Xaaa\=ps | |
| Partial match: Xaaa | |
| Xaaaa\=ps | |
| Partial match: Xaaaa | |
| /X[abc\x{123}]{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X[abc\x{123}]{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X[abc\x{123}]{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X[^a]{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| Xz\=ps | |
| Partial match: Xz | |
| Xzz\=ps | |
| Partial match: Xzz | |
| Xzzz\=ps | |
| Partial match: Xzzz | |
| Xzzzz\=ps | |
| Partial match: Xzzzz | |
| /X[^a]{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| Xz\=ps | |
| Partial match: Xz | |
| Xzz\=ps | |
| Partial match: Xzz | |
| Xzzz\=ps | |
| Partial match: Xzzz | |
| Xzzzz\=ps | |
| Partial match: Xzzzz | |
| /X[^a]{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| Xz\=ps | |
| Partial match: Xz | |
| Xzz\=ps | |
| Partial match: Xzz | |
| Xzzz\=ps | |
| Partial match: Xzzz | |
| Xzzzz\=ps | |
| Partial match: Xzzzz | |
| /X[^a]{2,4}b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X[^a]{2,4}?b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /X[^a]{2,4}+b/utf | |
| X\=ps | |
| Partial match: X | |
| X\x{123}\=ps | |
| Partial match: X\x{123} | |
| X\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123} | |
| X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: X\x{123}\x{123}\x{123}\x{123} | |
| /(Y)X\1{2,4}b/utf | |
| YX\=ps | |
| Partial match: YX | |
| YXY\=ps | |
| Partial match: YXY | |
| YXYY\=ps | |
| Partial match: YXYY | |
| YXYYY\=ps | |
| Partial match: YXYYY | |
| YXYYYY\=ps | |
| Partial match: YXYYYY | |
| /(Y)X\1{2,4}?b/utf | |
| YX\=ps | |
| Partial match: YX | |
| YXY\=ps | |
| Partial match: YXY | |
| YXYY\=ps | |
| Partial match: YXYY | |
| YXYYY\=ps | |
| Partial match: YXYYY | |
| YXYYYY\=ps | |
| Partial match: YXYYYY | |
| /(Y)X\1{2,4}+b/utf | |
| YX\=ps | |
| Partial match: YX | |
| YXY\=ps | |
| Partial match: YXY | |
| YXYY\=ps | |
| Partial match: YXYY | |
| YXYYY\=ps | |
| Partial match: YXYYY | |
| YXYYYY\=ps | |
| Partial match: YXYYYY | |
| /(\x{123})X\1{2,4}b/utf | |
| \x{123}X\=ps | |
| Partial match: \x{123}X | |
| \x{123}X\x{123}\=ps | |
| Partial match: \x{123}X\x{123} | |
| \x{123}X\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123} | |
| \x{123}X\x{123}\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123}\x{123} | |
| \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123} | |
| /(\x{123})X\1{2,4}?b/utf | |
| \x{123}X\=ps | |
| Partial match: \x{123}X | |
| \x{123}X\x{123}\=ps | |
| Partial match: \x{123}X\x{123} | |
| \x{123}X\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123} | |
| \x{123}X\x{123}\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123}\x{123} | |
| \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123} | |
| /(\x{123})X\1{2,4}+b/utf | |
| \x{123}X\=ps | |
| Partial match: \x{123}X | |
| \x{123}X\x{123}\=ps | |
| Partial match: \x{123}X\x{123} | |
| \x{123}X\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123} | |
| \x{123}X\x{123}\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123}\x{123} | |
| \x{123}X\x{123}\x{123}\x{123}\x{123}\=ps | |
| Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123} | |
| /\bthe cat\b/utf | |
| the cat\=ps | |
| 0: the cat | |
| the cat\=ph | |
| Partial match: the cat | |
| /abcd*/utf | |
| xxxxabcd\=ps | |
| 0: abcd | |
| xxxxabcd\=ph | |
| Partial match: abcd | |
| /abcd*/i,utf | |
| xxxxabcd\=ps | |
| 0: abcd | |
| xxxxabcd\=ph | |
| Partial match: abcd | |
| XXXXABCD\=ps | |
| 0: ABCD | |
| XXXXABCD\=ph | |
| Partial match: ABCD | |
| /abc\d*/utf | |
| xxxxabc1\=ps | |
| 0: abc1 | |
| xxxxabc1\=ph | |
| Partial match: abc1 | |
| /(a)bc\1*/utf | |
| xxxxabca\=ps | |
| 0: abca | |
| 1: a | |
| xxxxabca\=ph | |
| Partial match: abca | |
| /abc[de]*/utf | |
| xxxxabcde\=ps | |
| 0: abcde | |
| xxxxabcde\=ph | |
| Partial match: abcde | |
| /X\W{3}X/utf | |
| X\=ps | |
| Partial match: X | |
| /\sxxx\s/utf,tables=2 | |
| 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/utf,tables=2 | |
| \x{a2} \x{84} | |
| 0: \x{a2} \x{84} | |
| 'A#Ñ Ñ'Bx,newline=any,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| A | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 'A#Ñ Ñ | |
| PQ'Bx,newline=any,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| APQ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /a+#Ñ aa | |
| z#XX?/Bx,newline=any,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| a++ | |
| z | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /a+#Ñ aa | |
| z#Ñ ?/Bx,newline=any,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| a++ | |
| z | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\g{A}xxx#bXX(?'A'123) (?'A'456)/Bx,newline=any,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| \g{1} | |
| xxx | |
| CBra 1 | |
| 456 | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\g{A}xxx#bÑ (?'A'123) (?'A'456)/Bx,newline=any,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| \g{1} | |
| xxx | |
| CBra 1 | |
| 456 | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /(\R*)(.)/s,utf | |
| \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)*(.)/s,utf | |
| \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}]+/Ii,utf | |
| Capture group count = 0 | |
| Options: caseless utf | |
| Subject length lower bound = 1 | |
| /[^\x{1234}]+?/Ii,utf | |
| Capture group count = 0 | |
| Options: caseless utf | |
| Subject length lower bound = 1 | |
| /[^\x{1234}]++/Ii,utf | |
| Capture group count = 0 | |
| Options: caseless utf | |
| Subject length lower bound = 1 | |
| /[^\x{1234}]{2}/Ii,utf | |
| Capture group count = 0 | |
| Options: caseless utf | |
| Subject length lower bound = 2 | |
| /f.*/ | |
| for\=ph | |
| Partial match: for | |
| /f.*/s | |
| for\=ph | |
| Partial match: for | |
| /f.*/utf | |
| for\=ph | |
| Partial match: for | |
| /f.*/s,utf | |
| for\=ph | |
| Partial match: for | |
| /\x{d7ff}\x{e000}/utf | |
| /\x{d800}/utf | |
| Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \x{d800 |<--| } | |
| /\x{dfff}/utf | |
| Failed: error 173 at offset 7: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \x{dfff |<--| } | |
| /\h+/utf | |
| \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}]+/B,utf | |
| ------------------------------------------------------------------ | |
| 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+/utf | |
| \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}]+/B,utf | |
| ------------------------------------------------------------------ | |
| 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 | |
| ------------------------------------------------------------------ | |
| \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+/utf | |
| \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}]+/B,utf | |
| ------------------------------------------------------------------ | |
| 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+/utf | |
| \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}]+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{202a}-\x{10ffff}]++ | |
| 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+/bsr=unicode,utf | |
| \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/utf | |
| ab\=ps | |
| Partial match: ab | |
| aba\=ps | |
| Partial match: aba | |
| abab\=ps | |
| 0: abab | |
| 1: ab | |
| /(..)\1/i,utf | |
| ab\=ps | |
| Partial match: ab | |
| abA\=ps | |
| Partial match: abA | |
| aBAb\=ps | |
| 0: aBAb | |
| 1: aB | |
| /(..)\1{2,}/utf | |
| ab\=ps | |
| Partial match: ab | |
| aba\=ps | |
| Partial match: aba | |
| abab\=ps | |
| Partial match: abab | |
| ababa\=ps | |
| Partial match: ababa | |
| ababab\=ps | |
| 0: ababab | |
| 1: ab | |
| ababab\=ph | |
| Partial match: ababab | |
| abababa\=ps | |
| 0: ababab | |
| 1: ab | |
| abababa\=ph | |
| Partial match: abababa | |
| /(..)\1{2,}/i,utf | |
| ab\=ps | |
| Partial match: ab | |
| aBa\=ps | |
| Partial match: aBa | |
| aBAb\=ps | |
| Partial match: aBAb | |
| AbaBA\=ps | |
| Partial match: AbaBA | |
| abABAb\=ps | |
| 0: abABAb | |
| 1: ab | |
| aBAbaB\=ph | |
| Partial match: aBAbaB | |
| abABabA\=ps | |
| 0: abABab | |
| 1: ab | |
| abaBABa\=ph | |
| Partial match: abaBABa | |
| /(..)\1{2,}?x/i,utf | |
| ab\=ps | |
| Partial match: ab | |
| abA\=ps | |
| Partial match: abA | |
| aBAb\=ps | |
| Partial match: aBAb | |
| abaBA\=ps | |
| Partial match: abaBA | |
| abAbaB\=ps | |
| Partial match: abAbaB | |
| abaBabA\=ps | |
| Partial match: abaBabA | |
| abAbABaBx\=ps | |
| 0: abAbABaBx | |
| 1: ab | |
| /./utf,newline=crlf | |
| \r\=ps | |
| 0: \x{0d} | |
| \r\=ph | |
| Partial match: \x{0d} | |
| /.{2,3}/utf,newline=crlf | |
| \r\=ps | |
| Partial match: \x{0d} | |
| \r\=ph | |
| Partial match: \x{0d} | |
| \r\r\=ps | |
| 0: \x{0d}\x{0d} | |
| \r\r\=ph | |
| Partial match: \x{0d}\x{0d} | |
| \r\r\r\=ps | |
| 0: \x{0d}\x{0d}\x{0d} | |
| \r\r\r\=ph | |
| Partial match: \x{0d}\x{0d}\x{0d} | |
| /.{2,3}?/utf,newline=crlf | |
| \r\=ps | |
| Partial match: \x{0d} | |
| \r\=ph | |
| Partial match: \x{0d} | |
| \r\r\=ps | |
| 0: \x{0d}\x{0d} | |
| \r\r\=ph | |
| Partial match: \x{0d}\x{0d} | |
| \r\r\r\=ps | |
| 0: \x{0d}\x{0d} | |
| \r\r\r\=ph | |
| 0: \x{0d}\x{0d} | |
| /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x{100}] (not) | |
| [^\x{1234}] (not) | |
| [^\x{ffff}] (not) | |
| [^\x{10000}] (not) | |
| [^\x{10ffff}] (not) | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\x{100}][^\x{1234}][^\x{ffff}][^\x{10000}][^\x{10ffff}]/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i [^\x{100}] (not) | |
| /i [^\x{1234}] (not) | |
| /i [^\x{ffff}] (not) | |
| /i [^\x{10000}] (not) | |
| /i [^\x{10ffff}] (not) | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x{100}]* (not) | |
| [^\x{10000}]+ (not) | |
| [^\x{10ffff}]?? (not) | |
| [^\x{8000}]{4} (not) | |
| [^\x{8000}]* (not) | |
| [^\x{7fff}]{2} (not) | |
| [^\x{7fff}]{0,7}? (not) | |
| [^\x{fffff}]{5} (not) | |
| [^\x{fffff}]?+ (not) | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\x{100}]*[^\x{10000}]+[^\x{10ffff}]??[^\x{8000}]{4,}[^\x{7fff}]{2,9}?[^\x{fffff}]{5,6}+/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i [^\x{100}]* (not) | |
| /i [^\x{10000}]+ (not) | |
| /i [^\x{10ffff}]?? (not) | |
| /i [^\x{8000}]{4} (not) | |
| /i [^\x{8000}]* (not) | |
| /i [^\x{7fff}]{2} (not) | |
| /i [^\x{7fff}]{0,7}? (not) | |
| /i [^\x{fffff}]{5} (not) | |
| /i [^\x{fffff}]?+ (not) | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /(?<=\x{1234}\x{1234})\bxy/I,utf | |
| Capture group count = 0 | |
| Max lookbehind = 2 | |
| Options: utf | |
| First code unit = 'x' | |
| Last code unit = 'y' | |
| Subject length lower bound = 2 | |
| /(?<!^)ETA/utf | |
| \= Expect no match | |
| ETA | |
| No match | |
| /\u0100/B,utf,alt_bsux,allow_empty_class,match_unset_backref | |
| ------------------------------------------------------------------ | |
| Bra | |
| \x{100} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\u0100-\u0200]/B,utf,alt_bsux,allow_empty_class,match_unset_backref | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x{100}-\x{200}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\ud800/utf,alt_bsux,allow_empty_class,match_unset_backref | |
| Failed: error 173 at offset 6: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) | |
| here: \ud800 |<--| | |
| /^\u{0000000000010ffff}/utf,extra_alt_bsux | |
| \x{10ffff} | |
| 0: \x{10ffff} | |
| /\u{ 1bb1}/utf,extra_alt_bsux | |
| u{ 1bb1} | |
| 0: u{ 1bb1} | |
| \= Expect no match | |
| \x{1bb1} | |
| No match | |
| /\u/utf,alt_bsux | |
| \\u | |
| 0: u | |
| /^a+[a\x{200}]/B,utf | |
| ------------------------------------------------------------------ | |
| 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]/B,utf | |
| ------------------------------------------------------------------ | |
| 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 | |
| ------------------------------------------------------------------ | |
| /[\p{L}]/IB | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Subject length lower bound = 1 | |
| /[\p{^L}]/IB | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Subject length lower bound = 1 | |
| /[\P{L}]/IB | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Subject length lower bound = 1 | |
| /[\P{^L}]/IB | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Subject length lower bound = 1 | |
| /[abc\p{L}\x{0660}]/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}\x{660}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| Subject length lower bound = 1 | |
| /[\p{Nd}]/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| Subject length lower bound = 1 | |
| 1234 | |
| 0: 1 | |
| /[\p{Nd}+-]+/IB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [+\-0-9\p{Nd}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: utf | |
| Subject length lower bound = 1 | |
| 1234 | |
| 0: 1234 | |
| 12-34 | |
| 0: 12-34 | |
| 12+\x{661}-34 | |
| 0: 12+\x{661}-34 | |
| \= Expect no match | |
| abcd | |
| No match | |
| /(?:[\PPa*]*){8,}/ | |
| /[\P{Any}]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| [] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\P{Any}\P{Any}]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\P{Any}\E]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| [] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Any}#\P{Any}![\p{Any}]:[\P{Any}]@[\p{Any}a-z]%[\P{Any}c]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| # | |
| [] | |
| ! | |
| AllAny | |
| : | |
| [] | |
| @ | |
| AllAny | |
| % | |
| [c] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\P{Any}\P{Any}\P{Any}]![\p{Any}\p{Any}\p{Any}]:[^\P{Any}\P{Any}]@[^\p{Any}\p{Any}]%[^\p{Any}\P{Any}]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [] | |
| ! | |
| AllAny | |
| : | |
| AllAny | |
| @ | |
| [] | |
| % | |
| [] | |
| 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}+/B,utf | |
| ------------------------------------------------------------------ | |
| 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}/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Zl | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Lu}{3}+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Lu {3} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\pL{2}+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop L {2} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Cc}{2}+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Cc {2} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /^\p{Cf}/utf | |
| \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}/utf | |
| \x{dfff}\=no_utf_check | |
| 0: \x{dfff} | |
| \= Expect no match | |
| \x{09f} | |
| No match | |
| /^\p{Mn}/utf | |
| \x{1a1b} | |
| 0: \x{1a1b} | |
| /^\p{Pe}/utf | |
| \x{2309} | |
| 0: \x{2309} | |
| \x{230b} | |
| 0: \x{230b} | |
| /^\p{Ps}/utf | |
| \x{2308} | |
| 0: \x{2308} | |
| \x{230a} | |
| 0: \x{230a} | |
| /^\p{Sc}+/utf | |
| $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6} | |
| 0: $\x{a2}\x{a3}\x{a4}\x{a5} | |
| \x{9f2} | |
| 0: \x{9f2} | |
| \= Expect no match | |
| X | |
| No match | |
| \x{2c2} | |
| No match | |
| /^\p{Zs}/utf | |
| \ \ | |
| 0: | |
| \x{a0} | |
| 0: \x{a0} | |
| \x{1680} | |
| 0: \x{1680} | |
| \x{2000} | |
| 0: \x{2000} | |
| \x{2001} | |
| 0: \x{2001} | |
| \= Expect no match | |
| \x{2028} | |
| No match | |
| \x{200d} | |
| No match | |
| /[\x{c0}\x{391}]/i,utf | |
| \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}+)/i,utf | |
| \x{023a}\x{2c65}\x{0130} | |
| 0: \x{23a}\x{2c65}\x{130} | |
| 1: \x{130} | |
| /^\x{023a}+([^X])/i,utf | |
| \x{023a}\x{2c65}X | |
| 0: \x{23a}\x{2c65} | |
| 1: \x{2c65} | |
| /\x{c0}+\x{116}+/i,utf | |
| \x{c0}\x{e0}\x{116}\x{117} | |
| 0: \x{c0}\x{e0}\x{116}\x{117} | |
| /[\x{c0}\x{116}]+/i,utf | |
| \x{c0}\x{e0}\x{116}\x{117} | |
| 0: \x{c0}\x{e0}\x{116}\x{117} | |
| /(\x{de})\1/i,utf | |
| \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}$/i,utf | |
| \x{c0} | |
| 0: \x{c0} | |
| \x{e0} | |
| 0: \x{e0} | |
| /^\x{e0}$/i,utf | |
| \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}])/utf | |
| \x{c0} | |
| 0: \x{c0} | |
| 1: \x{c0} | |
| \x{e0} | |
| 0: \x{e0} | |
| 1: \x{e0} | |
| /(?i:[\x{c0}])/utf | |
| \x{c0} | |
| 0: \x{c0} | |
| \x{e0} | |
| 0: \x{e0} | |
| # These are PCRE's extra properties to help with Unicodizing \d etc. | |
| /^\p{Xan}/utf | |
| ABCD | |
| 0: A | |
| 1234 | |
| 0: 1 | |
| \x{6ca} | |
| 0: \x{6ca} | |
| \x{a6c} | |
| 0: \x{a6c} | |
| \x{10a7} | |
| 0: \x{10a7} | |
| \= Expect no match | |
| _ABC | |
| No match | |
| /^\p{Xan}+/utf | |
| ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} | |
| \= Expect no match | |
| _ABC | |
| No match | |
| /^\p{Xan}+?/utf | |
| \x{6ca}\x{a6c}\x{10a7}_ | |
| 0: \x{6ca} | |
| /^\p{Xan}*/utf | |
| ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} | |
| /^\p{Xan}{2,9}/utf | |
| ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| 0: ABCD1234\x{6ca} | |
| /^\p{Xan}{2,9}?/utf | |
| \x{6ca}\x{a6c}\x{10a7}_ | |
| 0: \x{6ca}\x{a6c} | |
| /^[\p{Xan}]/utf | |
| ABCD1234_ | |
| 0: A | |
| 1234abcd_ | |
| 0: 1 | |
| \x{6ca} | |
| 0: \x{6ca} | |
| \x{a6c} | |
| 0: \x{a6c} | |
| \x{10a7} | |
| 0: \x{10a7} | |
| \= Expect no match | |
| _ABC | |
| No match | |
| /^[\p{Xan}]+/utf | |
| ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| 0: ABCD1234\x{6ca}\x{a6c}\x{10a7} | |
| \= Expect no match | |
| _ABC | |
| No match | |
| /^>\p{Xsp}/utf | |
| >\x{1680}\x{2028}\x{0b} | |
| 0: >\x{1680} | |
| >\x{a0} | |
| 0: >\x{a0} | |
| \= Expect no match | |
| \x{0b} | |
| No match | |
| /^>\p{Xsp}+/utf | |
| > \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}+?/utf | |
| >\x{1680}\x{2028}\x{0b} | |
| 0: >\x{1680} | |
| /^>\p{Xsp}*/utf | |
| > \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}/utf | |
| > \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}?/utf | |
| > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} | |
| 0: > \x{09} | |
| /^>[\p{Xsp}]/utf | |
| >\x{2028}\x{0b} | |
| 0: >\x{2028} | |
| /^>[\p{Xsp}]+/utf | |
| > \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}/utf | |
| >\x{1680}\x{2028}\x{0b} | |
| 0: >\x{1680} | |
| >\x{a0} | |
| 0: >\x{a0} | |
| \= Expect no match | |
| \x{0b} | |
| No match | |
| /^>\p{Xps}+/utf | |
| > \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}+?/utf | |
| >\x{1680}\x{2028}\x{0b} | |
| 0: >\x{1680} | |
| /^>\p{Xps}*/utf | |
| > \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}/utf | |
| > \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}?/utf | |
| > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b} | |
| 0: > \x{09} | |
| /^>[\p{Xps}]/utf | |
| >\x{2028}\x{0b} | |
| 0: >\x{2028} | |
| /^>[\p{Xps}]+/utf | |
| > \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}/utf | |
| ABCD | |
| 0: A | |
| 1234 | |
| 0: 1 | |
| \x{6ca} | |
| 0: \x{6ca} | |
| \x{a6c} | |
| 0: \x{a6c} | |
| \x{10a7} | |
| 0: \x{10a7} | |
| _ABC | |
| 0: _ | |
| \= Expect no match | |
| [] | |
| No match | |
| /^\p{Xwd}+/utf | |
| ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| /^\p{Xwd}+?/utf | |
| \x{6ca}\x{a6c}\x{10a7}_ | |
| 0: \x{6ca} | |
| /^\p{Xwd}*/utf | |
| ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_ | |
| /^\p{Xwd}{2,9}/utf | |
| A_B12\x{6ca}\x{a6c}\x{10a7} | |
| 0: A_B12\x{6ca}\x{a6c}\x{10a7} | |
| /^\p{Xwd}{2,9}?/utf | |
| \x{6ca}\x{a6c}\x{10a7}_ | |
| 0: \x{6ca}\x{a6c} | |
| /^[\p{Xwd}]/utf | |
| ABCD1234_ | |
| 0: A | |
| 1234abcd_ | |
| 0: 1 | |
| \x{6ca} | |
| 0: \x{6ca} | |
| \x{a6c} | |
| 0: \x{a6c} | |
| \x{10a7} | |
| 0: \x{10a7} | |
| _ABC | |
| 0: _ | |
| \= Expect no match | |
| [] | |
| No match | |
| /^[\p{Xwd}]+/utf | |
| 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}]+/utf | |
| !.+\x{019}\x{482}AB | |
| 0: !.+\x{19}\x{482} | |
| /^[\p{^Xwd}]+/utf | |
| !.+\x{019}\x{589}AB | |
| 0: !.+\x{19}\x{589} | |
| /[\D]/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 1\x{3c8}2 | |
| 0: \x{3c8} | |
| /[\d]/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| >\x{6f4}< | |
| 0: \x{6f4} | |
| /[\S]/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{Xsp}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{1680}\x{6f4}\x{1680} | |
| 0: \x{6f4} | |
| /[\s]/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Xsp}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| >\x{1680}< | |
| 0: \x{1680} | |
| /[\W]/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{Xwd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A\x{1735}B | |
| 0: \x{1735} | |
| /[\w]/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Xwd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| >\x{1723}< | |
| 0: \x{1723} | |
| /\D/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| notprop Nd | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 1\x{3c8}2 | |
| 0: \x{3c8} | |
| /\d/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Nd | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| >\x{6f4}< | |
| 0: \x{6f4} | |
| /\S/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| notprop Xsp | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{1680}\x{6f4}\x{1680} | |
| 0: \x{6f4} | |
| /\s/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xsp | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| >\x{1680}> | |
| 0: \x{1680} | |
| /\W/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| notprop Xwd | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A\x{1735}B | |
| 0: \x{1735} | |
| /\w/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xwd | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| >\x{1723}< | |
| 0: \x{1723} | |
| /[[:alpha:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:lower:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Ll}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:upper:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:alnum:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Xan}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:ascii:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\x7f] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:cntrl:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Cc}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:digit:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:digit:]]/B,ucp,ascii_digit | |
| ------------------------------------------------------------------ | |
| Bra | |
| [0-9] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:graph:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [[:graph:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:print:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [[:print:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:punct:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [[:punct:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:space:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Xps}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:word:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Xwd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:xdigit:]]/B,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [[:xdigit:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:xdigit:]]/B,ucp,ascii_digit | |
| ------------------------------------------------------------------ | |
| Bra | |
| [0-9A-Fa-f] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| # Unicode properties for \b and \B | |
| /\b...\B/utf,ucp | |
| 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/utf | |
| abc_ | |
| 0: abc | |
| \= Expect no match | |
| \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/ucp | |
| 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:]]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{L}\P{Cc}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 123 | |
| 0: 123 | |
| abc | |
| 0: abc | |
| /[[:^cntrl:][:^alpha:]]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{Cc}\P{L}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 123 | |
| 0: 123 | |
| abc | |
| 0: abc | |
| /[[:alpha:]]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| abc | |
| 0: abc | |
| /[[:^alpha:]\S]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\P{L}\P{Xsp}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 123 | |
| 0: 123 | |
| abc | |
| 0: abc | |
| /[^\d]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| 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/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Lu ++ | |
| 9 | |
| prop Lu + | |
| B | |
| prop Lu ++ | |
| b | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| notprop Lu + | |
| 9 | |
| notprop Lu ++ | |
| B | |
| notprop Lu + | |
| b | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\P{Lu}+9\P{Lu}+B\P{Lu}+b/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| notprop Lu + | |
| 9 | |
| notprop Lu ++ | |
| B | |
| notprop Lu + | |
| b | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Han}+X\p{Greek}+\x{370}/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Han ++ | |
| X | |
| prop Greek + | |
| \x{370} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Xan}+!\p{Xan}+A/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xan ++ | |
| ! | |
| prop Xan + | |
| A | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Xsp}+!\p{Xsp}\t/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xsp ++ | |
| ! | |
| prop Xsp | |
| \x09 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Xps}+!\p{Xps}\t/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xps ++ | |
| ! | |
| prop Xps | |
| \x09 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{Xwd}+!\p{Xwd}_/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xwd ++ | |
| ! | |
| prop Xwd | |
| _ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /A+\p{N}A+\dB+\p{N}*B+\d*/B,ucp | |
| ------------------------------------------------------------------ | |
| 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/i,utf | |
| \= Expect no match | |
| \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65} | |
| No match | |
| /(ȺȺȺ)?\1/i,utf | |
| \= Expect no match | |
| ȺȺȺⱥⱥ | |
| No match | |
| /(\x{23a}\x{23a}\x{23a})?\1/i,utf | |
| \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/i,utf | |
| ȺȺȺⱥⱥⱥ | |
| 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/i,utf | |
| \= Expect no match | |
| \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65} | |
| No match | |
| /(ȺȺȺ)\1/i,utf | |
| \= Expect no match | |
| ȺȺȺⱥⱥ | |
| No match | |
| /(\x{23a}\x{23a}\x{23a})\1/i,utf | |
| \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/i,utf | |
| ȺȺȺⱥⱥⱥ | |
| 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/i,utf | |
| \x{2c65}\x{2c65}\x{23a}\x{23a} | |
| 0: \x{2c65}\x{2c65}\x{23a}\x{23a} | |
| 1: \x{2c65}\x{2c65} | |
| /(ⱥⱥ)\1/i,utf | |
| ⱥⱥȺȺ | |
| 0: \x{2c65}\x{2c65}\x{23a}\x{23a} | |
| 1: \x{2c65}\x{2c65} | |
| /(\x{23a}\x{23a}\x{23a})\1Y/i,utf | |
| 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/i,utf | |
| 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}]/utf | |
| \x{1bc0} | |
| 0: \x{1bc0} | |
| \x{1bff} | |
| 0: \x{1bff} | |
| \= Expect no match | |
| \x{1bf4} | |
| No match | |
| /^[\p{Brahmi}]/utf | |
| \x{11000} | |
| 0: \x{11000} | |
| \x{1106f} | |
| 0: \x{1106f} | |
| \= Expect no match | |
| \x{1104e} | |
| No match | |
| /^[\p{Mandaic}]/utf | |
| \x{840} | |
| 0: \x{840} | |
| \x{85e} | |
| 0: \x{85e} | |
| \= Expect no match | |
| \x{85c} | |
| No match | |
| \x{85d} | |
| No match | |
| /(\X*)(.)/s,utf | |
| A\x{300} | |
| 0: A | |
| 1: | |
| 2: A | |
| /^S(\X*)e(\X*)$/utf | |
| SteÌreÌo | |
| 0: Ste\x{301}re\x{301}o | |
| 1: te\x{301}r | |
| 2: \x{301}o | |
| /^\X/utf | |
| ÌreÌo | |
| 0: \x{301} | |
| /^a\X41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames | |
| aX41z | |
| 0: aX41z | |
| \= Expect no match | |
| aAz | |
| No match | |
| /\X/ | |
| a\=ps | |
| 0: a | |
| a\=ph | |
| Partial match: a | |
| /\Xa/ | |
| aa\=ps | |
| 0: aa | |
| aa\=ph | |
| 0: aa | |
| /\X{2}/ | |
| aa\=ps | |
| 0: aa | |
| aa\=ph | |
| Partial match: aa | |
| /\X+a/ | |
| a\=ps | |
| Partial match: a | |
| aa\=ps | |
| 0: aa | |
| aa\=ph | |
| Partial match: aa | |
| /\X+?a/ | |
| a\=ps | |
| Partial match: a | |
| ab\=ps | |
| Partial match: ab | |
| aa\=ps | |
| 0: aa | |
| aa\=ph | |
| 0: aa | |
| aba\=ps | |
| 0: aba | |
| # These Unicode 6.1.0 scripts are not known to Perl. | |
| /\p{Chakma}\d/utf,ucp | |
| \x{11100}\x{1113c} | |
| 0: \x{11100}\x{1113c} | |
| /\p{Takri}\d/utf,ucp | |
| \x{11680}\x{116c0} | |
| 0: \x{11680}\x{116c0} | |
| /^\X/utf | |
| A\=ps | |
| 0: A | |
| A\=ph | |
| Partial match: A | |
| A\x{300}\x{301}\=ps | |
| 0: A\x{300}\x{301} | |
| A\x{300}\x{301}\=ph | |
| Partial match: A\x{300}\x{301} | |
| A\x{301}\=ps | |
| 0: A\x{301} | |
| A\x{301}\=ph | |
| Partial match: A\x{301} | |
| /^\X{2,3}/utf | |
| A\=ps | |
| Partial match: A | |
| A\=ph | |
| Partial match: A | |
| AA\=ps | |
| 0: AA | |
| AA\=ph | |
| Partial match: AA | |
| A\x{300}\x{301}\=ps | |
| Partial match: A\x{300}\x{301} | |
| A\x{300}\x{301}\=ph | |
| Partial match: A\x{300}\x{301} | |
| A\x{300}\x{301}A\x{300}\x{301}\=ps | |
| 0: A\x{300}\x{301}A\x{300}\x{301} | |
| A\x{300}\x{301}A\x{300}\x{301}\=ph | |
| Partial match: A\x{300}\x{301}A\x{300}\x{301} | |
| /^\X{2}/utf | |
| AA\=ps | |
| 0: AA | |
| AA\=ph | |
| Partial match: AA | |
| A\x{300}\x{301}A\x{300}\x{301}\=ps | |
| 0: A\x{300}\x{301}A\x{300}\x{301} | |
| A\x{300}\x{301}A\x{300}\x{301}\=ph | |
| Partial match: A\x{300}\x{301}A\x{300}\x{301} | |
| /^\X+/utf | |
| AA\=ps | |
| 0: AA | |
| AA\=ph | |
| Partial match: AA | |
| /^\X+?Z/utf | |
| AA\=ps | |
| Partial match: AA | |
| AA\=ph | |
| Partial match: AA | |
| /A\x{3a3}B/IBi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i A | |
| clist 03a3 03c2 03c3 | |
| /i B | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Capture group count = 0 | |
| Options: caseless utf | |
| First code unit = 'A' (caseless) | |
| Last code unit = 'B' (caseless) | |
| Subject length lower bound = 3 | |
| /[\x{3a3}]/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\x{3a3}]/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| not clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x{3a3}]+/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| clist 03a3 03c2 03c3 ++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\x{3a3}]+/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| not clist 03a3 03c2 03c3 ++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /a*\x{3a3}/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i a*+ | |
| clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\x{3a3}+a/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| clist 03a3 03c2 03c3 ++ | |
| /i a | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\x{3a3}*\x{3c2}/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| clist 03a3 03c2 03c3 * | |
| clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\x{3a3}{3}/i,utf,aftertext | |
| \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}/i,utf,aftertext | |
| \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}?/i,utf,aftertext | |
| \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}+./i,utf,aftertext | |
| \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}++./i,utf,aftertext | |
| \= Expect no match | |
| \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2} | |
| No match | |
| /\x{3a3}*\x{3c2}/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| clist 03a3 03c2 03c3 * | |
| clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^\x{3a3}]*\x{3c2}/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| not clist 03a3 03c2 03c3 *+ | |
| clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^a]*\x{3c2}/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i [^a]* (not) | |
| clist 03a3 03c2 03c3 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /ist/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i i | |
| clist 0053 0073 017f | |
| /i t | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| ikt | |
| No match | |
| /is+t/i,utf | |
| iSs\x{17f}t | |
| 0: iSs\x{17f}t | |
| \= Expect no match | |
| ikt | |
| No match | |
| /is+?t/i,utf | |
| \= Expect no match | |
| ikt | |
| No match | |
| /is?t/i,utf | |
| \= Expect no match | |
| ikt | |
| No match | |
| /is{2}t/i,utf | |
| \= Expect no match | |
| iskt | |
| No match | |
| # This property is a PCRE special | |
| /^\p{Xuc}/utf | |
| $abc | |
| 0: $ | |
| @abc | |
| 0: @ | |
| `abc | |
| 0: ` | |
| \x{1234}abc | |
| 0: \x{1234} | |
| \= Expect no match | |
| abc | |
| No match | |
| /^\p{Xuc}+/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $@`\x{a0}\x{1234}\x{e000} | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^\p{Xuc}+?/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $ | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^\p{Xuc}+?\*/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $@`\x{a0}\x{1234}\x{e000}* | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^\p{Xuc}++/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $@`\x{a0}\x{1234}\x{e000} | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^\p{Xuc}{3,5}/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $@`\x{a0}\x{1234} | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^\p{Xuc}{3,5}?/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $@` | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^[\p{Xuc}]/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $ | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^[\p{Xuc}]+/utf | |
| $@`\x{a0}\x{1234}\x{e000}** | |
| 0: $@`\x{a0}\x{1234}\x{e000} | |
| \= Expect no match | |
| \x{9f} | |
| No match | |
| /^\P{Xuc}/utf | |
| abc | |
| 0: a | |
| \= Expect no match | |
| $abc | |
| No match | |
| @abc | |
| No match | |
| `abc | |
| No match | |
| \x{1234}abc | |
| No match | |
| /^[\P{Xuc}]/utf | |
| abc | |
| 0: a | |
| \= Expect no match | |
| $abc | |
| No match | |
| @abc | |
| No match | |
| `abc | |
| No match | |
| \x{1234}abc | |
| No match | |
| # Some auto-possessification tests | |
| /\pN+\z/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop N ++ | |
| \z | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\PN+\z/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| notprop N ++ | |
| \z | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\pN+/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop N ++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\PN+/B | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny+ | |
| AllAny | |
| AllAny+ | |
| [] | |
| AllAny+ | |
| prop Lc | |
| AllAny+ | |
| prop L | |
| AllAny+ | |
| prop Lu | |
| AllAny+ | |
| prop Han | |
| AllAny+ | |
| prop Xan | |
| AllAny+ | |
| prop Xsp | |
| AllAny+ | |
| prop Xps | |
| prop Xwd + | |
| AllAny | |
| AllAny+ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Lc + | |
| AllAny | |
| prop Lc + | |
| prop Lc | |
| notprop Lc ++ | |
| prop Lc | |
| prop Lc + | |
| prop L | |
| prop Lc + | |
| prop Lu | |
| prop Lc + | |
| prop Han | |
| prop Lc + | |
| prop Xan | |
| prop Lc ++ | |
| notprop Xan | |
| prop Lc ++ | |
| prop Xsp | |
| prop Lc ++ | |
| prop Xps | |
| prop Xwd + | |
| prop Lc | |
| prop Lc + | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop N + | |
| AllAny | |
| prop N + | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Lu + | |
| AllAny | |
| prop Lu + | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Han + | |
| prop Lu | |
| prop Han + | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xan + | |
| AllAny | |
| prop Xan + | |
| prop Lc | |
| notprop Xan ++ | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xsp + | |
| AllAny | |
| prop Xsp ++ | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xwd + | |
| AllAny | |
| prop Xwd + | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xuc + | |
| AllAny | |
| prop Xuc + | |
| prop Lc | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| 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}/Bx,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Xan + | |
| prop Nd | |
| notprop Xan ++ | |
| prop Nd | |
| prop Xan + | |
| notprop Nd | |
| notprop Xan + | |
| notprop Nd | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| # End auto-possessification tests | |
| /\w+/B,utf,ucp,auto_callout | |
| ------------------------------------------------------------------ | |
| Bra | |
| Callout 255 0 3 | |
| prop Xwd ++ | |
| Callout 255 3 0 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| abcd | |
| --->abcd | |
| +0 ^ \w+ | |
| +3 ^ ^ End of pattern | |
| 0: abcd | |
| /[\p{N}]?+/B,no_auto_possess | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{N}]?+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\p{L}ab]{2,3}+/B,no_auto_possess | |
| ------------------------------------------------------------------ | |
| Bra | |
| [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}]{2,3}+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/Bx | |
| ------------------------------------------------------------------ | |
| Bra | |
| \D+ | |
| extuni | |
| \d+ | |
| extuni | |
| \S+ | |
| extuni | |
| \s+ | |
| extuni | |
| \W+ | |
| extuni | |
| \w+ | |
| extuni | |
| \R+ | |
| extuni | |
| \H+ | |
| extuni | |
| \h+ | |
| extuni | |
| \V+ | |
| extuni | |
| \v+ | |
| extuni | |
| a+ | |
| extuni | |
| \x0a+ | |
| extuni | |
| Any+ | |
| extuni | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /.+\X/Bsx | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny+ | |
| extuni | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\X+$/Bmx | |
| ------------------------------------------------------------------ | |
| Bra | |
| extuni+ | |
| /m $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/Bx | |
| ------------------------------------------------------------------ | |
| Bra | |
| extuni+ | |
| \D | |
| extuni+ | |
| \d | |
| extuni+ | |
| \S | |
| extuni+ | |
| \s | |
| extuni+ | |
| \W | |
| extuni+ | |
| \w | |
| extuni+ | |
| Any | |
| 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*/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Nd ++ | |
| prop Xsp {0,5}+ | |
| = | |
| prop Xsp *+ | |
| notprop Xsp ? | |
| = | |
| prop Xwd {0,4}+ | |
| notprop Xwd *+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[RST]+/Bi,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [R-Tr-t\x{17f}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[R-T]+/Bi,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [R-Tr-t\x{17f}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[Q-U]+/Bi,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Q-Uq-u\x{17f}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /^s?c/Iim,utf | |
| Capture group count = 0 | |
| Options: caseless multiline utf | |
| First code unit at start or follows newline | |
| Last code unit = 'c' (caseless) | |
| Subject length lower bound = 1 | |
| scat | |
| 0: sc | |
| /\X?abc/utf,no_start_optimize | |
| \xff\x7f\x00\x00\x03\x00\x41\xcc\x80\x41\x{300}\x61\x62\x63\x00\=no_utf_check,offset=06 | |
| 0: A\x{300}abc | |
| /\x{100}\x{200}\K\x{300}/utf,startchar | |
| \x{100}\x{200}\x{300} | |
| 0: \x{100}\x{200}\x{300} | |
| ^^^^^^^^^^^^^^ | |
| # Test UTF characters in a substitution | |
| /ábc/utf,replace=Xá´Z | |
| 123ábc123 | |
| 1: 123X\x{1234}Z123 | |
| /(?<=abc)(|def)/g,utf,replace=<$0> | |
| 123abcáyzabcdef789abcá´qr | |
| 4: 123abc<>\x{e1}yzabc<><def>789abc<>\x{1234}qr | |
| /[A-`]/iB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [A-z\x{17f}\x{212a}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| abcdefghijklmno | |
| 0: a | |
| /(?<=\K\x{17f})/g,utf,aftertext,allow_lookaround_bsk | |
| \x{17f}\x{17f}\x{17f}\x{17f}\x{17f} | |
| 0: \x{17f} | |
| 0+ \x{17f}\x{17f}\x{17f}\x{17f} | |
| global repeat returned the same match as previous | |
| 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})/altglobal,utf,aftertext,allow_lookaround_bsk | |
| \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+ | |
| "\xa\xf<(.\pZ*\P{Xwd}+^\xa8\3'3yq.::?(?J:()\xd1+!~:3'(8?:)':(?'d'(?'d'^u]!.+.+\\A\Ah(n+?9){7}+\K;(?'X'u'(?'c'(?'z'(?<y>\xb::\xf0'|\xd3(\xae?'w(z\x8?P>l)\x8?P>a)'\H\R\xd1+!!~:3'(?:h$N{26875}\W+?\\=D{2}\x89(?i:Uy0\N({2\xa(\v\x85*){y*\A(()\p{L}+?\P{^Xan}'+?\xff\+pS\?|).{;y*\A(()\p{L}+?\8}\d?1(|)(/1){7}.+[Lp{Me}].\s\xdcC*?(?(<y>))(?<!^)$C((;*?(R))+(\xbf(R))\x8a\X*?\x8a\xb\xd1^9\3*+(\xc1,\k'R'\xb4)\xcc(z\z(?J)(?'X'\x1b(\xb\xd1^9\?'3*+P{^Xan}+?\xff\+(\xc1.]k+\xb'Pm'\xb4)\xcc4f\xa7'\xd1V(?i:U,{2,2})'(?'X'))?-%--\x95$9*\4'|\xd1(\x9c''%\x94$9)#(?'R')3\x7?('P\xed7'\xa8\xb1^u\xeaw\1\0\0\(|(?1){7}.+[\p{Me}].\s\xdcC*^\x14?(?(<y>))(?<!^)$C((;*?(R*?))+(?(R)\x8a\X*?\x8a\xb\xd1^9\3*+|(\xc1,\k'R'\xb4)\xcc! z)\z(?JJ)(?'X';(\xb\xd1^9\?'3*+(\xc1.]k+\xb'Pm'\xb4))':(?'d')(?'RD'(d')|)|$)'|(?<x>\g{d});\g{x}\x11\g{d}\x81\|$((?'X'\'X'(?'W''\x92()'9'\x83*))\xba*\!?^ <){)':;\xcc4'\xd1'(?'X'28))?-%--\x95$9*\4'|\xd1((''e\x94*$9:)*#(?'R')3)\x7?('P\xed')\\x16:;()\x1e\x10*:(?<y>)\xd1+0!~:(?)'d'E:yD!\s(?'R'\x1e;\x10:U))|'\x9g!\xb0*){)\\x16:;()\x1e\x10\x87*:(?<y>)\xd1+!~:(?)'}'\d'E:yD!\s(?'R'\x1e;\x10:U))|'))|)g!\xb0*R+9{29+)#(?'P'})*?pS\{3,}\x85,{0,}l{*UTF)(\xe{7}){3722,{9,}d{2,?|))|{)\(A?&d}}{\xa,}2}){3,}7,l{)22}(,}l:7{2,4}}29\x19+)#?'P'})*v?))\x5" | |
| Failed: error 122 at offset 1228: unmatched closing parenthesis | |
| here: ...?'P'})*v?) |<--| )\x5 | |
| /$(&.+[\p{Me}].\s\xdcC*?(?(<y>))(?<!^)$C((;*?(R))+(?(R)){0,6}?|){12\x8a\X*?\x8a\x0b\xd1^9\3*+(\xc1,\k'P'\xb4)\xcc(z\z(?JJ)(?'X'8};(\x0b\xd1^9\?'3*+(\xc1.]k+\x0b'Pm'\xb4\xcc4'\xd1'(?'X'))?-%--\x95$9*\4'|\xd1(''%\x95*$9)#(?'R')3\x07?('P\xed')\\x16:;()\x1e\x10*:(?<y>)\xd1+!~:(?)''(d'E:yD!\s(?'R'\x1e;\x10:U))|')g!\xb0*){29+))#(?'P'})*?/ | |
| "(*UTF)(*UCP)(.UTF).+X(\V+;\^(\D|)!999}(?(?C{7(?C')\H*\S*/^\x5\xa\\xd3\x85n?(;\D*(?m).[^mH+((*UCP)(*U:F)})(?!^)(?'" | |
| Failed: error 162 at offset 113: subpattern name expected | |
| here: ...})(?!^)(?' |<--| | |
| /(?(?C'')\Qé/utf | |
| Failed: error 128 at offset 8: atomic assertion expected after (?( or (?(?C) | |
| here: (?(?C'') |<--| \Qé | |
| /(?(?C'')é/utf | |
| Failed: error 128 at offset 8: atomic assertion expected after (?( or (?(?C) | |
| here: (?(?C'') |<--| é | |
| /[\pS#moq]/ | |
| = | |
| 0: = | |
| /(*:a\x{12345}b\t(d\)c)xxx/utf,alt_verbnames,mark | |
| cxxxz | |
| 0: xxx | |
| MK: a\x{12345}b\x{09}(d)c | |
| /abcd/utf,replace=x\x{824}y\o{3333}z(\Q12\$34$$\x34\E5$$),substitute_extended | |
| abcd | |
| 1: x\x{824}y\x{6db}z(12\$34$$\x345$) | |
| /a(\x{e0}\x{101})(\x{c0}\x{102})/utf,replace=a\u$1\U$1\E$1\l$2\L$2\Eab\U\x{e0}\x{101}\L\x{d0}\x{160}\EDone,substitute_extended | |
| a\x{e0}\x{101}\x{c0}\x{102} | |
| 1: a\x{c0}\x{101}\x{c0}\x{100}\x{e0}\x{101}\x{e0}\x{102}\x{e0}\x{103}ab\x{c0}\x{100}\x{f0}\x{161}Done | |
| /((?<digit>\d)|(?<letter>\p{L}))/g,substitute_extended,replace=<${digit:+digit; :not digit; }${letter:+letter:not a letter}> | |
| ab12cde | |
| 7: <not digit; letter><not digit; letter><digit; not a letter><digit; not a letter><not digit; letter><not digit; letter><not digit; letter> | |
| /(*UCP)(*UTF)[[:>:]]X/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| \b (ucp) | |
| Assert back | |
| 1 Reverse | |
| prop Xwd | |
| Ket | |
| X | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /abc/utf,replace=xyz | |
| abc\=zero_terminate | |
| 1: xyz | |
| /a[[:punct:]b]/ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| a | |
| [!-/:-@[-`b{-~\xa1\xa7\xab\xb6\xb7\xbb\xbf[:punct:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /a[[:punct:]b]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| a | |
| [!-/:-@[-`b{-~\xa1\xa7\xab\xb6\xb7\xbb\xbf[:punct:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /a[b[:punct:]]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| a | |
| [!-/:-@[-`b{-~\xa1\xa7\xab\xb6\xb7\xbb\xbf[:punct:]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:^ascii:]]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-\x7f] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[[:^ascii:]\w]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-/:-@[-^`{-\x7f] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\w[:^ascii:]]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-/:-@[-^`{-\x7f] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[^[:ascii:]\W]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-\xa9\xab-\xb1\xb4\xb6-\xb8\xbb\xbf\xd7\xf7\P{Xwd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{de} | |
| 0: \x{de} | |
| \x{200} | |
| 0: \x{200} | |
| \= Expect no match | |
| \x{589} | |
| No match | |
| \x{37e} | |
| No match | |
| /[[:^ascii:]a]/utf,ucp,bincode | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-`b-\x7f] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /L(?#(|++<!(2)?/B,utf,no_auto_possess,auto_callout | |
| ------------------------------------------------------------------ | |
| Bra | |
| Callout 255 0 14 | |
| L? | |
| Callout 255 14 0 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /L(?#(|++<!(2)?/B,utf,ucp,auto_callout | |
| ------------------------------------------------------------------ | |
| Bra | |
| Callout 255 0 14 | |
| L?+ | |
| Callout 255 14 0 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /(*UTF)C\x09((?<!'(?x)!*H? #\xcc\x9a[^$]/ | |
| Failed: error 114 at offset 39: missing closing parenthesis | |
| here: ...cc\x9a[^$] |<--| | |
| /[\D]/utf | |
| \x{1d7cf} | |
| 0: \x{1d7cf} | |
| /[\D\P{Nd}]/utf | |
| \x{1d7cf} | |
| 0: \x{1d7cf} | |
| /[^\D]/utf | |
| a9b | |
| 0: 9 | |
| \= Expect no match | |
| \x{1d7cf} | |
| No match | |
| /[^\D\P{Nd}]/utf | |
| a9b | |
| 0: 9 | |
| \= Expect no match | |
| \x{1d7cf} | |
| No match | |
| \x{10000} | |
| No match | |
| # Hex uses pattern length, not zero-terminated. This tests for overrunning | |
| # the given length of a pattern. | |
| /'(*UTF)'/hex | |
| /'#('/hex,extended,utf | |
| /a(?<=A\XB)/utf | |
| Failed: error 125 at offset 1: length of lookbehind assertion is not limited | |
| here: a |-->| (?<=A\XB) | |
| /../utf,auto_callout | |
| \n\x{123}\x{123}\x{123}\x{123} | |
| --->\x{0a}\x{123}\x{123}\x{123}\x{123} | |
| +0 ^ . | |
| +0 ^ . | |
| +1 ^ ^ . | |
| +2 ^ ^ End of pattern | |
| 0: \x{123}\x{123} | |
| # This tests processing wide characters in extended mode. | |
| /XÈ/x,utf | |
| # These three test a bug fix that was not clearing up after a locale setting | |
| # when the test or a subsequent one matched a wide character. | |
| //locale=C | |
| /[\P{Yi}]/utf | |
| \x{2f000} | |
| 0: \x{2f000} | |
| /[\P{Yi}]/utf,locale=C | |
| \x{2f000} | |
| 0: \x{2f000} | |
| /^(?<!(?=ô¡))/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| Assert back not | |
| Assert | |
| \x{10385c} | |
| Ket | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| # Horizontal and vertical space lists ignore caseless | |
| /[\HH]/Bi,utf | |
| ------------------------------------------------------------------ | |
| 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 | |
| ------------------------------------------------------------------ | |
| /[^\HH]/Bi,utf | |
| ------------------------------------------------------------------ | |
| 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 | |
| ------------------------------------------------------------------ | |
| //g,utf | |
| \=zero_terminate | |
| 0: | |
| /^(?1)\p{Nd}{3}(a)/ | |
| a123a | |
| 0: a123a | |
| 1: a | |
| /\p{Nd}{0,3}[\pL](*:abc)(?C1)xxx/callout_info | |
| Callout 1 x | |
| # --------------------------------------------------------------------------- | |
| # A bunch of tests that hit lines of code that others do not (at least when | |
| # these were created). | |
| /^[^a]{3,}?x/i,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| bbb | |
| No match | |
| cc | |
| No match | |
| /^[ac]{3,}?x/i,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| aaa\x{100} | |
| No match | |
| /^X\X/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{L&}+?/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{L}+?/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{Lu}+?/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{Arabic}+?/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{Xan}+?/ucp,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\s+?/ucp,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| XX | |
| No match | |
| /^X\S+?/ucp,no_start_optimize,no_auto_possess | |
| XX | |
| 0: XX | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\w+?/ucp,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X[^\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X[\x{b5}]+?/i,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{Xuc}+?/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X.+?Z/s,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\R+?/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\H+?/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\V+?/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\s+?/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| XX | |
| No match | |
| /^X\S+?/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| /^X\p{Any}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| XYYYZ | |
| 0: XYYYZ | |
| \= Expect no match | |
| XY | |
| No match | |
| XYY | |
| No match | |
| XYYY | |
| No match | |
| XYYYYZ | |
| No match | |
| /^X\p{L&}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| /^X\p{L}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| /^X\p{Lu}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| /^X\P{Han}{1,3}?Z/s,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| XY\x{2f00}! | |
| No match | |
| /^X\p{Xan}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| /^X\p{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X\n | |
| No match | |
| X\n! | |
| No match | |
| X\n\n! | |
| No match | |
| /^X\P{Xsp}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XYY\n | |
| No match | |
| /^X\p{Xwd}{1,3}?Z/s,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| XYY! | |
| No match | |
| /^X\x{b5}+?Z/i,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| X\x{b5} | |
| No match | |
| X\x{b5}\x{b5}Y | |
| No match | |
| /^X\p{Xuc}+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| X$ | |
| No match | |
| X@@Y | |
| No match | |
| /(*CRLF)^X.+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect partial match | |
| XYY\r\=ph | |
| Partial match: XYY\x{0d} | |
| \= Expect no match | |
| X | |
| No match | |
| /^X.+?Z/s,utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X | |
| No match | |
| XYY | |
| No match | |
| /^X\R+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X\nX | |
| No match | |
| X\n\rX | |
| No match | |
| X\n\r\nX | |
| No match | |
| X\n\n | |
| No match | |
| X\n\x{0c} | |
| No match | |
| /(*BSR_ANYCRLF)^X\R+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X\nX | |
| No match | |
| X\n\rX | |
| No match | |
| X\n\r\nX | |
| No match | |
| X\n\n | |
| No match | |
| X\n\x{0c} | |
| No match | |
| /^X\H+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY\t | |
| No match | |
| XYY | |
| No match | |
| /^X\h+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X\t\t | |
| No match | |
| X\tY | |
| No match | |
| /^X\V+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY\n | |
| No match | |
| XYY | |
| No match | |
| /^X\v+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X\n\n | |
| No match | |
| X\nY | |
| No match | |
| /^X\D+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY9 | |
| No match | |
| XYY | |
| No match | |
| /^X\d+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X99 | |
| No match | |
| X9Y | |
| No match | |
| /^X\S+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY\n | |
| No match | |
| XYY | |
| No match | |
| /^X\s+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X\n\n | |
| No match | |
| X\nY | |
| No match | |
| /^X\W+?Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X.A | |
| No match | |
| X++ | |
| No match | |
| /^X\p{L&}{1,3}Z/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| XY! | |
| No match | |
| /^X\p{L}{1,3}Z/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| /^X\p{Xan}{1,3}Z/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XY | |
| No match | |
| /^X\P{Xsp}{1,3}Z/no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| XYY | |
| No match | |
| /^X\p{Xuc}+Z/utf,no_start_optimize,no_auto_possess | |
| \= Expect no match | |
| X$ | |
| No match | |
| # ---------------------------------------------------------------------- | |
| # These test the dangerous PCRE2_EXTRA_BAD_ESCAPE_IS_LITERAL option. | |
| /\x{d800}/B,utf,bad_escape_is_literal | |
| ------------------------------------------------------------------ | |
| Bra | |
| x{d800} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\ud800/B,utf,alt_bsux,bad_escape_is_literal | |
| ------------------------------------------------------------------ | |
| Bra | |
| ud800 | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| # ---------------------------------------------------------------------- | |
| /Aá´+B/literal,utf,no_utf_check | |
| Aá´+B | |
| 0: A\x{1234}+B | |
| # These are here because I upgraded to Unicode 10.0.0 before Perl did, so it | |
| # doesn't recognize all these scripts. In time these three tests can be moved | |
| # to test 4. | |
| /^(\p{Adlam}+)(\p{Bhaiksuki}+)(\p{Marchen}+)(\p{Newa}+)(\p{Osage}+) | |
| (\p{Tangut}+)(\p{Masaram_Gondi}+)(\p{Nushu}+)(\p{Soyombo}+) | |
| (\p{Zanabazar_Square}+)/x,utf | |
| \x{1E900}\x{1E924}\x{1E953}\x{11C00}\x{11C2D}\x{11C3E}\x{11C70}\x{11C77}\x{11CAB}\x{11400}\x{1142F}\x{11455}\x{104B0}\x{104D8}\x{104FB}\x{16FE0}\x{18800}\x{18AF2}\x{11D00}\x{11D3A}\x{11D59}\x{16FE1}\x{1B170}\x{1B2FB}\x{11A50}\x{11A58}\x{11AA2}\x{11A00}\x{11A07}\x{11A47} | |
| 0: \x{1e900}\x{1e924}\x{1e953}\x{11c00}\x{11c2d}\x{11c3e}\x{11c70}\x{11c77}\x{11cab}\x{11400}\x{1142f}\x{11455}\x{104b0}\x{104d8}\x{104fb}\x{16fe0}\x{18800}\x{18af2}\x{11d00}\x{11d3a}\x{11d59}\x{16fe1}\x{1b170}\x{1b2fb}\x{11a50}\x{11a58}\x{11aa2}\x{11a00}\x{11a07}\x{11a47} | |
| 1: \x{1e900}\x{1e924}\x{1e953} | |
| 2: \x{11c00}\x{11c2d}\x{11c3e} | |
| 3: \x{11c70}\x{11c77}\x{11cab} | |
| 4: \x{11400}\x{1142f}\x{11455} | |
| 5: \x{104b0}\x{104d8}\x{104fb} | |
| 6: \x{16fe0}\x{18800}\x{18af2} | |
| 7: \x{11d00}\x{11d3a}\x{11d59} | |
| 8: \x{16fe1}\x{1b170}\x{1b2fb} | |
| 9: \x{11a50}\x{11a58}\x{11aa2} | |
| 10: \x{11a00}\x{11a07}\x{11a47} | |
| /^\x{1E900}\x{104B0}/i,utf | |
| \x{1E900}\x{104B0} | |
| 0: \x{1e900}\x{104b0} | |
| \x{1E922}\x{104D8} | |
| 0: \x{1e922}\x{104d8} | |
| /^(?:(\X)(?C))+$/utf | |
| \x{1E900}\x{1E924}\x{1E953}\x{11C00}\x{11C2D}\x{11C3E}\x{11C70}\x{11C77}\x{11CAB}\x{11400}\x{1142F}\x{11455}\x{104B0}\x{104D8}\x{104FB}\x{16FE0}\x{18800}\x{18AF2}\x{11D00}\x{11D3A}\x{11D59}\x{16FE1}\x{1B170}\x{1B2FB}\x{11A50}\x{11A58}\x{11AA2}\x{11A00}\x{11A07}\x{11A47}\=callout_capture,callout_no_where | |
| Callout 0: last capture = 1 | |
| 1: \x{1e900} | |
| Callout 0: last capture = 1 | |
| 1: \x{1e924} | |
| Callout 0: last capture = 1 | |
| 1: \x{1e953} | |
| Callout 0: last capture = 1 | |
| 1: \x{11c00} | |
| Callout 0: last capture = 1 | |
| 1: \x{11c2d}\x{11c3e} | |
| Callout 0: last capture = 1 | |
| 1: \x{11c70} | |
| Callout 0: last capture = 1 | |
| 1: \x{11c77}\x{11cab} | |
| Callout 0: last capture = 1 | |
| 1: \x{11400} | |
| Callout 0: last capture = 1 | |
| 1: \x{1142f} | |
| Callout 0: last capture = 1 | |
| 1: \x{11455} | |
| Callout 0: last capture = 1 | |
| 1: \x{104b0} | |
| Callout 0: last capture = 1 | |
| 1: \x{104d8} | |
| Callout 0: last capture = 1 | |
| 1: \x{104fb} | |
| Callout 0: last capture = 1 | |
| 1: \x{16fe0} | |
| Callout 0: last capture = 1 | |
| 1: \x{18800} | |
| Callout 0: last capture = 1 | |
| 1: \x{18af2} | |
| Callout 0: last capture = 1 | |
| 1: \x{11d00}\x{11d3a} | |
| Callout 0: last capture = 1 | |
| 1: \x{11d59} | |
| Callout 0: last capture = 1 | |
| 1: \x{16fe1} | |
| Callout 0: last capture = 1 | |
| 1: \x{1b170} | |
| Callout 0: last capture = 1 | |
| 1: \x{1b2fb} | |
| Callout 0: last capture = 1 | |
| 1: \x{11a50}\x{11a58} | |
| Callout 0: last capture = 1 | |
| 1: \x{11aa2} | |
| Callout 0: last capture = 1 | |
| 1: \x{11a00}\x{11a07}\x{11a47} | |
| 0: \x{1e900}\x{1e924}\x{1e953}\x{11c00}\x{11c2d}\x{11c3e}\x{11c70}\x{11c77}\x{11cab}\x{11400}\x{1142f}\x{11455}\x{104b0}\x{104d8}\x{104fb}\x{16fe0}\x{18800}\x{18af2}\x{11d00}\x{11d3a}\x{11d59}\x{16fe1}\x{1b170}\x{1b2fb}\x{11a50}\x{11a58}\x{11aa2}\x{11a00}\x{11a07}\x{11a47} | |
| 1: \x{11a00}\x{11a07}\x{11a47} | |
| # Similarly for Unicode 11.0.0 | |
| /^(\p{Dogra}+)(\p{Gunjala_Gondi}+)(\p{Hanifi_Rohingya}+)(\p{Makasar}+) | |
| (\p{Medefaidrin}+)(\p{Old_Sogdian}+)(\p{Sogdian}+)/x,utf | |
| \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30} | |
| 0: \x{11800}\x{11da9}\x{10d27}\x{11ee0}\x{16e48}\x{10f27}\x{10f30} | |
| 1: \x{11800} | |
| 2: \x{11da9} | |
| 3: \x{10d27} | |
| 4: \x{11ee0} | |
| 5: \x{16e48} | |
| 6: \x{10f27} | |
| 7: \x{10f30} | |
| # Regional indicators | |
| /^(\X)(\X)/utf,aftertext | |
| \x{1F1E6}\x{1F1E7}\x{1F1E7}B | |
| 0: \x{1f1e6}\x{1f1e7}\x{1f1e7} | |
| 0+ B | |
| 1: \x{1f1e6}\x{1f1e7} | |
| 2: \x{1f1e7} | |
| \x{1F1E6}\x{1F1E7}\x{1F1E7}\x{1F1E6}B | |
| 0: \x{1f1e6}\x{1f1e7}\x{1f1e7}\x{1f1e6} | |
| 0+ B | |
| 1: \x{1f1e6}\x{1f1e7} | |
| 2: \x{1f1e7}\x{1f1e6} | |
| # More differences from Perl | |
| /^\p{Common}/utf | |
| \x{60c} | |
| 0: \x{60c} | |
| \x{61f} | |
| 0: \x{61f} | |
| \x{964} | |
| 0: \x{964} | |
| \x{965} | |
| 0: \x{965} | |
| /^\p{Inherited}/utf | |
| \x{64b} | |
| 0: \x{64b} | |
| \x{654} | |
| 0: \x{654} | |
| \x{655} | |
| 0: \x{655} | |
| \x{1D1AA} | |
| 0: \x{1d1aa} | |
| /\N{U+}/ | |
| Failed: error 193 at offset 6: \N{U+dddd} is supported only in Unicode (UTF) mode | |
| here: \N{U+} |<--| | |
| /\N{U+}/utf | |
| Failed: error 178 at offset 5: digits missing after \x or in \x{} or \o{} or \N{U+} | |
| here: \N{U+ |<--| } | |
| /\N{U}/ | |
| Failed: error 137 at offset 3: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u | |
| here: \N{ |<--| U} | |
| /\N{U+}/utf | |
| Failed: error 178 at offset 5: digits missing after \x or in \x{} or \o{} or \N{U+} | |
| here: \N{U+ |<--| } | |
| /\N{U+1}/ | |
| Failed: error 193 at offset 7: \N{U+dddd} is supported only in Unicode (UTF) mode | |
| here: \N{U+1} |<--| | |
| /\N{U+1 }/ | |
| Failed: error 193 at offset 8: \N{U+dddd} is supported only in Unicode (UTF) mode | |
| here: \N{U+1 } |<--| | |
| # This tests the non-UTF Unicode NEL pattern whitespace character, only | |
| # recognized by PCRE2 with /x when there is Unicode support. | |
| /A | |
| B/x | |
| AB | |
| 0: AB | |
| # This tests Unicode Pattern White Space characters in verb names when they | |
| # are being processed with PCRE2_EXTENDED. Note: there are UTF-8 characters | |
| # with code points greater than 255 between A, B, and C in the pattern. | |
| /(*: AâBâ¨C)abc/x,utf,mark,alt_verbnames | |
| abc | |
| 0: abc | |
| MK: ABC | |
| # Script run tests: auto-possessification | |
| /^(*sr:.*)/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| Script run | |
| Any* | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| paypаl.com A classic example of why script run checks are a good thing | |
| 0: payp | |
| /^(*sr:.*(*ACCEPT))/utf | |
| paypаl.com But *ACCEPT breaks things | |
| 0: payp\x{430}l.com But *ACCEPT breaks things | |
| /^(*sr:\x{2e80}*)/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| Script run | |
| \x{2e80}*+ | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /^(*sr:\x{2e80}*)\x{2e80}/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| Script run | |
| \x{2e80}* | |
| Ket | |
| \x{2e80} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /(?<!)(*sr:)/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| Assert back not | |
| Ket | |
| Script run | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /(?<=abc(?=X(*sr:BXY)CCC)XBXYCCC)./B | |
| ------------------------------------------------------------------ | |
| Bra | |
| Assert back | |
| 10 Reverse | |
| abc | |
| Assert | |
| X | |
| Script run | |
| BXY | |
| Ket | |
| CCC | |
| Ket | |
| XBXYCCC | |
| Ket | |
| Any | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| abcXBXYCCC! | |
| 0: ! | |
| # Some script run patterns are broken in Perl 5.28.0. These can be moved into | |
| # test 4 when a mended version of Perl is released. | |
| /^(*sr:.{4})/utf | |
| \x{0980}12\x{0993} Bengali Common-digits Bengali | |
| 0: \x{980}12\x{993} | |
| \x{0780}12\x{07b1} Thaana Common-digits Thaana | |
| 0: \x{780}12\x{7b1} | |
| \x{0e01}12\x{0e5b} Thai Common-digits Thai | |
| 0: \x{e01}12\x{e5b} | |
| \x{1780}12\x{19ff} Khmer Common-digits Khmer | |
| 0: \x{1780}12\x{19ff} | |
| \x{0904}12\x{0939} Devanagari Common-digits Devanagari | |
| 0: \x{904}12\x{939} | |
| A\x{ff10}\x{ff19}B Latin Common-notascii-digits Latin | |
| 0: A\x{ff10}\x{ff19}B | |
| A\x{1d7ce}\x{1d7cf}B Latin fancy-common-digits Latin | |
| 0: A\x{1d7ce}\x{1d7cf}B | |
| # These ones involve non-ASCII but nevertheless Common digits. As of October | |
| # 2018 even blead Perl wasn't handling all of these - but is going to. | |
| /^(*sr:.{4})/utf | |
| A\x{ff10}\x{ff19}B Latin Common-notascii-digits Latin | |
| 0: A\x{ff10}\x{ff19}B | |
| \x{ff10}\x{ff19}.. Common-notascii-digits Common Common | |
| 0: \x{ff10}\x{ff19}.. | |
| A\x{ff10}BC Latin Common-notascii-digit Latin Latin | |
| 0: A\x{ff10}BC | |
| A\x{1d7ce}\x{1d7cf}B Latin fancy-common-digits Latin | |
| 0: A\x{1d7ce}\x{1d7cf}B | |
| \x{1d7ce}\x{1d7cf},, fancy-common-digits Common Common | |
| 0: \x{1d7ce}\x{1d7cf},, | |
| A\x{1d7ce}BC Latin fancy-common-digit Latin Latin | |
| 0: A\x{1d7ce}BC | |
| # Some Unicode 12.1.0 new script characters | |
| /\p{Elymaic}\p{Nandinagari}\p{Nyiakeng_Puachue_Hmong}\p{Wancho}/utf | |
| \x{10fe5}\x{119AC}\x{1E10E}\x{1E2D1} | |
| 0: \x{10fe5}\x{119ac}\x{1e10e}\x{1e2d1} | |
| # Some Unicode 13.0.0 new script characters | |
| /\p{Chorasmian}\p{Dives_Akuru}\p{Khitan_Small_Script}\p{Yezidi}/utf | |
| \x{10FB0}\x{11900}\x{18B00}\x{10E80} | |
| 0: \x{10fb0}\x{11900}\x{18b00}\x{10e80} | |
| # ------- | |
| # Test reference and errors in non-ASCII characters in group names | |
| /(?'ð ABC'...)/I,utf | |
| Capture group count = 1 | |
| Named capture groups: | |
| ð ABC 1 | |
| Options: utf | |
| Subject length lower bound = 3 | |
| abcde\=copy=ð ABC | |
| 0: abc | |
| 1: abc | |
| C abc (3) ð ABC (group 1) | |
| # Bad ones | |
| /(?'ABáC'...)\g{ABáC}/utf | |
| Failed: error 142 at offset 5: syntax error in subpattern name (missing terminator?) | |
| here: (?'AB |<--| áC'...)\g{... | |
| /(?'²ABC'...)/utf | |
| Failed: error 162 at offset 3: subpattern name expected | |
| here: (?' |<--| ²ABC'...) | |
| /(?'X²ABC'...)/utf | |
| Failed: error 142 at offset 4: syntax error in subpattern name (missing terminator?) | |
| here: (?'X |<--| ²ABC'...) | |
| # ------- | |
| /\p{Any}*xyz/I | |
| Capture group count = 0 | |
| Compile options: <none> | |
| Overall options: anchored | |
| Last code unit = 'z' | |
| Subject length lower bound = 3 | |
| /(|ß)7/caseless,ucp | |
| /(\xc1)\1/i,ucp | |
| \xc1\xe1\=no_jit | |
| 0: \xc1\xe1 | |
| 1: \xc1 | |
| /\p{L&}+\p{bidi_control}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Lc + | |
| prop Bidicontrol | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{bidi_control}+\p{L&}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Bidicontrol + | |
| prop Lc | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{han}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Han | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{script:han}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop script:Han | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{sc:han}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop script:Han | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{script extensions:han}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Han | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /\p{scx:han}/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| prop Han | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| # Test error - invalid script name | |
| /\p{sc:L}/ | |
| Failed: error 147 at offset 8: unknown property after \P or \p | |
| here: \p{sc:L} |<--| | |
| # Some Boolean property tests that differ from Perl | |
| /\p{emojimodifierbase}\p{ebase}/g,utf | |
| >AN<>\x{261d}\x{1faf6}<>yz< | |
| 0: \x{261d}\x{1faf6} | |
| /\p{graphemelink}\p{grlink}/g,utf | |
| >AN<>\x{11d97}\x{94d}<>yz< | |
| 0: \x{11d97}\x{94d} | |
| /\p{soft dotted}\p{sd}/g,utf | |
| >AF23<>\x{1df1a}\x{69}<>yz< | |
| 0: \x{1df1a}i | |
| # ------------------------------------------------ | |
| /\p{\2b[:xäigi:t:_/ | |
| Failed: error 146 at offset 10: malformed \P or \p sequence | |
| here: \p{\2b[:xä |<--| igi:t:_ | |
| # Tests for PCRE2_EXTRA_CASELESS_RESTRICT. Compare each test with and without | |
| # the restriction. | |
| /AskZ/i,utf,caseless_restrict | |
| AskZ | |
| 0: AskZ | |
| aSKz | |
| 0: aSKz | |
| \= Expect no match | |
| A\x{17f}kZ | |
| No match | |
| As\x{212a}Z | |
| No match | |
| /AskZ/i,utf | |
| AskZ | |
| 0: AskZ | |
| aSKz | |
| 0: aSKz | |
| A\x{17f}kZ | |
| 0: A\x{17f}kZ | |
| As\x{212a}Z | |
| 0: As\x{212a}Z | |
| /A\x{17f}\x{212a}Z/ir,utf | |
| \= Expect no match | |
| AskZ | |
| No match | |
| /A\x{17f}\x{212a}Z/i,utf | |
| AskZ | |
| 0: AskZ | |
| /[AskZ]+/i,utf,caseless_restrict | |
| AskZ | |
| 0: AskZ | |
| aSKz | |
| 0: aSKz | |
| A\x{17f}kZ | |
| 0: A | |
| As\x{212a}Z | |
| 0: As | |
| /[AskZ]+/i,utf | |
| AskZ | |
| 0: AskZ | |
| aSKz | |
| 0: aSKz | |
| A\x{17f}kZ | |
| 0: A\x{17f}kZ | |
| As\x{212a}Z | |
| 0: As\x{212a}Z | |
| /[\x{17f}\x{212a}]+/ir,utf | |
| \= Expect no match | |
| AskZ | |
| No match | |
| /[\x{17f}\x{212a}]+/i,utf | |
| AskZ | |
| 0: sk | |
| /[^s]+/ir,utf | |
| A\x{17f}Z | |
| 0: A\x{17f}Z | |
| /[^s]+/i,utf | |
| A\x{17f}Z | |
| 0: A | |
| /[^k]+/ir,utf | |
| A\x{212a}Z | |
| 0: A\x{212a}Z | |
| /[^k]+/i,utf | |
| A\x{212a}Z | |
| 0: A | |
| /[^sk]+/ir,utf | |
| A\x{17f}\x{212a}Z | |
| 0: A\x{17f}\x{212a}Z | |
| /[^sk]+/i,utf | |
| A\x{17f}\x{212a}Z | |
| 0: A | |
| /[^\x{17f}]+/ir,utf | |
| AsSZ | |
| 0: AsSZ | |
| /[^\x{17f}]+/i,utf | |
| AsSZ | |
| 0: A | |
| /[Ss]+/irB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i S++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Sss\x{17f}ss | |
| 0: Sss | |
| /[Ss]+/iB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Ss\x{17f}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| Sss\x{17f}ss | |
| 0: Sss\x{17f}ss | |
| /[S\x{17f}]/irB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Ss\x{17f}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[S\x{17f}]/iB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Ss\x{17f}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x{17f}s]/irB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Ss\x{17f}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x{17f}s]/iB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Ss\x{17f}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x{4b}\x{6b}]/irB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| /i K | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x{4b}\x{6b}]/iB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Kk\x{212a}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /s(?r)s(?-r)s(?r:s)s/i,utf | |
| \x{17f}S\x{17f}S\x{17f} | |
| 0: \x{17f}S\x{17f}S\x{17f} | |
| \= Expect no match | |
| \x{17f}\x{17f}\x{17f}S\x{17f} | |
| No match | |
| \x{17f}S\x{17f}\x{17f}\x{17f} | |
| No match | |
| /k(?^i)k/ir,utf | |
| K\x{212a} | |
| 0: K\x{212a} | |
| \= Expect no match | |
| \x{212a}\x{212a} | |
| No match | |
| /[sk](?r:[sk])[sk]/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [KSks\x{17f}\x{212a}] | |
| Bra | |
| [KSks] | |
| Ket | |
| [KSks\x{17f}\x{212a}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| SKS | |
| 0: SKS | |
| sks | |
| 0: sks | |
| \x{212a}S\x{17f} | |
| 0: \x{212a}S\x{17f} | |
| \x{17f}K\x{212a} | |
| 0: \x{17f}K\x{212a} | |
| \= Expect no match | |
| s\x{212a}s | |
| No match | |
| K\x{17f}K | |
| No match | |
| /(.) \1/i,utf,caseless_restrict | |
| s S | |
| 0: s S | |
| 1: s | |
| k K | |
| 0: k K | |
| 1: k | |
| \= Expect no match | |
| s \x{17f} | |
| No match | |
| k \x{212a} | |
| No match | |
| /(.) (?r:\1)/i,utf | |
| s S | |
| 0: s S | |
| 1: s | |
| k K | |
| 0: k K | |
| 1: k | |
| \= Expect no match | |
| s \x{17f} | |
| No match | |
| k \x{212a} | |
| No match | |
| /(.) \1 z/Bir | |
| ------------------------------------------------------------------ | |
| Bra | |
| CBra 1 | |
| Any | |
| Ket | |
| /i | |
| /i \g{1} 0x01 | |
| /i z | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| s s z | |
| 0: s s z | |
| 1: s | |
| s S z | |
| 0: s S z | |
| 1: s | |
| /(?J:(?<DNAME>s)|(?<DNAME>.)) \k<DNAME> z/Bir | |
| ------------------------------------------------------------------ | |
| Bra | |
| Bra | |
| CBra 1 | |
| /i s | |
| Ket | |
| Alt | |
| CBra 2 | |
| Any | |
| Ket | |
| Ket | |
| /i | |
| /i \k<DNAME>2 0x01 | |
| /i z | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| s s z | |
| 0: s s z | |
| 1: s | |
| s S z | |
| 0: s S z | |
| 1: s | |
| /(.) \1/i,utf | |
| s S | |
| 0: s S | |
| 1: s | |
| k K | |
| 0: k K | |
| 1: k | |
| s \x{17f} | |
| 0: s \x{17f} | |
| 1: s | |
| k \x{212a} | |
| 0: k \x{212a} | |
| 1: k | |
| /(?:(?<A>ss)|(?<A>kk)) \k<A>/i,utf,dupnames,caseless_restrict | |
| sS Ss | |
| 0: sS Ss | |
| 1: sS | |
| kK Kk | |
| 0: kK Kk | |
| 1: <unset> | |
| 2: kK | |
| \= Expect no match | |
| sS \x{17f}s | |
| No match | |
| kK \x{212a}k | |
| No match | |
| /(?:(?<A>ss)|(?<A>kk)) \k<A>/i,utf,dupnames | |
| sS Ss | |
| 0: sS Ss | |
| 1: sS | |
| kK Kk | |
| 0: kK Kk | |
| 1: <unset> | |
| 2: kK | |
| sS \x{17f}s | |
| 0: sS \x{17f}s | |
| 1: sS | |
| kK \x{212a}k | |
| 0: kK \x{212a}k | |
| 1: <unset> | |
| 2: kK | |
| /(?:(?<A>s)|(?<A>k)) \k<A>{3,}!/i,utf,dupnames,caseless_restrict | |
| s SsSs! | |
| 0: s SsSs! | |
| 1: s | |
| k KkKk! | |
| 0: k KkKk! | |
| 1: <unset> | |
| 2: k | |
| \= Expect no match | |
| s \x{17f}sSs\x{17f}! | |
| No match | |
| k \x{212a}kKk\x{212a}! | |
| No match | |
| /(?:(?<A>s)|(?<A>k)) \k<A>{3,}!/i,utf,dupnames | |
| s SsSs! | |
| 0: s SsSs! | |
| 1: s | |
| k KkKk! | |
| 0: k KkKk! | |
| 1: <unset> | |
| 2: k | |
| s \x{17f}sSs\x{17f}! | |
| 0: s \x{17f}sSs\x{17f}! | |
| 1: s | |
| k \x{212a}kKk\x{212a}! | |
| 0: k \x{212a}kKk\x{212a}! | |
| 1: <unset> | |
| 2: k | |
| # End caseless restrict tests | |
| # TESTS for PCRE2_EXTRA_TURKISH_CASING - again, tests with and without. | |
| /i/i,utf | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \= Expect no match | |
| \x{0130} | |
| No match | |
| \x{0131} | |
| No match | |
| /i/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /I/i,utf | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \= Expect no match | |
| \x{0130} | |
| No match | |
| \x{0131} | |
| No match | |
| /I/i,utf,turkish_casing | |
| I | |
| 0: I | |
| \x{0131} | |
| 0: \x{131} | |
| \= Expect no match | |
| i | |
| No match | |
| \x{0130} | |
| No match | |
| /\x{0130}/i,utf | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /\x{0130}/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /\x{0131}/i,utf | |
| \x{0131} | |
| 0: \x{131} | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| \x{0130} | |
| No match | |
| /\x{0131}/i,utf,turkish_casing | |
| I | |
| 0: I | |
| \x{0131} | |
| 0: \x{131} | |
| \= Expect no match | |
| i | |
| No match | |
| \x{0130} | |
| No match | |
| /[i]/i,utf | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \= Expect no match | |
| \x{0130} | |
| No match | |
| \x{0131} | |
| No match | |
| /[i]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[^i]/i,utf | |
| \x{0130} | |
| 0: \x{130} | |
| \x{0131} | |
| 0: \x{131} | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| /[^i]/i,utf,turkish_casing | |
| I | |
| 0: I | |
| \x{0131} | |
| 0: \x{131} | |
| \= Expect no match | |
| i | |
| No match | |
| \x{0130} | |
| No match | |
| /[\x{0130}]/i,utf | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[\x{0130}]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[\x{0120}-\x{0130}]/i,utf | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[\x{0120}-\x{0130}]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[zi]/i,utf | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \= Expect no match | |
| \x{0130} | |
| No match | |
| \x{0131} | |
| No match | |
| /[zi]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[z\x{0130}]/i,utf | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[z\x{0130}]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /[iI]/i,utf | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \= Expect no match | |
| \x{0130} | |
| No match | |
| \x{0131} | |
| No match | |
| /[iI]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \x{0130} | |
| 0: \x{130} | |
| \x{0131} | |
| 0: \x{131} | |
| /[i\x{0130}]/i,utf | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| \x{0131} | |
| No match | |
| /[i\x{0130}]/i,utf,turkish_casing | |
| i | |
| 0: i | |
| \x{0130} | |
| 0: \x{130} | |
| \= Expect no match | |
| I | |
| No match | |
| \x{0131} | |
| No match | |
| /(.) \1/i,utf | |
| i I | |
| 0: i I | |
| 1: i | |
| \= Expect no match | |
| i \x{0130} | |
| No match | |
| \x{0131} I | |
| No match | |
| /(*TURKISH_CASING)(.) \1/i,utf | |
| i \x{0130} | |
| 0: i \x{130} | |
| 1: i | |
| \x{0131} I | |
| 0: \x{131} I | |
| 1: \x{131} | |
| \= Expect no match | |
| i I | |
| No match | |
| /(.) \1/i,utf,turkish_casing | |
| i \x{0130} | |
| 0: i \x{130} | |
| 1: i | |
| \x{0131} I | |
| 0: \x{131} I | |
| 1: \x{131} | |
| \= Expect no match | |
| i I | |
| No match | |
| /i/i,utf,caseless_restrict,turkish_casing | |
| Failed: error 206 at offset 0: PCRE2_EXTRA_TURKISH_CASING and PCRE2_EXTRA_CASELESS_RESTRICT are not compatible | |
| /i/i,turkish_casing | |
| Failed: error 204 at offset 0: PCRE2_EXTRA_TURKISH_CASING requires Unicode (UTF or UCP) mode | |
| /i/i,utf,caseless_restrict | |
| i | |
| 0: i | |
| /i/i,ucp,caseless_restrict | |
| i | |
| 0: i | |
| /b(?r:[\x{00FF}-\x{FFEE}])/i,utf,turkish_casing | |
| b\x{0130} | |
| 0: b\x{130} | |
| b\x{0131} | |
| 0: b\x{131} | |
| \= Expect no match | |
| bi | |
| No match | |
| bI | |
| No match | |
| bk | |
| No match | |
| /[\x60-\x7f]/i,ucp | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| /[\x60-\xc0]/i,ucp | |
| i | |
| 0: i | |
| I | |
| 0: I | |
| /[\x80-\xc0]/i,ucp | |
| \= Expect no match | |
| i | |
| No match | |
| I | |
| No match | |
| # End Turkish casing tests | |
| # TESTS for PCRE2_EXTRA_ASCII_xxx - again, tests with and without. | |
| # DIGITS | |
| /\d+/i,utf | |
| 123\x{660}456 | |
| 0: 123 | |
| /\d+/i,utf,ucp | |
| 123\x{660}456 | |
| 0: 123\x{660}456 | |
| /\d+/i,utf,ucp,ascii_bsd | |
| 123\x{660}456 | |
| 0: 123 | |
| /[\d]+/i,utf | |
| 123\x{660}456 | |
| 0: 123 | |
| /[\d]+/i,utf,ucp | |
| 123\x{660}456 | |
| 0: 123\x{660}456 | |
| /[\d]+/i,utf,ucp,ascii_bsd | |
| 123\x{660}456 | |
| 0: 123 | |
| /\d(?aD)\d(?-aD)\d/utf,ucp | |
| \x{660}9\x{660} | |
| 0: \x{660}9\x{660} | |
| \= Expect no match | |
| \x{660}\x{660}\x{660} | |
| No match | |
| /\d(?-aD)\d(?aD)\d/utf,ucp,ascii_bsd | |
| 999 | |
| 0: 999 | |
| 9\x{660}9 | |
| 0: 9\x{660}9 | |
| /\d(?a)\d(?-a)\d/utf,ucp | |
| \x{660}9\x{660} | |
| 0: \x{660}9\x{660} | |
| \= Expect no match | |
| \x{660}\x{660}\x{660} | |
| No match | |
| /\d(?-aD)\d(?aD)\d/utf,ucp,ascii_bsd | |
| 999 | |
| 0: 999 | |
| 9\x{660}9 | |
| 0: 9\x{660}9 | |
| # SPACES | |
| />\s+</i,utf | |
| > < | |
| 0: > < | |
| \= Expect no match | |
| >\x{a0} < | |
| No match | |
| />\s+</i,utf,ucp | |
| > < | |
| 0: > < | |
| >\x{a0} < | |
| 0: >\x{a0} < | |
| />\s+</i,utf,ucp,ascii_bss | |
| > < | |
| 0: > < | |
| \= Expect no match | |
| >\x{a0} < | |
| No match | |
| />[\s]+</i,utf | |
| > < | |
| 0: > < | |
| \= Expect no match | |
| >\x{a0} < | |
| No match | |
| />[\s]+</i,utf,ucp | |
| > < | |
| 0: > < | |
| >\x{a0} < | |
| 0: >\x{a0} < | |
| />[\s]+</i,utf,ucp,ascii_bss | |
| > < | |
| 0: > < | |
| \= Expect no match | |
| >\x{a0} < | |
| No match | |
| />\s(?aS)\s(?-aS)\s</utf,ucp | |
| >\x{a0} \x{a0}< | |
| 0: >\x{a0} \x{a0}< | |
| \= Expect no match | |
| >\x{a0}\x{a0}\x{a0}< | |
| No match | |
| />\s(?a)\s(?-a)\s</utf,ucp | |
| >\x{a0} \x{a0}< | |
| 0: >\x{a0} \x{a0}< | |
| \= Expect no match | |
| >\x{a0}\x{a0}\x{a0}< | |
| No match | |
| # WORDS | |
| /\w+/i,utf | |
| 123\x{660}abc | |
| 0: 123 | |
| /\w+/i,utf,ucp | |
| 123\x{660}abc | |
| 0: 123\x{660}abc | |
| /\w+/i,utf,ucp,ascii_bsw | |
| 123\x{660}abc | |
| 0: 123 | |
| /[\w]+/i,utf | |
| 123\x{660}abc | |
| 0: 123 | |
| /[\w]+/i,utf,ucp | |
| 123\x{660}abc | |
| 0: 123\x{660}abc | |
| /[\w]+/i,utf,ucp,ascii_bsw | |
| 123\x{660}abc | |
| 0: 123 | |
| /\w(?aW)\w(?-aW)\w/utf,ucp | |
| \x{660}A\x{c0} | |
| 0: \x{660}A\x{c0} | |
| \= Expect no match | |
| \x{660}\x{c0}\x{c0} | |
| No match | |
| /\w(?a)\w(?-a)\w/utf,ucp | |
| \x{660}A\x{c0} | |
| 0: \x{660}A\x{c0} | |
| \= Expect no match | |
| \x{660}\x{c0}\x{c0} | |
| No match | |
| # WORD BOUNDARY | |
| /\bABC\b/utf | |
| \x{c0}ABC\x{d0} | |
| 0: ABC | |
| /\bABC\b/utf,ucp | |
| \= Expect no match | |
| \x{c0}ABC\x{d0} | |
| No match | |
| /\bABC\b/utf,ucp,ascii_bsw | |
| \x{c0}ABC\x{d0} | |
| 0: ABC | |
| /\bABC\b/utf,ucp,ascii_all | |
| \x{c0}ABC\x{d0} | |
| 0: ABC | |
| # POSIX | |
| /^[[:digit:]]+$/utf,ucp | |
| 123456 | |
| 0: 123456 | |
| 123\x{660}456 | |
| 0: 123\x{660}456 | |
| /^[[:digit:]]+$/utf,ucp,ascii_digit | |
| 123456 | |
| 0: 123456 | |
| \= Expect no match | |
| 123\x{660}456 | |
| No match | |
| /[[:digit:]]+/g,utf,ucp,ascii_digit | |
| 123\x{660}456 | |
| 0: 123 | |
| 0: 456 | |
| /(?-aT)[[:digit:]](?aT)[[:digit:]]/utf,ucp,ascii_digit | |
| 11 | |
| 0: 11 | |
| \x{ff11}1 | |
| 0: \x{ff11}1 | |
| \= Expect no match | |
| 1\x{ff11} | |
| No match | |
| /(?-aT:[[:digit:]])[[:digit:]]/utf,ucp,ascii_digit | |
| 11 | |
| 0: 11 | |
| \x{ff11}1 | |
| 0: \x{ff11}1 | |
| \= Expect no match | |
| 1\x{ff11} | |
| No match | |
| /(?-aT:[[:digit:]])[[:digit:]]/utf,never_ucp,ascii_digit | |
| 11 | |
| 0: 11 | |
| \= Expect no match | |
| \x{ff11}1 | |
| No match | |
| 1\x{ff11} | |
| No match | |
| /[[:digit:]]+/utf,ucp,ascii_posix | |
| 123\x{660}456 | |
| 0: 123 | |
| /(?-aP)[[:digit:]](?aP)[[:digit:]]/utf,ucp,ascii_posix | |
| 11 | |
| 0: 11 | |
| \x{ff11}1 | |
| 0: \x{ff11}1 | |
| \= Expect no match | |
| 1\x{ff11} | |
| No match | |
| /(?-aP:[[:digit:]])[[:digit:]]/utf,ucp,ascii_posix | |
| 11 | |
| 0: 11 | |
| \x{ff11}1 | |
| 0: \x{ff11}1 | |
| \= Expect no match | |
| 1\x{ff11} | |
| No match | |
| /(?-a:[[:digit:]])[[:digit:]]/a,utf,ucp | |
| 11 | |
| 0: 11 | |
| \x{ff11}1 | |
| 0: \x{ff11}1 | |
| \= Expect no match | |
| 1\x{ff11} | |
| No match | |
| /^[[:xdigit:]]+$/utf,ucp | |
| f0 | |
| 0: f0 | |
| 1A | |
| 0: 1A | |
| d\x{ff10} | |
| 0: d\x{ff10} | |
| \x{ff26}8 | |
| 0: \x{ff26}8 | |
| \= Expect no match | |
| 8g\=no_jit | |
| No match | |
| /^[[:xdigit:]]+$/utf,ucp,ascii_digit | |
| f0 | |
| 0: f0 | |
| 1A | |
| 0: 1A | |
| \= Expect no match | |
| d\x{ff10} | |
| No match | |
| \x{ff26}8 | |
| No match | |
| 8g | |
| No match | |
| />[[:space:]]+</utf,ucp | |
| >\x{a0} \x{a0}< | |
| 0: >\x{a0} \x{a0}< | |
| >\x{a0}\x{a0}\x{a0}< | |
| 0: >\x{a0}\x{a0}\x{a0}< | |
| />[[:space:]]+</utf,ucp,ascii_posix | |
| \= Expect no match | |
| >\x{a0} \x{a0}< | |
| No match | |
| /(?aP)[[:alnum:]]+/i,ucp,utf | |
| abcáxyz | |
| 0: abc | |
| abc\x{660}xyz | |
| 0: abc | |
| /(?aP)[[:alnum:]\d]+/i,ucp,utf | |
| abc\x{660}xyz | |
| 0: abc\x{660}xyz | |
| /(*UCP)(*UTF)[[:alnum:]](?aP:[[:alnum:]])[[:alnum:]]/ | |
| \x{660}A\x{660} | |
| 0: \x{660}A\x{660} | |
| \= Expect no match | |
| \x{660}\x{660}\x{660} | |
| No match | |
| # VARIOUS | |
| /[\d\s\w]+/a,ucp,utf | |
| 9 A\x{660}Ã | |
| 0: 9 A | |
| 9 AÃ\x{660} | |
| 0: 9 A | |
| # End PCRE2_EXTRA_ASCII_xxx tests | |
| /(?<!(|l ))/utf | |
| (?<!(|l )) | |
| No match | |
| /\p{BC: A=}/utf | |
| Failed: error 147 at offset 10: unknown property after \P or \p | |
| here: \p{BC: A=} |<--| | |
| /abc/utf,substitute_extended,replace=>\777< | |
| abc | |
| 1: >\x{1ff}< | |
| /a(?<namED_1>b)c/utf,substitute_extended | |
| abc\=replace=>${namED_1}< | |
| 1: >b< | |
| /a(?<namedverylongbutperfectlylegalsoyoushouldnthaveaproblem_1>b)c/utf,substitute_extended | |
| abc\=replace=>${namedverylongbutperfectlylegalsoyoushouldnthaveaproblem_1}< | |
| 1: >b< | |
| /a(?<nämed>b)c/utf,substitute_extended | |
| abc\=replace=>${nämed}< | |
| 1: >b< | |
| /a(?<nämedverylongbutperfectlylegalsoyoushouldnthaveaproblem_٢>b)c/utf,substitute_extended | |
| abc\=replace=>${nämedverylongbutperfectlylegalsoyoushouldnthaveaproblem_٢}< | |
| 1: >b< | |
| # python_octal | |
| /\400/utf | |
| \o{400} | |
| 0: \x{100} | |
| /\400/utf,python_octal | |
| Failed: error 202 at offset 4: octal value given by \ddd is greater than \377 (forbidden by PCRE2_EXTRA_PYTHON_OCTAL) | |
| here: \400 |<--| | |
| /abc/utf,substitute_extended | |
| abc\=replace=\400 | |
| 1: \x{100} | |
| /abc/utf,substitute_extended,python_octal | |
| abc\=replace=\400 | |
| Failed: error -57 at offset 4 in replacement: bad escape sequence in replacement string | |
| here: \400 |<--| | |
| # Character range merging tests | |
| /[\x{1200}\s\x{1202}\d\x{1201}]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Xsp}\p{Nd}\x{1200}-\x{1202}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{11ff}\x{1200}\x{1201}\x{1202}\x{1203} | |
| 0: \x{1200}\x{1201}\x{1202} | |
| /[\x{2000}-\x{2500}\x{2100}-\x{2600}\d\x{1800}-\x{1fff}]+/B,utf,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Nd}\x{1800}-\x{2600}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{17ff}\x{1800}\x{2600}\x{2601} | |
| 0: \x{1800}\x{2600} | |
| /[\x{10008}\x{10003}\x{10006}\x{10004}\x{10007}]+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x{10003}-\x{10004}\x{10006}-\x{10008}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{10002}\x{10005}\x{10003}\x{10004}\x{10006}\x{10007}\x{10008}\x{10009} | |
| 0: \x{10003}\x{10004}\x{10006}\x{10007}\x{10008} | |
| /[\x{100}-\x{400}]+/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Ss\xb5\xff\x{100}-\x{400}\x{450}\x{1fbe}\x{1fd3}\x{1fe3}\x{2126}\x{2c62}\x{2c64}-\x{2c66}\x{2c6d}-\x{2c70}\x{2c7e}-\x{2c7f}\x{a78d}\x{a7aa}-\x{a7ae}\x{a7b0}-\x{a7b2}\x{a7c5}\x{a7cb}\x{a7dc}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| qS\x{ff}\x{100}\x{a7c5}\x{401} | |
| 0: S\x{ff}\x{100}\x{a7c5} | |
| \x{2c63}\x{2c64}\x{2c65}\x{2c66}\x{2c67} | |
| 0: \x{2c64}\x{2c65}\x{2c66} | |
| \x{a7af}\x{a7b0}\x{a7b1}\x{a7b2}\x{a7b3} | |
| 0: \x{a7b0}\x{a7b1}\x{a7b2} | |
| /[\x{100}-\x{400}\p{Ll}\x{500}-\x{700}\p{OldHungarian}\x{701}\p{bidiLRI}]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Ll}\p{Oldhungarian}\p{Bidilri}\x{100}-\x{400}\x{500}-\x{701}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\pC\x{100}-\x{200}\h\pN]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00- 0-9\x7f-\xa0\xad\xb2\xb3\xb9\xbc-\xbe\p{C}\p{N}\x{100}-\x{200}\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\pC\x{100}-\x{200}\v\pN]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\x1f0-9\x7f-\x9f\xad\xb2\xb3\xb9\xbc-\xbe\p{C}\p{N}\x{100}-\x{200}\x{2028}-\x{2029}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\pC\x{100}-\x{200}\H\pN]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\x1f!-\x9f\xa1-\xff\p{C}\p{N}\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 | |
| ------------------------------------------------------------------ | |
| /[\pC\x{100}-\x{200}\V\pN]/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\xff\p{C}\p{N}\x{100}-\x{2027}\x{202a}-\x{10ffff}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x{16e49}-\x{16e4f}\x{20000}\x{16e40}-\x{16e48}\pN]/Bi,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{N}\x{16e40}-\x{16e4f}\x{16e60}-\x{16e6f}\x{20000}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| /[\x80-\x{4000}\x90\x{400}-\x{f000}\xa0\x{4000}-\x{10ffff}]++/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-\x7f]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{7f}\x{80}\x{100}\x{10fffe}\x{10ffff}\x00 | |
| 0: \x{80}\x{100}\x{10fffe}\x{10ffff} | |
| /[\x80-\x{4000}\x90\x{400}-\x{f000}\xa0\pN\x{4000}-\x{10ffff}]++/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-/:-\x7f]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{7f}\x{80}\x{100}090\x{10fffe}\x{10ffff}\x00 | |
| 0: \x{80}\x{100}090\x{10fffe}\x{10ffff} | |
| /[\x00-\x{4000}\x{2000}-\x{10ffff}]++/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| abcd | |
| 0: abcd | |
| /[abc\p{Any}]{5,7}/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny{5} | |
| AllAny{0,2}+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| xyz | |
| No match | |
| /[^\p{Any}\x34\p{Any}]*cat/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| []*+ | |
| cat | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| cat | |
| 0: cat | |
| /[\pN\xf0-\x{10ffff}]{5,8}/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x00-/:-\xb1\xb4-\xb8\xba\xbb\xbf-\xef]{5,8}+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| ab0123456cd | |
| 0: 0123456 | |
| /[\x00-\x{398}\x{39a}-\x{10ffff}]*#(?i)[\x00-\x{398}\x{39a}-\x{10ffff}]*?#/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-\xff\x{100}-\x{398}\x{39a}-\x{10ffff}]* | |
| # | |
| AllAny*? | |
| /i # | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| abcd#efg# | |
| 0: abcd#efg# | |
| # Freeing memory on error test | |
| /[\x{100}-\x{400}][\x{100}-\x{300}][\x{100}-\x{200}]\8/i,utf | |
| Failed: error 115 at offset 53: reference to non-existent subpattern | |
| here: ...\x{200}]\8 |<-->| | |
| # Character list tests | |
| /[\x{100}-\x{7fff}\x{d7b0}\x{d7b1}\x{d7b3}\x{d7b4}\x{d7b6}\x{d7b7}\x{d7b9}\x{d7ba}]{12}/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x{100}-\x{7fff}\x{d7b0}-\x{d7b1}\x{d7b3}-\x{d7b4}\x{d7b6}-\x{d7b7}\x{d7b9}-\x{d7ba}]{12,12}+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{8000}\x{d7af}\x{d7b2}\x{d7b5}\x{d7b8}\x{d7bb}\x{100}\x{800}\x{7000}\x{7fff}\x{d7b0}\x{d7b1}\x{d7b3}\x{d7b4}\x{d7b6}\x{d7b7}\x{d7b9}\x{d7ba}\x{100} | |
| 0: \x{100}\x{800}\x{7000}\x{7fff}\x{d7b0}\x{d7b1}\x{d7b3}\x{d7b4}\x{d7b6}\x{d7b7}\x{d7b9}\x{d7ba} | |
| /([\x{6535}\x{6536}\x{6538}\x{6539}\x{653b}\x{653c}\x{653e}\x{653f}\x{6541}\x{6542}\x{8000}-\x{ffff}]#)+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| CBra 1 | |
| [\x{6535}-\x{6536}\x{6538}-\x{6539}\x{653b}-\x{653c}\x{653e}-\x{653f}\x{6541}-\x{6542}\x{8000}-\x{ffff}] | |
| # | |
| KetRmax | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{6534}#\x{6537}#\x{653a}#\x{653d}#\x{6540}#\x{6543}#\x{7fff}#\x{6535}#\x{6536}#\x{6538}#\x{6539}#\x{653b}#\x{653c}#\x{653e}#\x{653f}#\x{6541}#\x{6542}#\x{8000}#\x{c246}#\x{ffff} | |
| 0: \x{6535}#\x{6536}#\x{6538}#\x{6539}#\x{653b}#\x{653c}#\x{653e}#\x{653f}#\x{6541}#\x{6542}#\x{8000}#\x{c246}# | |
| 1: \x{c246}# | |
| /[\x{ff}\x{100}\x{8000}\x{8002}\x{8004}\x{8006}\x{8008}\x{800a}\x{800c}\x{800e}]+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\xff\x{100}\x{8000}\x{8002}\x{8004}\x{8006}\x{8008}\x{800a}\x{800c}\x{800e}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{ff}\x{100}\x{8000}\x{800a}\x{800e}\x{101} | |
| 0: \x{ff}\x{100}\x{8000}\x{800a}\x{800e} | |
| /[\x{ff}-\x{104}\x{8000}\x{8002}\x{8004}\x{8006}\x{8008}\x{800a}\x{800c}\x{800e}]+/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\xff\x{100}-\x{104}\x{8000}\x{8002}\x{8004}\x{8006}\x{8008}\x{800a}\x{800c}\x{800e}]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{ff}\x{100}\x{101}\x{104}\x{8000}\x{800a}\x{800e}\x{105} | |
| 0: \x{ff}\x{100}\x{101}\x{104}\x{8000}\x{800a}\x{800e} | |
| /[[:xdigit:]\x{400}-\x{600}]+/utf,ucp | |
| !a0\x{400}\x{600}9\x{3ff} | |
| 0: a0\x{400}\x{600}9 | |
| /[^[:xdigit:]\x{400}-\x{600}]+/utf,ucp | |
| \x{400}(\x{3ff}\x{601})\x{600} | |
| 0: (\x{3ff}\x{601}) | |
| /[[:xdigit:]\x{400}-\x{600}\x{700}]+/utf,ucp | |
| !A0\x{700}9\x{601} | |
| 0: A0\x{700}9 | |
| /[^[:xdigit:]\x{400}-\x{600}\x{700}]+/utf,ucp | |
| \x{600}(\x{6ff}\x{701}\x{3ff}\x{601})\x{700} | |
| 0: (\x{6ff}\x{701}\x{3ff}\x{601}) | |
| /[[:xdigit:]\x{400}-\x{600}\x{700}-\x{800}\x{900}]+/utf,ucp | |
| !f0\x{800}\x{600}9\x{601} | |
| 0: f0\x{800}\x{600}9 | |
| /[^[:xdigit:]\x{400}-\x{600}\x{700}-\x{800}\x{900}]+/utf,ucp | |
| \x{700}[\x{3ff}\x{601}\x{6ff}\x{801}\x{8ff}\x{901}]\x{900} | |
| 0: [\x{3ff}\x{601}\x{6ff}\x{801}\x{8ff}\x{901}] | |
| /[[:xdigit:]\x{400}-\x{410}\x{500}\x{600}-\x{610}\x{700}\x{800}-\x{810}]+/utf,ucp | |
| !F0\x{400}\x{410}\x{500}\x{600}\x{610}\x{700}\x{800}\x{810}9\x{7ff} | |
| 0: F0\x{400}\x{410}\x{500}\x{600}\x{610}\x{700}\x{800}\x{810}9 | |
| /[^[:xdigit:]\x{400}-\x{410}\x{500}\x{600}-\x{610}\x{700}\x{800}-\x{810}]+/utf,ucp | |
| \x{800}<\x{3ff}\x{411}\x{4ff}\x{501}\x{5ff}\x{611}\x{6ff}\x{701}\x{7ff}\x{811}>\x{810} | |
| 0: <\x{3ff}\x{411}\x{4ff}\x{501}\x{5ff}\x{611}\x{6ff}\x{701}\x{7ff}\x{811}> | |
| # -------------- | |
| # EXTENDED CHARACTER CLASSES (UTS#18) | |
| /[\p{Lu}[\p{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| C | |
| 0: C | |
| \= Expect no match | |
| [ | |
| No match | |
| a | |
| No match | |
| /[[\pL][\p{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{L}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| a | |
| 0: a | |
| \= Expect no match | |
| [ | |
| No match | |
| ] | |
| No match | |
| /[[\p{Lu}]||[\p{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 1 | |
| 0: 1 | |
| \= Expect no match | |
| a | |
| No match | |
| /[[^\pL][\p{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [^\p{L}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| . | |
| 0: . | |
| \= Expect no match | |
| A | |
| No match | |
| /[^[\pL][\p{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [^\p{L}] | |
| xclass: [^\p{Nd}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| . | |
| 0: . | |
| \= Expect no match | |
| A | |
| No match | |
| 0 | |
| No match | |
| /[^[\pL]&&[\p{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [^\p{L}] | |
| xclass: [^\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 0 | |
| 0: 0 | |
| /[[\p{Lu}\p{Ll}]||[\p{Nd}\p{Ll}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}\p{Ll}] | |
| xclass: [\p{Nd}\p{Ll}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 1 | |
| 0: 1 | |
| c | |
| 0: c | |
| \= Expect no match | |
| _ | |
| No match | |
| /[[\p{Lu}\p{Ll}]&&[\p{Nd}\p{Ll}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}\p{Ll}] | |
| xclass: [\p{Nd}\p{Ll}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| c | |
| 0: c | |
| \= Expect no match | |
| A | |
| No match | |
| 1 | |
| No match | |
| _ | |
| No match | |
| /[[\p{Lu}\p{Ll}]--[\p{Nd}\p{Ll}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}\p{Ll}] | |
| xclass: [^\p{Nd}\p{Ll}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| \= Expect no match | |
| 1 | |
| No match | |
| c | |
| No match | |
| _ | |
| No match | |
| /[[\p{Lu}\p{Ll}]~~[\p{Nd}\p{Ll}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}\p{Ll}] | |
| xclass: [\p{Nd}\p{Ll}] | |
| XOR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 1 | |
| 0: 1 | |
| \= Expect no match | |
| c | |
| No match | |
| _ | |
| No match | |
| /[\pL[]]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [A-Z\]a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| ] | |
| 0: ] | |
| \= Expect no match | |
| [ | |
| No match | |
| /[\pL[^]]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\]] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| [ | |
| 0: [ | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| ] | |
| No match | |
| /[\pL[]]/B,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| \= Expect no match | |
| ] | |
| No match | |
| [ | |
| No match | |
| /[\pL[^]]/B,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 0 | |
| 0: 0 | |
| [ | |
| 0: [ | |
| ] | |
| 0: ] | |
| /[\dAC-E[:space:]\p{Lu}&&[^z]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x09-\x0d 0-9A-Z\xc0-\xd6\xd8-\xde\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| A | |
| 0: A | |
| C | |
| 0: C | |
| D | |
| 0: D | |
| E | |
| 0: E | |
| \t | |
| 0: \x09 | |
| \= Expect no match | |
| a | |
| No match | |
| ; | |
| No match | |
| /[z||[^\dAC-E[:space:]\p{Lu}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\x09-\x0d 0-9A-Z\xc0-\xd6\xd8-\xde\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| z | |
| 0: z | |
| ; | |
| 0: ; | |
| \= Expect no match | |
| 0 | |
| No match | |
| A | |
| No match | |
| C | |
| No match | |
| D | |
| No match | |
| E | |
| No match | |
| B | |
| No match | |
| F | |
| No match | |
| \t | |
| No match | |
| /[\p{Lu}\p{Nd}||cd]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [0-9A-Zcd\xc0-\xd6\xd8-\xde\p{Lu}\p{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 0 | |
| 0: 0 | |
| c | |
| 0: c | |
| \= Expect no match | |
| e | |
| No match | |
| /[[\p{Lu}]\p{Nd}||[c]d]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [0-9A-Zcd\xc0-\xd6\xd8-\xde] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 0 | |
| 0: 0 | |
| c | |
| 0: c | |
| \= Expect no match | |
| e | |
| No match | |
| /[\p{Lu}[\p{Nd}]||c[d]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [0-9A-Zcd\xc0-\xd6\xd8-\xde] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| 0 | |
| 0: 0 | |
| c | |
| 0: c | |
| \= Expect no match | |
| e | |
| No match | |
| /[\p{Lu}-]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| a | |
| No match | |
| /[-\p{Lu}]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| a | |
| No match | |
| /[\pL-]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| 0 | |
| No match | |
| /[-\pL]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| 0 | |
| No match | |
| /[\p{Lu}-]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| a | |
| No match | |
| /[-\p{Lu}]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Z\xc0-\xd6\xd8-\xde\p{Lu}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| a | |
| No match | |
| /[\pL-]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| 0 | |
| No match | |
| /[-\pL]/B | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\-A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| - | |
| 0: - | |
| \= Expect no match | |
| 0 | |
| No match | |
| /[\p{Lu}-z]/B,alt_extended_class | |
| Failed: error 150 at offset 8: invalid range in character class | |
| here: [\p{Lu}- |<--| z] | |
| /[z-\p{Lu}]/B,alt_extended_class | |
| Failed: error 150 at offset 9: invalid range in character class | |
| here: [z-\p{Lu} |<--| ] | |
| /[\pL-z]/B,alt_extended_class | |
| Failed: error 150 at offset 5: invalid range in character class | |
| here: [\pL- |<--| z] | |
| /[z-\pL]/B,alt_extended_class | |
| Failed: error 150 at offset 6: invalid range in character class | |
| here: [z-\pL |<--| ] | |
| /[\p{Lu}-&&-\pL]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [\-A-Z\xc0-\xd6\xd8-\xde] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{L}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| - | |
| 0: - | |
| A | |
| 0: A | |
| \= Expect no match | |
| a | |
| No match | |
| /[-\p{Lu}&&\pL-]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [\-A-Z\xc0-\xd6\xd8-\xde] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{L}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| - | |
| 0: - | |
| A | |
| 0: A | |
| \= Expect no match | |
| a | |
| No match | |
| /[[\p{Lu}]-&&-[\pL]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [\-A-Z\xc0-\xd6\xd8-\xde] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{L}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| - | |
| 0: - | |
| A | |
| 0: A | |
| \= Expect no match | |
| a | |
| No match | |
| /[-[\p{Lu}]&&[\pL]-]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [\-A-Z\xc0-\xd6\xd8-\xde] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{L}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| - | |
| 0: - | |
| A | |
| 0: A | |
| \= Expect no match | |
| a | |
| No match | |
| /(?xx:[ ^ 5[ ^ \p{Nd}] ])/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| Bra | |
| [0-46-9\p{Nd}] | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 4 | |
| 0: 4 | |
| \= Expect no match | |
| a | |
| No match | |
| ; | |
| No match | |
| 5 | |
| No match | |
| /(?xx:[ ^ \p{Nd}[ ^ 5] ])/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| Bra | |
| [] | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| a | |
| No match | |
| ; | |
| No match | |
| 4 | |
| No match | |
| 5 | |
| No match | |
| /(?xx:[ ^ \p{Nd}[ ^ \p{Nd}] ])/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [^\p{Nd}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ] | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| a | |
| No match | |
| ; | |
| No match | |
| 4 | |
| No match | |
| 5 | |
| No match | |
| /[ ^ \p{Ll}[ ^ \p{Nd}] ]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [ 0-9^a-z\xb5\xdf-\xf6\xf8-\xff] | |
| xclass: [\p{Ll}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x20 | |
| 0: | |
| ^ | |
| 0: ^ | |
| a | |
| 0: a | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| A | |
| No match | |
| ; | |
| No match | |
| /[a-c--\p{Nd}]+/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [a-c]++ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| ac | |
| 0: ac | |
| a | |
| 0: a | |
| \= Expect no match | |
| 0 | |
| No match | |
| /[a-c--\p{Nd}]{2,3}/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [a-c]{2,3}+ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| ac | |
| 0: ac | |
| cac | |
| 0: cac | |
| \= Expect no match | |
| a | |
| No match | |
| 00 | |
| No match | |
| /x[a-c--\p{Nd}]+y/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| x | |
| [a-c]++ | |
| y | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| xacy | |
| 0: xacy | |
| xaay | |
| 0: xaay | |
| xay | |
| 0: xay | |
| \= Expect no match | |
| zacy | |
| No match | |
| xacz | |
| No match | |
| xy | |
| No match | |
| x0y | |
| No match | |
| /[\pL--\pL--\pL]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{L}] | |
| xclass: [^\p{L}] | |
| AND | |
| xclass: [^\p{L}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| A | |
| No match | |
| 1 | |
| No match | |
| /[[\pL--\pL]--\pL]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{L}] | |
| xclass: [^\p{L}] | |
| AND | |
| xclass: [^\p{L}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| A | |
| No match | |
| 1 | |
| No match | |
| /[\pL--[\pL--\pL]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{L}] | |
| xclass: [^\p{L}] | |
| xclass: [\p{L}] | |
| OR | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| \= Expect no match | |
| 1 | |
| No match | |
| /[\pL--^\p{Nd}]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\xff] | |
| xclass: [\p{L}] | |
| xclass: [^\p{Nd}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| A | |
| 0: A | |
| \= Expect no match | |
| 1 | |
| No match | |
| ^ | |
| No match | |
| /([a-z--[\pL&&n]])\1/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| CBra 1 | |
| [a-mo-z] | |
| Ket | |
| \g{1} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| aa | |
| 0: aa | |
| 1: a | |
| zz | |
| 0: zz | |
| 1: z | |
| \= Expect no match | |
| az | |
| No match | |
| nn | |
| No match | |
| /(x[a-z--[\pL&&n]]y)\1/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| CBra 1 | |
| x | |
| [a-mo-z] | |
| y | |
| Ket | |
| \g{1} | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| xayxay | |
| 0: xayxay | |
| 1: xay | |
| xzyxzy | |
| 0: xzyxzy | |
| 1: xzy | |
| \= Expect no match | |
| xnyxny | |
| No match | |
| /(?:_\1|([a-z--[\pL&&n]])){2}/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| Bra | |
| _ | |
| \g{1} | |
| Alt | |
| CBra 1 | |
| [a-mo-z] | |
| Ket | |
| Ket | |
| Bra | |
| _ | |
| \g{1} | |
| Alt | |
| CBra 1 | |
| [a-mo-z] | |
| Ket | |
| Ket | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a_a | |
| 0: a_a | |
| 1: a | |
| z_z | |
| 0: z_z | |
| 1: z | |
| \= Expect no match | |
| a_z | |
| No match | |
| n_n | |
| No match | |
| /(?:_\1|([a-z--[\pL&&n]]))+/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| Bra | |
| _ | |
| \g{1} | |
| Alt | |
| CBra 1 | |
| [a-mo-z] | |
| Ket | |
| KetRmax | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a_a | |
| 0: a_a | |
| 1: a | |
| z_z | |
| 0: z_z | |
| 1: z | |
| a_partial | |
| 0: a | |
| 1: a | |
| \= Expect no match | |
| n_n | |
| No match | |
| /[\p{Nd}||[\pL--\p{Lu}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Nd}] | |
| xclass: [\p{L}] | |
| xclass: [^\p{Lu}] | |
| AND | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| C | |
| No match | |
| /[\P{Nd}||2]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\x00-/2:-\xff\P{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| _ | |
| 0: _ | |
| Z | |
| 0: Z | |
| 2 | |
| 0: 2 | |
| \= Expect no match | |
| 1 | |
| No match | |
| 3 | |
| No match | |
| /[^[\P{Nd}]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\P{Nd}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 1 | |
| 0: 1 | |
| 2 | |
| 0: 2 | |
| \= Expect no match | |
| _ | |
| No match | |
| z | |
| No match | |
| # caseless tests | |
| /[\p{Lu}~~\p{Ll}]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Lu}] | |
| xclass: [\p{Ll}] | |
| XOR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| A | |
| 0: A | |
| \= Expect no match | |
| _ | |
| No match | |
| 1 | |
| No match | |
| /[[\p{Lu}1]~~\p{Ll}]/iB,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [1] | |
| xclass: [\p{Lc}] | |
| xclass: [\p{Lc}] | |
| XOR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 1 | |
| 0: 1 | |
| \= Expect no match | |
| a | |
| No match | |
| A | |
| No match | |
| _ | |
| No match | |
| /[[\p{Lu}1]&&[\p{Ll}1]]/B,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [1] | |
| xclass: [\p{Lu}] | |
| xclass: [\p{Ll}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 1 | |
| 0: 1 | |
| \= Expect no match | |
| a | |
| No match | |
| A | |
| No match | |
| _ | |
| No match | |
| 2 | |
| No match | |
| /[[\p{Lu}1]&&[\p{Ll}1]]/iB,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [1A-Za-z\xb5\xc0-\xd6\xd8-\xf6\xf8-\xff] | |
| xclass: [\p{Lc}] | |
| xclass: [\p{Lc}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| A | |
| 0: A | |
| 1 | |
| 0: 1 | |
| \= Expect no match | |
| _ | |
| No match | |
| 2 | |
| No match | |
| \ | |
| No match | |
| /[\p{Thai}&&\p{Nd}]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \= Expect no match | |
| 0 | |
| No match | |
| a | |
| No match | |
| \x{0e01} | |
| No match | |
| /[\p{Thai}||\p{Nd}]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| OR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \x{0e01} | |
| 0: \x{e01} | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| a | |
| No match | |
| /[\p{Thai}~~\p{Nd}]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| XOR | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e01} | |
| 0: \x{e01} | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| a | |
| No match | |
| /[[\p{Thai}&&\p{Nd}]~~[^a]]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| eclass[ | |
| bitmap: [^a] | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| NOT | |
| ] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e01} | |
| 0: \x{e01} | |
| b | |
| 0: b | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| a | |
| No match | |
| \x{0e51} | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]?$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]? | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \ | |
| 0: | |
| \= Expect no match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]??$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]?? | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \ | |
| 0: | |
| \= Expect no match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]?+$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]?+ | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \ | |
| 0: | |
| \= Expect no match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{3}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{3,3} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{3,}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{3,} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51}\x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{3,}?$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{3,}? | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51}\x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{3,}+$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{3,}+ | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51}\x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{,3}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{0,3} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \ | |
| 0: | |
| \x{0e51} | |
| 0: \x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51}\x{0e51}\x{0e51}\x{0e51} | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{,3}?$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{0,3}? | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \ | |
| 0: | |
| \x{0e51} | |
| 0: \x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51}\x{0e51}\x{0e51}\x{0e51} | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]{,3}+$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]{0,3}+ | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \ | |
| 0: | |
| \x{0e51} | |
| 0: \x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51}\x{0e51}\x{0e51}\x{0e51} | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]+\x{0e51}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]+ | |
| \x{e51} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]+?\x{0e51}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]+? | |
| \x{e51} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]++\x{0e51}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]++ | |
| \x{e51} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \x{0e51}\x{0e51} | |
| No match | |
| \x{0e51}\x{0e51}\x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]*\x{0e51}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]* | |
| \x{e51} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]*?\x{0e51}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]*? | |
| \x{e51} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51} | |
| \x{0e51}\x{0e51}\x{0e51} | |
| 0: \x{e51}\x{e51}\x{e51} | |
| \= Expect no match | |
| \ | |
| No match | |
| a | |
| No match | |
| /^[\p{Thai}&&\p{Nd}]*+\x{0e51}$/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| eclass[ | |
| no bitmap | |
| xclass: [\p{Thai}] | |
| xclass: [\p{Nd}] | |
| AND | |
| ]*+ | |
| \x{e51} | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| \x{0e51} | |
| No match | |
| \x{0e51}\x{0e51} | |
| No match | |
| \x{0e51}\x{0e51}\x{0e51} | |
| No match | |
| \ | |
| No match | |
| a | |
| No match | |
| /[^[^\p{Thai}]]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{Thai}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e51} | |
| 0: \x{e51} | |
| \= Expect no match | |
| a | |
| No match | |
| /[^[^\p{L}]]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0e01} | |
| 0: \x{e01} | |
| a | |
| 0: a | |
| \= Expect no match | |
| 0 | |
| No match | |
| /[\pL&&[^\x00-\xFF]]/B,utf,alt_extended_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{21e} | |
| 0: \x{21e} | |
| \= Expect no match | |
| a | |
| No match | |
| /[\pL&&\x{100}-\x{1000}]{3,6}+/utf,alt_extended_class | |
| \x{145}\x{18b}A\x{145}\x{18b}\x{1C2}\x{21a}\x{257}\x{2ae}\x{0145}\x{18b} | |
| 0: \x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae} | |
| \x{145}A\x{145}\x{18b}\x{1C2}B | |
| 0: \x{145}\x{18b}\x{1c2} | |
| /[\pL&&\x{100}-\x{1000}]{3,6}\x{2A3}/utf,alt_extended_class | |
| \x{145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3} | |
| 0: \x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3} | |
| \x{145}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3} | |
| 0: \x{145}\x{18b}\x{1c2}\x{2a3} | |
| \x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3}\x{2a3} | |
| 0: \x{145}\x{18b}\x{1c2}\x{2a3}\x{2a3} | |
| \x{0145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3} | |
| 0: \x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3} | |
| /[\pL&&\x{100}-\x{1000}]{3,6}?\x{2A3}/utf,alt_extended_class | |
| \x{145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3} | |
| 0: \x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{2a3} | |
| \x{145}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3} | |
| 0: \x{145}\x{18b}\x{1c2}\x{2a3} | |
| \x{2a3}A\x{145}\x{18b}\x{1c2}\x{2a3}\x{2a3} | |
| 0: \x{145}\x{18b}\x{1c2}\x{2a3} | |
| \x{0145}\x{18b}\x{2a3}A\x{145}\x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3} | |
| 0: \x{18b}\x{1c2}\x{21a}\x{257}\x{2ae}\x{145}\x{2a3} | |
| /[\P{scx=Beng}\P{scx=Deva}\pM--[\x{2000}-\x{3000}]]+/utf,alt_extended_class | |
| \x{964}\x{2000}\x{3000}A\x{951}\x{1fff}\x{3001}\x{965} | |
| 0: A\x{951}\x{1fff}\x{3001} | |
| /[\p{Thai}~~[^]]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\p{Thai}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0d01} | |
| 0: \x{d01} | |
| a | |
| 0: a | |
| \= Expect no match | |
| \x{0e01} | |
| No match | |
| /[[]~~[^]]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0d01} | |
| 0: \x{d01} | |
| a | |
| 0: a | |
| /[[^]~~[]]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x{0d01} | |
| 0: \x{d01} | |
| a | |
| 0: a | |
| /[[^]~~[^]]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \= Expect no match | |
| \x{0d01} | |
| No match | |
| a | |
| No match | |
| /[[^]||\pL]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| a | |
| 0: a | |
| /[\pL||[^]]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| AllAny | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| a | |
| 0: a | |
| /[\pL~~[^]]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| a | |
| No match | |
| /[[^]~~\pL]/B,utf,alt_extended_class,allow_empty_class | |
| ------------------------------------------------------------------ | |
| Bra | |
| [^\p{L}] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| 0 | |
| 0: 0 | |
| \= Expect no match | |
| a | |
| No match | |
| /([\p{Lu}&&\p{sc=Hung}]+?\x{10c81})+#/utf,alt_extended_class | |
| \x{10c80}\x{10cb2}\x{10c81}\x{10c85}\x{10cb0}\x{10cf2}\x{10c81}#\x{10c80}\x{10cb2}\x{10c81}\x{10c85}\x{10cb0}\x{10c81}## | |
| 0: \x{10c80}\x{10cb2}\x{10c81}\x{10c85}\x{10cb0}\x{10c81}# | |
| 1: \x{10c85}\x{10cb0}\x{10c81} | |
| /[[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]] | |
| &&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]&&[\pN--[\pC||\x{9F5}]]]/utf,alt_extended_class | |
| # -------------- | |
| /^([\h\x{9000}\x{9002}\x{9004}][\v\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}][\h\v\x{9000}],){4}$/B,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| ^ | |
| CBra 1 | |
| [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}] | |
| [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}] | |
| [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}] | |
| , | |
| Ket | |
| CBra 1 | |
| [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}] | |
| [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}] | |
| [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}] | |
| , | |
| Ket | |
| CBra 1 | |
| [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}] | |
| [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}] | |
| [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}] | |
| , | |
| Ket | |
| CBra 1 | |
| [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}\x{9000}\x{9002}\x{9004}] | |
| [\x0a-\x0d\x85\x{2028}-\x{2029}\x{9000}\x{9002}\x{9004}\x{9006}\x{9008}] | |
| [\x09-\x0d \x85\xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{2028}-\x{2029}\x{202f}\x{205f}\x{3000}\x{9000}] | |
| , | |
| Ket | |
| $ | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| \x09\x0a\x0d,\x{1680}\x{2028}\x{1680},\x{180e}\x{2029}\x{180e},\x{9000}\x{9000}\x{9000}, | |
| 0: \x{09}\x{0a}\x{0d},\x{1680}\x{2028}\x{1680},\x{180e}\x{2029}\x{180e},\x{9000}\x{9000}\x{9000}, | |
| 1: \x{9000}\x{9000}\x{9000}, | |
| /[z-\p{Lu}]/ | |
| Failed: error 150 at offset 9: invalid range in character class | |
| here: [z-\p{Lu} |<--| ] | |
| /[z-\pL]/ | |
| Failed: error 150 at offset 6: invalid range in character class | |
| here: [z-\pL |<--| ] | |
| /[\p{Lu}-z]/ | |
| Failed: error 150 at offset 8: invalid range in character class | |
| here: [\p{Lu}- |<--| z] | |
| /[\pL-z]/ | |
| Failed: error 150 at offset 5: invalid range in character class | |
| here: [\pL- |<--| z] | |
| /[a\x{e1}]/iB | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Aa\xe1] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| A | |
| 0: A | |
| \x{e1} | |
| 0: \xe1 | |
| /[a\x{e1}]/iB,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Aa\xc1\xe1] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| A | |
| 0: A | |
| \x{e1} | |
| 0: \x{e1} | |
| \x{c1} | |
| 0: \x{c1} | |
| /[a\x{e1}]/iB,ucp | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Aa\xc1\xe1] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| A | |
| 0: A | |
| \x{e1} | |
| 0: \xe1 | |
| \x{c1} | |
| 0: \xc1 | |
| /[a\x{e1}]/iB,ucp,utf | |
| ------------------------------------------------------------------ | |
| Bra | |
| [Aa\xc1\xe1] | |
| Ket | |
| End | |
| ------------------------------------------------------------------ | |
| a | |
| 0: a | |
| A | |
| 0: A | |
| \x{e1} | |
| 0: \x{e1} | |
| \x{c1} | |
| 0: \x{c1} | |
| # An unterminated \N{U+ escape at the end of the pattern must | |
| # report an error offset that lies within the pattern. | |
| /(*UTF)\N{U+2/ | |
| Failed: error 167 at offset 12: non-hex character in \x{} (closing brace missing?) | |
| here: ...UTF)\N{U+2 |<--| | |
| # End of testinput5 |