| // | |
| // Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved. | |
| // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| // | |
| // This code is free software; you can redistribute it and/or modify it | |
| // under the terms of the GNU General Public License version 2 only, as | |
| // published by the Free Software Foundation. | |
| // | |
| // This code is distributed in the hope that it will be useful, but WITHOUT | |
| // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| // version 2 for more details (a copy is included in the LICENSE file that | |
| // accompanied this code). | |
| // | |
| // You should have received a copy of the GNU General Public License version | |
| // 2 along with this work; if not, write to the Free Software Foundation, | |
| // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| // | |
| // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| // or visit www.oracle.com if you need additional information or have any | |
| // questions. | |
| // | |
| // | |
| // This file contains test cases with BMP characters for regular expressions. | |
| // A test case consists of three lines: | |
| // The first line is a pattern used in the test | |
| // The second line is the input to search for the pattern in | |
| // The third line is a concatentation of the match, the number of groups, | |
| // and the contents of the first four subexpressions. | |
| // Empty lines and lines beginning with comment slashes are ignored. | |
| // Test unsetting of backed off groups | |
| ^(\u3042)?\u3042 | |
| \u3042 | |
| true \u3042 1 | |
| ^(\u3042\u3042(\u3043\u3043)?)+$ | |
| \u3042\u3042\u3043\u3043\u3042\u3042 | |
| true \u3042\u3042\u3043\u3043\u3042\u3042 2 \u3042\u3042 \u3043\u3043 | |
| ((\u3042|\u3043)?\u3043)+ | |
| \u3043 | |
| true \u3043 2 \u3043 | |
| (\u3042\u3042\u3042)?\u3042\u3042\u3042 | |
| \u3042\u3042\u3042 | |
| true \u3042\u3042\u3042 1 | |
| ^(\u3042(\u3043)?)+$ | |
| \u3042\u3043\u3042 | |
| true \u3042\u3043\u3042 2 \u3042 \u3043 | |
| ^(\u3042(\u3043(\u3044)?)?)?\u3042\u3043\u3044 | |
| \u3042\u3043\u3044 | |
| true \u3042\u3043\u3044 3 | |
| ^(\u3042(\u3043(\u3044))).* | |
| \u3042\u3043\u3044 | |
| true \u3042\u3043\u3044 3 \u3042\u3043\u3044 \u3043\u3044 \u3044 | |
| // use of x modifier | |
| \u3042\u3043\u3044(?x)\u3043la\u3049 | |
| \u3042\u3043\u3044\u3043la\u3049 | |
| true \u3042\u3043\u3044\u3043la\u3049 0 | |
| \u3042\u3043\u3044(?x) bla\u3049 | |
| \u3042\u3043\u3044bla\u3049 | |
| true \u3042\u3043\u3044bla\u3049 0 | |
| \u3042\u3043\u3044(?x) bla\u3049 ble\u3044\u3049 | |
| \u3042\u3043\u3044bla\u3049ble\u3044\u3049 | |
| true \u3042\u3043\u3044bla\u3049ble\u3044\u3049 0 | |
| \u3042\u3043\u3044(?x) bla\u3049 # ignore comment | |
| \u3042\u3043\u3044bla\u3049 | |
| true \u3042\u3043\u3044bla\u3049 0 | |
| // Simple alternation | |
| \u3042|\u3043 | |
| \u3042 | |
| true \u3042 0 | |
| \u3042|\u3043 | |
| \u305B | |
| false 0 | |
| \u3042|\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042|\u3043|\u3044\u3045 | |
| \u3044\u3045 | |
| true \u3044\u3045 0 | |
| \u3042|\u3042\u3045 | |
| \u3042\u3045 | |
| true \u3042 0 | |
| \u305B(\u3042|\u3042\u3044)\u3043 | |
| \u305B\u3042\u3044\u3043 | |
| true \u305B\u3042\u3044\u3043 1 \u3042\u3044 | |
| // Simple char class | |
| [\u3042\u3043\u3044]+ | |
| \u3042\u3043\u3042\u3043\u3042\u3043 | |
| true \u3042\u3043\u3042\u3043\u3042\u3043 0 | |
| [\u3042\u3043\u3044]+ | |
| \u3045\u3046\u3047\u3048 | |
| false 0 | |
| [\u3042\u3043\u3044]+[\u3045\u3046\u3047]+[\u3048\u3049\u304A]+ | |
| \u305B\u305B\u305B\u3042\u3042\u3045\u3045\u3048\u3048\u305B\u305B\u305B | |
| true \u3042\u3042\u3045\u3045\u3048\u3048 0 | |
| // Range char class | |
| [\u3042-\u3048]+ | |
| \u305B\u305B\u305B\u3048\u3048\u3048 | |
| true \u3048\u3048\u3048 0 | |
| [\u3042-\u3048]+ | |
| mmm | |
| false 0 | |
| [\u3042-]+ | |
| \u305B\u3042-9\u305B | |
| true \u3042- 0 | |
| [\u3042-\\u4444]+ | |
| \u305B\u3042-9\u305B | |
| true \u305B\u3042 0 | |
| // Negated char class | |
| [^\u3042\u3043\u3044]+ | |
| \u3042\u3043\u3042\u3043\u3042\u3043 | |
| false 0 | |
| [^\u3042\u3043\u3044]+ | |
| \u3042\u3042\u3042\u3043\u3043\u3043\u3044\u3044\u3044\u3045\u3046\u3047\u3048 | |
| true \u3045\u3046\u3047\u3048 0 | |
| // Making sure a ^ not in first position matches literal ^ | |
| [\u3042\u3043\u3044^\u3043] | |
| \u3043 | |
| true \u3043 0 | |
| [\u3042\u3043\u3044^\u3043] | |
| ^ | |
| true ^ 0 | |
| // Class union and intersection | |
| [\u3042\u3043\u3044[\u3045\u3046\u3047]] | |
| \u3043 | |
| true \u3043 0 | |
| [\u3042\u3043\u3044[\u3045\u3046\u3047]] | |
| \u3046 | |
| true \u3046 0 | |
| [\u3042-\u3045[0-9][\u304e-\u3051]] | |
| \u3042 | |
| true \u3042 0 | |
| [\u3042-\u3045[0-9][\u304e-\u3051]] | |
| \u3050 | |
| true \u3050 0 | |
| [\u3042-\u3045[0-9][\u304e-\u3051]] | |
| 4 | |
| true 4 0 | |
| [\u3042-\u3045[0-9][\u304e-\u3051]] | |
| \u3046 | |
| false 0 | |
| [\u3042-\u3045[0-9][\u304e-\u3051]] | |
| \u3056 | |
| false 0 | |
| [[\u3042-\u3045][0-9][\u304e-\u3051]] | |
| \u3043 | |
| true \u3043 0 | |
| [[\u3042-\u3045][0-9][\u304e-\u3051]] | |
| \u305B | |
| false 0 | |
| [\u3042-\u3044[\u3045-\u3047[\u3048-\u304A]]] | |
| \u3042 | |
| true \u3042 0 | |
| [\u3042-\u3044[\u3045-\u3047[\u3048-\u304A]]] | |
| \u3046 | |
| true \u3046 0 | |
| [\u3042-\u3044[\u3045-\u3047[\u3048-\u304A]]] | |
| \u3049 | |
| true \u3049 0 | |
| [\u3042-\u3044[\u3045-\u3047[\u3048-\u304A]]] | |
| m | |
| false 0 | |
| [\u3042-\u3044[\u3045-\u3047[\u3048-\u304A]]m] | |
| m | |
| true m 0 | |
| [\u3042\u3043\u3044[\u3045\u3046\u3047]\u3048\u3049\u304A] | |
| \u3042 | |
| true \u3042 0 | |
| [\u3042\u3043\u3044[\u3045\u3046\u3047]\u3048\u3049\u304A] | |
| \u3045 | |
| true \u3045 0 | |
| [\u3042\u3043\u3044[\u3045\u3046\u3047]\u3048\u3049\u304A] | |
| \u3049 | |
| true \u3049 0 | |
| [\u3042\u3043\u3044[\u3045\u3046\u3047]\u3048\u3049\u304A] | |
| w | |
| false 0 | |
| [\u3042-\u3044&&[\u3045-\u3047]] | |
| \u3042 | |
| false 0 | |
| [\u3042-\u3044&&[\u3045-\u3047]] | |
| \u3046 | |
| false 0 | |
| [\u3042-\u3044&&[\u3045-\u3047]] | |
| \u305B | |
| false 0 | |
| [[\u3042-\u3044]&&[\u3045-\u3047]] | |
| \u3042 | |
| false 0 | |
| [[\u3042-\u3044]&&[\u3045-\u3047]] | |
| \u3046 | |
| false 0 | |
| [[\u3042-\u3044]&&[\u3045-\u3047]] | |
| \u305B | |
| false 0 | |
| [\u3042-\u3044&&\u3045-\u3047] | |
| \u3042 | |
| false 0 | |
| [\u3042-\u304e&&\u304e-\u305B] | |
| \u304e | |
| true \u304e 0 | |
| [\u3042-\u304e&&\u304e-\u305B&&\u3042-\u3044] | |
| \u304e | |
| false 0 | |
| [\u3042-\u304e&&\u304e-\u305B&&\u3042-\u305B] | |
| \u304e | |
| true \u304e 0 | |
| [[\u3042-\u304e]&&[\u304e-\u305B]] | |
| \u3042 | |
| false 0 | |
| [[\u3042-\u304e]&&[\u304e-\u305B]] | |
| \u304e | |
| true \u304e 0 | |
| [[\u3042-\u304e]&&[\u304e-\u305B]] | |
| \u305B | |
| false 0 | |
| [[\u3042-\u304e]&&[^\u3042-\u3044]] | |
| \u3042 | |
| false 0 | |
| [[\u3042-\u304e]&&[^\u3042-\u3044]] | |
| \u3045 | |
| true \u3045 0 | |
| [\u3042-\u304e&&[^\u3042-\u3044]] | |
| \u3042 | |
| false 0 | |
| [\u3042-\u304e&&[^\u3042-\u3044]] | |
| \u3045 | |
| true \u3045 0 | |
| [\u3042-\u3044\u3045-\u3047&&[\u3045-\u3047]] | |
| \u3042 | |
| false 0 | |
| [\u3042-\u3044\u3045-\u3047&&[\u3045-\u3047]] | |
| \u3046 | |
| true \u3046 0 | |
| [[\u3042-\u3044]&&\u3045-\u3047\u3042-\u3044] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042-\u3044]&&[\u3045-\u3047][\u3042-\u3044]] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042-\u3044][\u3045-\u3047]&&\u3042\u3043\u3044] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042-\u3044][\u3045-\u3047]&&\u3042\u3043\u3044[\u3045\u3046\u3047]] | |
| \u3046 | |
| true \u3046 0 | |
| [[\u3042-\u3044]&&[\u3043-\u3045]&&[\u3044-\u3046]] | |
| \u3042 | |
| false 0 | |
| [[\u3042-\u3044]&&[\u3043-\u3045]&&[\u3044-\u3046]] | |
| \u3044 | |
| true \u3044 0 | |
| [[\u3042-\u3044]&&[\u3043-\u3045][\u3044-\u3046]&&[\u3056-\u305B]] | |
| \u3044 | |
| false 0 | |
| [\u3042\u3043\u3044[^\u3043\u3044\u3045]] | |
| \u3042 | |
| true \u3042 0 | |
| [\u3042\u3043\u3044[^\u3043\u3044\u3045]] | |
| \u3045 | |
| false 0 | |
| [\u3042-\u3044&&\u3042-\u3045&&\u3042-\u3046\u3048\u3049\u304A] | |
| \u3043 | |
| true \u3043 0 | |
| [\u3042-\u3044&&\u3042-\u3045&&\u3042-\u3046\u3048\u3049\u304A] | |
| \u3048 | |
| false 0 | |
| [[\u3042[\u3043]]&&[\u3043[\u3042]]] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042]&&[\u3043][\u3044][\u3042]&&[^\u3045]] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042]&&[b][c][\u3042]&&[^d]] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042]&&[\u3043][\u3044][\u3042]&&[^\u3045]] | |
| \u3045 | |
| false 0 | |
| [[[\u3042-\u3045]&&[\u3044-\u3047]]] | |
| \u3042 | |
| false 0 | |
| [[[\u3042-\u3045]&&[\u3044-\u3047]]] | |
| \u3044 | |
| true \u3044 0 | |
| [[[\u3042-\u3045]&&[\u3044-\u3047]]&&[\u3044]] | |
| \u3044 | |
| true \u3044 0 | |
| [[[\u3042-\u3045]&&[\u3044-\u3047]]&&[\u3044]&&\u3044] | |
| \u3044 | |
| true \u3044 0 | |
| [[[\u3042-\u3045]&&[\u3044-\u3047]]&&[\u3044]&&\u3044&&\u3044] | |
| \u3044 | |
| true \u3044 0 | |
| [[[\u3042-\u3045]&&[\u3044-\u3047]]&&[\u3044]&&\u3044&&[\u3044\u3045\u3046]] | |
| \u3044 | |
| true \u3044 0 | |
| [\u305B[\u3042\u3043\u3044&&\u3043\u3044\u3045]] | |
| \u3044 | |
| true \u3044 0 | |
| [\u305B[\u3042\u3043\u3044&&\u3043\u3044\u3045]&&[\u3056-\u305B]] | |
| \u305B | |
| true \u305B 0 | |
| [\u3059[\u3042\u3043\u3044&&\u3043\u3044\u3045[\u305B]]&&[\u3056-\u305B]] | |
| \u305B | |
| false 0 | |
| [\u3059[[w\u305B]\u3042\u3043\u3044&&\u3043\u3044\u3045[\u305B]]&&[\u3056-\u305B]] | |
| \u305B | |
| true \u305B 0 | |
| [[\u3042\u3043\u3044]&&[\u3045\u3046\u3047]\u3042\u3043\u3044] | |
| \u3042 | |
| true \u3042 0 | |
| [[\u3042\u3043\u3044]&&[\u3045\u3046\u3047]\u3059\u305A\u305B[\u3042\u3043\u3044]] | |
| \u3042 | |
| true \u3042 0 | |
| \pL | |
| \u3042 | |
| true \u3042 0 | |
| \pL | |
| 7 | |
| false 0 | |
| \p{L} | |
| \u3042 | |
| true \u3042 0 | |
| \p{IsL} | |
| \u3042 | |
| true \u3042 0 | |
| \p{InHiragana} | |
| \u3042 | |
| true \u3042 0 | |
| \p{InHiragana} | |
| \u0370 | |
| false 0 | |
| \pL\u3043\u3044 | |
| \u3042\u3043\u3044 | |
| true \u3042\u3043\u3044 0 | |
| \u3042[r\p{InGreek}]\u3044 | |
| \u3042\u0370\u3044 | |
| true \u3042\u0370\u3044 0 | |
| \u3042\p{InGreek} | |
| \u3042\u0370 | |
| true \u3042\u0370 0 | |
| \u3042\P{InGreek} | |
| \u3042\u0370 | |
| false 0 | |
| \u3042\P{InGreek} | |
| \u3042\u3043 | |
| true \u3042\u3043 0 | |
| \u3042{^InGreek} | |
| - | |
| error | |
| \u3042\p{^InGreek} | |
| - | |
| error | |
| \u3042\P{^InGreek} | |
| - | |
| error | |
| \u3042\p{InGreek} | |
| \u3042\u0370 | |
| true \u3042\u0370 0 | |
| \u3042[\p{InGreek}]\u3044 | |
| \u3042\u0370\u3044 | |
| true \u3042\u0370\u3044 0 | |
| \u3042[\P{InGreek}]\u3044 | |
| \u3042\u0370\u3044 | |
| false 0 | |
| \u3042[\P{InGreek}]\u3044 | |
| \u3042\u3043\u3044 | |
| true \u3042\u3043\u3044 0 | |
| \u3042[{^InGreek}]\u3044 | |
| \u3042n\u3044 | |
| true \u3042n\u3044 0 | |
| \u3042[{^InGreek}]\u3044 | |
| \u3042\u305B\u3044 | |
| false 0 | |
| \u3042[\p{^InGreek}]\u3044 | |
| - | |
| error | |
| \u3042[\P{^InGreek}]\u3044 | |
| - | |
| error | |
| \u3042[\p{InGreek}] | |
| \u3042\u0370 | |
| true \u3042\u0370 0 | |
| \u3042[r\p{InGreek}]\u3044 | |
| \u3042r\u3044 | |
| true \u3042r\u3044 0 | |
| \u3042[\p{InGreek}r]\u3044 | |
| \u3042r\u3044 | |
| true \u3042r\u3044 0 | |
| \u3042[r\p{InGreek}]\u3044 | |
| \u3042r\u3044 | |
| true \u3042r\u3044 0 | |
| \u3042[^\p{InGreek}]\u3044 | |
| \u3042\u0370\u3044 | |
| false 0 | |
| \u3042[^\P{InGreek}]\u3044 | |
| \u3042\u0370\u3044 | |
| true \u3042\u0370\u3044 0 | |
| \u3042[\p{InGreek}&&[^\u0370]]\u3044 | |
| \u3042\u0370\u3044 | |
| false 0 | |
| // Test the dot metacharacter | |
| \u3042.\u3044.+ | |
| \u3042#\u3044%& | |
| true \u3042#\u3044%& 0 | |
| \u3042\u3043. | |
| \u3042\u3043\n | |
| false 0 | |
| (?s)\u3042\u3043. | |
| \u3042\u3043\n | |
| true \u3042\u3043\n 0 | |
| \u3042[\p{L}&&[\P{InGreek}]]\u3044 | |
| \u3042\u6000\u3044 | |
| true \u3042\u6000\u3044 0 | |
| \u3042[\p{L}&&[\P{InGreek}]]\u3044 | |
| \u3042r\u3044 | |
| true \u3042r\u3044 0 | |
| \u3042[\p{L}&&[\P{InGreek}]]\u3044 | |
| \u3042\u0370\u3044 | |
| false 0 | |
| \u3042\p{InGreek}\u3044 | |
| \u3042\u0370\u3044 | |
| true \u3042\u0370\u3044 0 | |
| \u3042\p{Sc} | |
| \u3042$ | |
| true \u3042$ 0 | |
| \W\w\W | |
| rrrr#\u3048\u3048\u3048 | |
| false 0 | |
| \u3042\u3043\u3044[\s\u3045\u3046\u3047]* | |
| \u3042\u3043\u3044 \u3045\u3046\u3047 | |
| true \u3042\u3043\u3044 \u3045\u3046\u3047 0 | |
| \u3042\u3043\u3044[\s\u305A-\u305B]* | |
| \u3042\u3043\u3044 \u305A \u305B | |
| true \u3042\u3043\u3044 \u305A \u305B 0 | |
| \u3042\u3043\u3044[\u3042-\u3045\s\u304e-\u3051]* | |
| \u3042\u3043\u3044\u3042\u3042 \u304e\u304f \u3051 | |
| true \u3042\u3043\u3044\u3042\u3042 \u304e\u304f \u3051 0 | |
| // Test the whitespace escape sequence | |
| \u3042\u3043\s\u3044 | |
| \u3042\u3043 \u3044 | |
| true \u3042\u3043 \u3044 0 | |
| \s\s\s | |
| \u3043l\u3042\u3049 \u3046rr | |
| false 0 | |
| \S\S\s | |
| \u3043l\u3042\u3049 \u3046rr | |
| true \u3042\u3049 0 | |
| // Test the digit escape sequence | |
| \u3042\u3043\d\u3044 | |
| \u3042\u30439\u3044 | |
| true \u3042\u30439\u3044 0 | |
| \d\d\d | |
| \u3043l\u3042\u304945 | |
| false 0 | |
| // Test the caret metacharacter | |
| ^\u3042\u3043\u3044 | |
| \u3042\u3043\u3044\u3045\u3046\u3047 | |
| true \u3042\u3043\u3044 0 | |
| ^\u3042\u3043\u3044 | |
| \u3043\u3044\u3045\u3042\u3043\u3044 | |
| false 0 | |
| // Greedy ? metacharacter | |
| \u3042?\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3043 0 | |
| \u3042?\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042?\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .?\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3043 0 | |
| // Reluctant ? metacharacter | |
| \u3042??\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3043 0 | |
| \u3042??\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042??\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .??\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3043 0 | |
| // Possessive ? metacharacter | |
| \u3042?+\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3043 0 | |
| \u3042?+\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042?+\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .?+\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3043 0 | |
| // Greedy + metacharacter | |
| \u3042+\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| \u3042+\u3043 | |
| \u3043 | |
| false 0 | |
| \u3042+\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .+\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| // Reluctant + metacharacter | |
| \u3042+?\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| \u3042+?\u3043 | |
| \u3043 | |
| false 0 | |
| \u3042+?\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .+?\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| // Possessive + metacharacter | |
| \u3042++\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| \u3042++\u3043 | |
| \u3043 | |
| false 0 | |
| \u3042++\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .++\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| false 0 | |
| // Greedy Repetition | |
| \u3042{2,3} | |
| \u3042 | |
| false 0 | |
| \u3042{2,3} | |
| \u3042\u3042 | |
| true \u3042\u3042 0 | |
| \u3042{2,3} | |
| \u3042\u3042\u3042 | |
| true \u3042\u3042\u3042 0 | |
| \u3042{2,3} | |
| \u3042\u3042\u3042\u3042 | |
| true \u3042\u3042\u3042 0 | |
| \u3042{3,} | |
| \u305B\u305B\u305B\u3042\u3042\u3042\u3042\u305B\u305B\u305B | |
| true \u3042\u3042\u3042\u3042 0 | |
| \u3042{3,} | |
| \u305B\u305B\u305B\u3042\u3042\u305B\u305B\u305B | |
| false 0 | |
| // Reluctant Repetition | |
| \u3042{2,3}? | |
| \u3042 | |
| false 0 | |
| \u3042{2,3}? | |
| \u3042\u3042 | |
| true \u3042\u3042 0 | |
| \u3042{2,3}? | |
| \u3042\u3042\u3042 | |
| true \u3042\u3042 0 | |
| \u3042{2,3}? | |
| \u3042\u3042\u3042\u3042 | |
| true \u3042\u3042 0 | |
| // Zero width Positive lookahead | |
| \u3042\u3043\u3044(?=\u3045) | |
| \u305B\u305B\u305B\u3042\u3043\u3044\u3045 | |
| true \u3042\u3043\u3044 0 | |
| \u3042\u3043\u3044(?=\u3045) | |
| \u305B\u305B\u305B\u3042\u3043\u3044\u3046\u3045 | |
| false 0 | |
| // Zero width Negative lookahead | |
| \u3042\u3043\u3044(?!\u3045) | |
| \u305B\u305B\u3042\u3043\u3044\u3045 | |
| false 0 | |
| \u3042\u3043\u3044(?!\u3045) | |
| \u305B\u305B\u3042\u3043\u3044\u3046\u3045 | |
| true \u3042\u3043\u3044 0 | |
| // Zero width Positive lookbehind | |
| \u3042(?<=\u3042) | |
| ###\u3042\u3043\u3044 | |
| true \u3042 0 | |
| \u3042(?<=\u3042) | |
| ###\u3043\u3044### | |
| false 0 | |
| // Zero width Negative lookbehind | |
| (?<!\u3042)\w | |
| ###\u3042\u3043\u3044a### | |
| true a 0 | |
| (?<!\u3042)\u3044 | |
| \u3043\u3044 | |
| true \u3044 0 | |
| (?<!\u3042)\u3044 | |
| \u3042\u3044 | |
| false 0 | |
| // Nondeterministic group | |
| (\u3042+\u3043)+ | |
| \u3042\u3043\u3042\u3043\u3042\u3043 | |
| true \u3042\u3043\u3042\u3043\u3042\u3043 1 \u3042\u3043 | |
| (\u3042|\u3043)+ | |
| \u3044\u3044\u3044\u3044\u3045 | |
| false 1 | |
| // Deterministic group | |
| (\u3042\u3043)+ | |
| \u3042\u3043\u3042\u3043\u3042\u3043 | |
| true \u3042\u3043\u3042\u3043\u3042\u3043 1 \u3042\u3043 | |
| (\u3042\u3043)+ | |
| \u3042\u3044\u3044\u3044\u3044\u3045 | |
| false 1 | |
| (\u3042\u3043)* | |
| \u3042\u3043\u3042\u3043\u3042\u3043 | |
| true \u3042\u3043\u3042\u3043\u3042\u3043 1 \u3042\u3043 | |
| (\u3042\u3043)(\u3044\u3045*) | |
| \u305B\u305B\u305B\u3042\u3043\u3044\u305B\u305B\u305B | |
| true \u3042\u3043\u3044 2 \u3042\u3043 \u3044 | |
| \u3042\u3043\u3044(\u3045)*\u3042\u3043\u3044 | |
| \u3042\u3043\u3044\u3045\u3045\u3045\u3045\u3045\u3042\u3043\u3044 | |
| true \u3042\u3043\u3044\u3045\u3045\u3045\u3045\u3045\u3042\u3043\u3044 1 \u3045 | |
| // Back references | |
| (\u3042*)\u3043\u3044\1 | |
| \u305B\u305B\u305B\u3042\u3042\u3043\u3044\u3042\u3042\u305B\u305B\u305B | |
| true \u3042\u3042\u3043\u3044\u3042\u3042 1 \u3042\u3042 | |
| (\u3042*)\u3043\u3044\1 | |
| \u305B\u305B\u305B\u3042\u3042\u3043\u3044\u3042\u305B\u305B\u305B | |
| true \u3042\u3043\u3044\u3042 1 \u3042 | |
| (\u3048t*)(\u3045\u3045\u3046)*(\u305A\u3056)\1\3(\u3057\u3057) | |
| \u305B\u305B\u305B\u3048tt\u3045\u3045\u3046\u3045\u3045\u3046\u305A\u3056\u3048tt\u305A\u3056\u3057\u3057\u305B\u305B\u305B | |
| true \u3048tt\u3045\u3045\u3046\u3045\u3045\u3046\u305A\u3056\u3048tt\u305A\u3056\u3057\u3057 4 \u3048tt \u3045\u3045\u3046 \u305A\u3056 \u3057\u3057 | |
| // Greedy * metacharacter | |
| \u3042*\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| \u3042*\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042*\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .*\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| // Reluctant * metacharacter | |
| \u3042*?\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| \u3042*?\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042*?\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .*?\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| // Possessive * metacharacter | |
| \u3042*+\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| true \u3042\u3042\u3042\u3042\u3043 0 | |
| \u3042*+\u3043 | |
| \u3043 | |
| true \u3043 0 | |
| \u3042*+\u3043 | |
| \u3042\u3042\u3042\u3044\u3044\u3044 | |
| false 0 | |
| .*+\u3043 | |
| \u3042\u3042\u3042\u3042\u3043 | |
| false 0 | |
| // Case insensitivity | |
| (?iu)\uFF46\uFF4F\uFF4F\uFF42\uFF41\uFF52 | |
| \uFF46\uFF2F\uFF4F\uFF42\uFF21\uFF52 | |
| true \uFF46\uFF2F\uFF4F\uFF42\uFF21\uFF52 0 | |
| \uFF46(?iu)\uFF4F\uFF4F\uFF42\uFF41\uFF52 | |
| \uFF46\uFF2F\uFF4F\uFF42\uFF21\uFF52 | |
| true \uFF46\uFF2F\uFF4F\uFF42\uFF21\uFF52 0 | |
| \uFF46\uFF4F\uFF4F(?iu)\uFF42\uFF41\uFF52 | |
| \uFF46\uFF2F\uFF4F\uFF42\uFF21\uFF52 | |
| false 0 | |
| (?iu)\uFF46\uFF4F\uFF4F[\uFF42\uFF41\uFF52]+ | |
| \uFF46\uFF4F\uFF2F\uFF42\uFF21\uFF52 | |
| true \uFF46\uFF4F\uFF2F\uFF42\uFF21\uFF52 0 | |
| (?iu)\uFF46\uFF4F\uFF4F[\uFF41-\uFF52]+ | |
| \uFF46\uFF4F\uFF2F\uFF42\uFF21\uFF52 | |
| true \uFF46\uFF4F\uFF2F\uFF42\uFF21\uFF52 0 | |
| // Disable metacharacters- test both length <=3 and >3 | |
| // So that the BM optimization is part of test | |
| \Q***\E\u3042\u3043\u3044 | |
| ***\u3042\u3043\u3044 | |
| true ***\u3042\u3043\u3044 0 | |
| \u3043l\Q***\E\u3042\u3043\u3044 | |
| \u3043l***\u3042\u3043\u3044 | |
| true \u3043l***\u3042\u3043\u3044 0 | |
| \Q***\u3042\u3043\u3044 | |
| ***\u3042\u3043\u3044 | |
| true ***\u3042\u3043\u3044 0 | |
| \u3043l\u3042\u3049\Q***\E\u3042\u3043\u3044 | |
| \u3043l\u3042\u3049***\u3042\u3043\u3044 | |
| true \u3043l\u3042\u3049***\u3042\u3043\u3044 0 | |
| \Q***\u3042\u3043\u3044 | |
| ***\u3042\u3043\u3044 | |
| true ***\u3042\u3043\u3044 0 | |
| \Q*\u3042\u3043 | |
| *\u3042\u3043 | |
| true *\u3042\u3043 0 | |
| \u3043l\u3042\u3049\Q***\u3042\u3043\u3044 | |
| \u3043l\u3042\u3049***\u3042\u3043\u3044 | |
| true \u3043l\u3042\u3049***\u3042\u3043\u3044 0 | |
| \u3043l\u3042\Q***\u3042\u3043\u3044 | |
| \u3043l\u3042***\u3042\u3043\u3044 | |
| true \u3043l\u3042***\u3042\u3043\u3044 0 | |
| [\043]+ | |
| \u3043l\u3042\u3049\u3043l\u3042\u3049#\u3043le\u3044\u3049 | |
| true # 0 | |
| [\042-\044]+ | |
| \u3043l\u3042\u3049\u3043l\u3042\u3049#\u3043le\u3044\u3049 | |
| true # 0 | |
| [\u1234-\u1236] | |
| \u3043l\u3042\u3049\u3043l\u3042\u3049\u1235\u3043le\u3044\u3049 | |
| true \u1235 0 | |
| [^\043]* | |
| \u3043l\u3042\u3049\u3043l\u3042\u3049#\u3043le\u3044\u3049 | |
| true \u3043l\u3042\u3049\u3043l\u3042\u3049 0 |