3789983e89
Reviewed-by: darcy, ihse
952 lines
18 KiB
Plaintext
952 lines
18 KiB
Plaintext
//
|
|
// 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
|