2362N/A// Copyright (c) 1999, 2009, Oracle
and/or its affiliates. All rights reserved.
906N/A// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
906N/A// This code is free software; you can redistribute it
and/or modify it
906N/A// under the terms of the GNU General Public License version 2 only, as
906N/A// published by the Free Software Foundation.
906N/A// This code is distributed in the hope that it will be useful, but WITHOUT
906N/A// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
906N/A// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
906N/A// version 2 for more details (a copy is included in the LICENSE file that
906N/A// accompanied this code).
906N/A// You should have received a copy of the GNU General Public License version
906N/A// 2 along with this work; if not, write to the Free Software Foundation,
906N/A// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2362N/A// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
906N/A// --------------------------------------------------------
906N/A// This file contains test cases with supplementary characters for regular expressions.
906N/A// A test case consists of three lines:
906N/A// The first line is a pattern used in the test
906N/A// The second line is the input to search for the pattern in
906N/A// The third line is a concatentation of the match, the number of groups,
906N/A// and the contents of the first four subexpressions.
906N/A// Empty lines and lines beginning with comment slashes are ignored.
906N/A// Test unsetting of backed off groups
906N/A^(\ud800\udc61)?\ud800\udc61
906N/A^(\ud800\udc61\ud800)?\ud800\udc61\ud800
906N/Atrue \ud800\udc61\ud800 1
906N/A^(\ud800\udc61\ud800\udc61(\ud800\udc62\ud800\udc62)?)+$
906N/A\ud800\udc61\ud800\udc61\ud800\udc62\ud800\udc62\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc62\ud800\udc62\ud800\udc61\ud800\udc61 2 \ud800\udc61\ud800\udc61 \ud800\udc62\ud800\udc62
906N/A^(\ud800\udc61\ud800\udc61\ud800(\ud800\udc62\ud800\udc62\ud800)?)+$
906N/A\ud800\udc61\ud800\udc61\ud800\ud800\udc62\ud800\udc62\ud800\ud800\udc61\ud800\udc61\ud800
906N/Atrue \ud800\udc61\ud800\udc61\ud800\ud800\udc62\ud800\udc62\ud800\ud800\udc61\ud800\udc61\ud800 2 \ud800\udc61\ud800\udc61\ud800 \ud800\udc62\ud800\udc62\ud800
906N/A((\ud800\udc61|\ud800\udc62)?\ud800\udc62)+
906N/Atrue \ud800\udc62 2 \ud800\udc62
906N/A((\ud800|\ud800\udc62)?\ud800\udc62)+
906N/Atrue \ud800\udc62 2 \ud800\udc62
906N/A(\ud800\udc61\ud800\udc61\ud800\udc61)?\ud800\udc61\ud800\udc61\ud800\udc61
906N/A\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61 1
906N/A(\ud800\udc61\ud800\udc61\ud800\ud800\udc61)?\ud800\udc61\ud800\udc61\ud800\ud800\udc61
906N/A\ud800\udc61\ud800\udc61\ud800\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\ud800\udc61 1
906N/A^(\ud800\udc61\ud800(\ud800\udc62\ud800)?)+$
906N/A\ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800
906N/Atrue \ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800 2 \ud800\udc61\ud800 \ud800\udc62\ud800
906N/A^(\ud800\udc61(\ud800\udc62)?)+$
906N/A\ud800\udc61\ud800\udc62\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc62\ud800\udc61 2 \ud800\udc61 \ud800\udc62
906N/A^(\ud800\udc61\ud800(\ud800\udc62\ud800)?)+$
906N/A\ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800
906N/Atrue \ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800 2 \ud800\udc61\ud800 \ud800\udc62\ud800
906N/A^(\ud800\udc61(\ud800\udc62(\ud800\udc63)?)?)?\ud800\udc61\ud800\udc62\ud800\udc63
906N/A\ud800\udc61\ud800\udc62\ud800\udc63
906N/Atrue \ud800\udc61\ud800\udc62\ud800\udc63 3
906N/A^(\ud800\udc61\ud800(\ud800\udc62(\ud800\udc63)?)?)?\ud800\udc61\ud800\ud800\udc62\ud800\udc63
906N/A\ud800\udc61\ud800\ud800\udc62\ud800\udc63
906N/Atrue \ud800\udc61\ud800\ud800\udc62\ud800\udc63 3
906N/A^(\ud800\udc61(\ud800\udc02(\ud800\udc63))).*
906N/A\ud800\udc61\ud800\udc02\ud800\udc63
906N/Atrue \ud800\udc61\ud800\udc02\ud800\udc63 3 \ud800\udc61\ud800\udc02\ud800\udc63 \ud800\udc02\ud800\udc63 \ud800\udc63
906N/A^(\ud800\udc61(\ud800(\ud800\udc63))).*
906N/A\ud800\udc61\ud800\ud800\udc63
906N/Atrue \ud800\udc61\ud800\ud800\udc63 3 \ud800\udc61\ud800\ud800\udc63 \ud800\ud800\udc63 \ud800\udc63
906N/A// Patterns including no surrogates
906N/Atrue \ud801\ud800\udc00xyz 2 \ud801 \ud800\udc00
906N/Atrue \ud801\ud800\udc00x 0
906N/A\ud801\udc01\ud800\udc00
906N/A\ud801\udc01\ud800\udc00\udcff
906N/A/// The following test cases fail due to use of Start rather than
906N/A/// StartS. Disabled for now.
906N/A\ud800\udc61bc(?x)bl\ud800\udc61h
906N/A\ud800\udc61bcbl\ud800\udc61h
906N/Atrue \ud800\udc61bcbl\ud800\udc61h 0
906N/A\ud800\udc61bc(?x) bl\ud800\udc61h
906N/A\ud800\udc61bcbl\ud800\udc61h
906N/Atrue \ud800\udc61bcbl\ud800\udc61h 0
906N/A\ud800\udc61bc(?x) bl\ud800\udc61h blech
906N/A\ud800\udc61bcbl\ud800\udc61hblech
906N/Atrue \ud800\udc61bcbl\ud800\udc61hblech 0
906N/A\ud800\udc61bc(?x) bl\ud800\udc61h # ignore comment
906N/A\ud800\udc61bcbl\ud800\udc61h
906N/Atrue \ud800\udc61bcbl\ud800\udc61h 0
906N/A\ud800\udc61|\ud800\udc62
906N/A\ud800\udc61|\ud800\udc62|\ud800
906N/A\ud800\udc61|\ud802\udc02
906N/A\ud800\udc61|\ud802\udc02
906N/A\ud800\udc61|\ud802\udc02|\ud803\udc03\ud804\udc04
906N/A\ud803\udc03\ud804\udc04
906N/Atrue \ud803\udc03\ud804\udc04 0
906N/A\ud800\udc61|\ud800\udc61d
906N/Az(\ud800\udc61|\ud800\udc61c)\ud802\udc02
906N/Az\ud800\udc61c\ud802\udc02
906N/Atrue z\ud800\udc61c\ud802\udc02 1 \ud800\udc61c
906N/Az(\ud800\udc61|\ud800\udc61c|\udc61c)\ud802\udc02
906N/Atrue z\udc61c\ud802\udc02 1 \udc61c
906N/A// Simple codepoint class
906N/A[\ud800\udc61\ud802\udc02c]+
906N/A\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02 0
906N/A[\ud800\udc61\ud802\udc02c]+
906N/A\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02 0
906N/A[\ud800\udc61\ud802\udc02c\ud800]+
906N/A\ud800\udc61\ud802\udc02\ud800\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud802\udc02\ud800\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02 0
906N/A[\ud800\udc61bc]+[\ud804\udc04ef]+[\ud807\udc07hi]+
906N/Azzz\ud800\udc61\ud800\udc61\ud804\udc04\ud804\udc04\ud807\udc07\ud807\udc07zzz
906N/Atrue \ud800\udc61\ud800\udc61\ud804\udc04\ud804\udc04\ud807\udc07\ud807\udc07 0
906N/A// Range codepoint class
906N/A[\ud801\udc01-\ud807\udc07]+
906N/A\ud8ff\udcff\ud8ff\udcff\ud8ff\udcff\ud807\udc07\ud807\udc07\ud807\udc07
906N/Atrue \ud807\udc07\ud807\udc07\ud807\udc07 0
906N/A[\ud801\udc01-\ud807\udc07]+
906N/A[^\ud800\udc61\ud802\udc02c]+
906N/A\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
906N/A[^\ud800\udc61\ud802\udc02\ud803\udc03]+
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02\ud802\udc02\ud802\udc02\ud803\udc03\ud803\udc03\ud803\udc03\ud804\udc04efg
906N/A[^\ud800\udc61\ud802\udc02\ud803\udc03\ud800]+
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02\ud802\udc02\ud802\udc02\ud803\udc03\ud803\udc03\ud803\udc03\ud804\udc04efg
906N/A// Making sure a ^ not in first position matches literal ^
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03^\ud802\udc02]
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03^\ud802\udc02]
906N/A// Class union and intersection
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[[\ud801\udc01-\ud804\udc04][0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[[\ud801\udc01-\ud804\udc04][0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]\ud80d\udc0d]
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
906N/A[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
906N/A[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
906N/A[\ud801\udc01-\ud803\udc03&&\ud804\udc04-\ud806\udc06]
906N/A[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a]
906N/A[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a&&\ud801\udc01-\ud803\udc03]
906N/A[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a&&\ud801\udc01-\ud81a\udc1a]
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[^\ud801\udc01-\ud803\udc03]]
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[^\ud801\udc01-\ud803\udc03]]
906N/A[\ud801\udc01-\ud80d\udc0d&&[^\ud801\udc01-\ud803\udc03]]
906N/A[\ud801\udc01-\ud80d\udc0d&&[^\ud801\udc01-\ud803\udc03]]
906N/A[\ud801\udc01-\ud803\udc03\ud804\udc04-\ud806\udc06&&[\ud804\udc04-\ud806\udc06]]
906N/A[\ud801\udc01-\ud803\udc03\ud804\udc04-\ud806\udc06&&[\ud804\udc04-\ud806\udc06]]
906N/A[[\ud801\udc01-\ud803\udc03]&&\ud804\udc04-\ud806\udc06\ud801\udc01-\ud803\udc03]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06][\ud801\udc01-\ud803\udc03]]
906N/A[[\ud801\udc01-\ud803\udc03][\ud804\udc04-\ud806\udc06]&&\ud801\udc01\ud802\udc02\ud803\udc03]
906N/A[[\ud801\udc01-\ud803\udc03][\ud804\udc04-\ud806\udc06]&&\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04]&&[\ud803\udc03-\ud805\udc05]]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04]&&[\ud803\udc03-\ud805\udc05]]
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04][\ud803\udc03-\ud805\udc05]&&[\ud815\udc15-\ud81a\udc1a]]
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03[^\ud802\udc02\ud803\udc03\ud804\udc04]]
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[^\ud802\udc02\ud803\udc03\ud804\udc04]]
906N/A[\ud801\udc01-\ud803\udc03&&\ud801\udc01-\ud804\udc04&&\ud801\udc01-\ud805\udc05\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A[\ud801\udc01-\ud803\udc03&&\ud801\udc01-\ud804\udc04&&\ud801\udc01-\ud805\udc05\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A[[\ud801\udc01[\ud802\udc02]]&&[\ud802\udc02[\ud801\udc01]]]
906N/A// Unicode isn't supported in clazz()
906N/A[[\ud800\udc61]&&[b][c][\ud800\udc61]&&[^d]]
906N/A[[\ud800\udc61]&&[\ud802\udc02][\ud800][\ud800\udc61]&&[^\ud804\udc04]]
906N/A[[\ud800\udc61]&&[b][\ud800][\ud800\udc61]&&[^\ud804\udc04]]
906N/A[[\ud800\udc61]&&[b][c][\ud800\udc61]&&[^d]]
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]]
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]]
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]]
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03]
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03&&\ud800\udc03]
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03&&[\ud800\udc03\ud800\udc04\ud800\udc05]]
906N/A[z[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04]]
906N/A[z[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04]&&[u-z]]
906N/A[x[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04[z]]&&[u-z]]
906N/A[x[[wz]\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04[z]]&&[u-z]]
906N/A[[\ud800\udc61b\ud800\udc03]&&[\ud800\udc04\ud800\udc05f]\ud800\udc61b\ud800\udc03]
906N/A[[\ud800\udc61b\ud800\udc03]&&[\ud800\udc04\ud800\udc05f]xyz[\ud800\udc61b\ud800\udc03]]
906N/A\ud800\udc61[r\p{InGreek}]c
906N/Atrue \ud800\udc61\u0370c 0
906N/Atrue \ud800\udc61\u0370 0
906N/A\ud800\udc61\p{^InGreek}
906N/A\ud800\udc61\P{^InGreek}
906N/Atrue \ud800\udc61\u0370 0
906N/A\ud800\udc61[\p{InGreek}]c
906N/Atrue \ud800\udc61\u0370c 0
906N/A\ud800\udc61[\P{InGreek}]c
906N/A\ud800\udc61[\P{InGreek}]c
906N/A\ud800\udc61[{^InGreek}]c
906N/A\ud800\udc61[{^InGreek}]c
906N/A\ud800\udc61[\p{^InGreek}]c
906N/A\ud800\udc61[\P{^InGreek}]c
906N/A\ud800\udc61[\p{InGreek}]
906N/Atrue \ud800\udc61\u0370 0
906N/A\ud800\udc61[r\p{InGreek}]c
906N/A\ud800\udc61[\p{InGreek}r]c
906N/A\ud800\udc61[r\p{InGreek}]c
906N/A\ud800\udc61[^\p{InGreek}]c
906N/A\ud800\udc61[^\P{InGreek}]c
906N/Atrue \ud800\udc61\u0370c 0
906N/A\ud800\udc61[\p{InGreek}&&[^\u0370]]c
906N/A// Test the dot metacharacter
906N/A\ud800\udc61[\p{L}&&[\P{InGreek}]]c
906N/Atrue \ud800\udc61\u6000c 0
906N/A\ud800\udc61[\p{L}&&[\P{InGreek}]]c
906N/A\ud800\udc61[\p{L}&&[\P{InGreek}]]c
906N/A\ud800\udc61\p{InGreek}c
906N/Atrue \ud800\udc61\u0370c 0
906N/A\ud800\udf00\p{L}{2,3}\P{L}*supp->\ud900\udc00<-\P{InDeseret}
906N/A\ud800\udf00\ud800\udf1e\ud800\udf1esupp->\ud900\udc00<-\ud901\udf00
906N/Atrue \ud800\udf00\ud800\udf1e\ud800\udf1esupp->\ud900\udc00<-\ud901\udf00 0
906N/A\ud800\udf00\p{L}{2,3}\P{L}*supp->\ud900\udc00<-\P{InDeseret}
906N/A\ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud901\udf00
906N/Atrue \ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud901\udf00 0
906N/A\ud800\udf00\p{L}{2,3}\P{L}*supp->\ud900\udc00<-\p{InDeseret}
906N/A\ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud801\udc00
906N/Atrue \ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud801\udc00 0
906N/A// Test the word char escape sequence
906N/Atrue \ud800\udc61bc def 0
906N/Atrue \ud800\udc61bc y z 0
906N/A\ud800\udc01bc[\ud800\udc01-\ud800\udc04\sm-p]*
906N/A\ud800\udc01bc\ud800\udc01\ud800\udc01 mn p
906N/Atrue \ud800\udc01bc\ud800\udc01\ud800\udc01 mn p 0
906N/A// Test the whitespace escape sequence
906N/A\ud800\udc61b\s\ud800\udc03
906N/A\ud800\udc61b \ud800\udc03
906N/Atrue \ud800\udc61b \ud800\udc03 0
906N/A// Test the digit escape sequence
906N/A\ud800\udc61b\d\ud800\udc03
906N/A\ud800\udc61b9\ud800\udc03
906N/Atrue \ud800\udc61b9\ud800\udc03 0
906N/A// Test the caret metacharacter
906N/A// Greedy ? metacharacter
906N/A\ud800\udc61?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A\ud800\udc61\udc61\udc61\ud800\udc02
906N/Atrue \udc61\ud800\udc02 0
906N/A\ud800\udc61?\ud800\udc02
906N/A\ud800\udc61?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc03\ud800\udc03\ud800\udc03
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A// Reluctant ? metacharacter
906N/A\ud800\udc61??\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A\ud800\ud800\ud8001\ud800\ud800\udc02
906N/Atrue \ud800\ud800\udc02 0
906N/A\ud800\udc61??\ud800\udc02
906N/A\ud800\udc61??\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A// Possessive ? metacharacter
906N/A\ud800\udc61?+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A\ud800\udc61?+\ud800\udc02
906N/A\ud800\udc61?+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A// Greedy + metacharacter
906N/A\ud800\udc61+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0
906N/A\ud800\udc61\udc61\udc61\udc61\ud800\udc02
906N/Atrue \udc61\udc61\udc61\ud800\udc02 0
906N/A\ud800\udc61+\ud800\udc02
906N/A\ud800\udc61+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0
906N/A\ud800\udc61\udc61\udc61\udc61\ud800\udc02
906N/Atrue \ud800\udc61\udc61\udc61\udc61\ud800\udc02 0
906N/A// Reluctant + metacharacter
906N/A\ud800\udc61+?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0
906N/A\udc61\udc61\udc61\udc61\ud800\udc02
906N/Atrue \udc61\udc61\udc61\udc61\ud800\udc02 0
906N/A\ud800\udc61+?\ud800\udc02
906N/A\ud800\udc61+?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0
906N/A// Possessive + metacharacter
906N/A\ud800\udc61++\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0
906N/A\ud800\udc61++\ud800\udc02
906N/A\ud800\udc61++\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/A\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61 0
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61 0
906N/Azzz\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61zzz
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61 0
906N/Azzz\ud800\udc61\ud800\udc61zzz
906N/A\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A// Zero width Positive lookahead
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?=\ud804\udc04)
906N/Azzz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04
906N/Atrue \ud800\udc61\ud802\udc02\ud803\udc03 0
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?=\ud804\udc04)
906N/Azzz\ud800\udc61\ud802\udc02\ud803\udc03e\ud804\udc04
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?=\udcff\ud804\udc04)
906N/Azzz\ud800\udc61\ud802\udc02\ud803\udc03\udcff\ud804\udc04
906N/Atrue \ud800\udc61\ud802\udc02\ud803\udc03 0
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?=\udcff\ud804\udc04)
906N/Azzz\ud800\udc61\ud802\udc02\ud803\udc03\ud8ff\udcff\ud804\udc04
906N/A// Zero width Negative lookahead
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?!\ud804\udc04)
906N/Azz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04
906N/Aa\ud802\udc02\ud803\udc03(?!\ud804\udc04)
906N/Azza\ud802\udc02\ud803\udc03\udc04\ud804\udc04
906N/Atrue a\ud802\udc02\ud803\udc03 0
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?!\ud804\udc04\ud8ff)
906N/Azz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04\ud8ffX
906N/Aa\ud802\udc02\ud803\udc03(?!\ud804\udc04\ud8ff)
906N/Azza\ud802\udc02\ud803\udc03e\ud804\udc04\ud8ff\udcff
906N/Atrue a\ud802\udc02\ud803\udc03 0
906N/A// Zero width Positive lookbehind
906N/A(?<=\ud801\udc01\ud802\udc02)\ud803\udc03
906N/A\ud801\udc01\ud802\udc02\ud803\udc03
906N/A// Zero width Negative lookbehind
906N/A(?<!\ud801\udc01)\ud802\udc02\ud803\udc03
906N/A###\ud800\udc00\ud802\udc02\ud803\udc03
906N/Atrue \ud802\udc02\ud803\udc03 0
906N/A(?<![\ud801\udc01\ud802\udc02])\ud803\udc03.
906N/A\ud801\udc01\ud803\udc03x\ud800\udc00\ud803\udc03y
906N/A(?<!\ud801\udc01)\ud803\udc03
906N/A\ud801\udc01\ud803\udc03
906N/A// Nondeterministic group
906N/A\ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802
906N/Atrue \ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802 1 \ud800\udc61\ud802
906N/A\ud800\ud802\udc61\ud803\ud802\udc61
906N/A\ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802
906N/Atrue \ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802 1 \ud800\udc61\ud802
906N/A\ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802
906N/Atrue \ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802 1 \ud800\udc61\ud802
906N/Atrue \ud800\udc61bc 2 \ud800\udc61b c
906N/A\ud800\udc61bc(\ud804\udc04)*\ud800\udc61bc
906N/A\ud800\udc61bc\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud800\udc61bc
906N/Atrue \ud800\udc61bc\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud800\udc61bc 1 \ud804\udc04
906N/A(\ud800\udc61*)\ud802\udc02c\1
906N/Azzz\ud800\udc61\ud800\udc61\ud802\udc02c\ud800\udc61\ud800\udc61zzz
906N/Atrue \ud800\udc61\ud800\udc61\ud802\udc02c\ud800\udc61\ud800\udc61 1 \ud800\udc61\ud800\udc61
906N/A(\ud800\udc61*)\ud802\udc02c\1
906N/Azzz\ud800\udc61\ud800\udc61\ud802\udc02c\ud800\udc61zzz
906N/Atrue \ud800\udc61\ud802\udc02c\ud800\udc61 1 \ud800\udc61
906N/A(\ud800\udc07\ud800\udc14*)(\ud804\udc04\ud804\udc04e)*(yu)\1\3(vv)
906N/Azzz\ud800\udc07\ud800\udc14\ud800\udc14\ud804\udc04\ud804\udc04e\ud804\udc04\ud804\udc04eyu\ud800\udc07\ud800\udc14\ud800\udc14yuvvzzz
906N/Atrue \ud800\udc07\ud800\udc14\ud800\udc14\ud804\udc04\ud804\udc04e\ud804\udc04\ud804\udc04eyu\ud800\udc07\ud800\udc14\ud800\udc14yuvv 4 \ud800\udc07\ud800\udc14\ud800\udc14 \ud804\udc04\ud804\udc04e yu vv
906N/A// Greedy * metacharacter
906N/A\ud800\udc61*\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0
906N/A\ud800\udc61*\ud802\udc02
906N/A\ud800\udc61*\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0
906N/A// Reluctant * metacharacter
906N/A\ud800\udc61*?\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0
906N/A\ud800\udc61*?\ud802\udc02
906N/A\ud800\udc61*?\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0
906N/A// Possessive * metacharacter
906N/A\ud800\udc61*+\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0
906N/A\ud800\udc61*+\ud802\udc02
906N/A\ud800\udc61*+\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/A(?iu)\ud801\udc00\ud801\udc01\ud801\udc02x
906N/A\ud801\udc28\ud801\udc29\ud801\udc2aX
906N/Atrue \ud801\udc28\ud801\udc29\ud801\udc2aX 0
906N/A\ud801\udc00(?iu)\ud801\udc01\ud801\udc02
906N/A\ud801\udc00\ud801\udc29\ud801\udc2a
906N/Atrue \ud801\udc00\ud801\udc29\ud801\udc2a 0
906N/A\ud801\udc00(?iu)\ud801\udc01\ud801\udc02
906N/A\ud801\udc28\ud801\udc29\ud801\udc2a
906N/A(?iu)\ud801\udc00[\ud801\udc01\ud801\udc02]+
906N/A\ud801\udc28\ud801\udc29\ud801\udc2a
906N/Atrue \ud801\udc28\ud801\udc29\ud801\udc2a 0
906N/A(?iu)[\ud801\udc00-\ud801\udc02]+
906N/A\ud801\udc28\ud801\udc29\ud801\udc2a
906N/Atrue \ud801\udc28\ud801\udc29\ud801\udc2a 0
906N/A// Disable metacharacters- test both length <=3 and >3
906N/A// So that the BM optimization is part of test
906N/A\Q***\E\ud801\udc01\ud802\udc02\ud800\udc03
906N/A***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue ***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\ud802\udc02l\Q***\E\ud801\udc01\ud802\udc02\ud800\udc03
906N/A\ud802\udc02l***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue \ud802\udc02l***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\Q***\ud801\udc01\ud802\udc02\ud800\udc03
906N/A***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue ***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\ud802\udc02l\ud801\udc01h\Q***\E\ud801\udc01\ud802\udc02\ud800\udc03
906N/A\ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue \ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\Q***\ud801\udc01\ud802\udc02\ud800\udc03
906N/A***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue ***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\Q*\ud801\udc01\ud802\udc02
906N/A*\ud801\udc01\ud802\udc02
906N/Atrue *\ud801\udc01\ud802\udc02 0
906N/A\ud802\udc02l\ud801\udc01h\Q***\ud801\udc01\ud802\udc02\ud800\udc03
906N/A\ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue \ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\ud802\udc02l\ud801\udc01\Q***\ud801\udc01\ud802\udc02\ud800\udc03
906N/A\ud802\udc02l\ud801\udc01***\ud801\udc01\ud802\udc02\ud800\udc03
906N/Atrue \ud802\udc02l\ud801\udc01***\ud801\udc01\ud802\udc02\ud800\udc03 0
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/Atrue \uD800\uDFFF\uD801\uDFF1\uDB00\uDC00 0
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\u1000\uD801\uDFF1\uDB00\uDC00
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\uD800\uDFFF\uFFFF\uDB00\uDC00
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\uD800\uDFFF\uD801\uDFF1\uFFFF
906N/A\u1000\uD800\uDFFF\uFFFF
906N/Atrue \u1000\uD800\uDFFF\uFFFF 0
906N/A[\uD800\uDC00-\uDBFF\uDFFF]
906N/A[\uD800\uDC00-\uDBFF\uDFFF]
906N/A//fo\uD800[\uDC00-\uDFFF]
906N/A[\u0000-\uD800\uDFFF-\uFFFF]
906N/A[\u0000-\uD800[\uDFFF-\uFFFF]]
906N/A[\u0000-\uFFFF&&[\uD800\uDFFF]]
906N/A[\u0000-\uFFFF&&[\uD800\uDFFF]]
906N/A[\u0000-\uFFFF&&[\uDFFF\uD800]]
906N/A[\u0000-\uFFFF&&[\uDFFF\uD800\uDC00]]
906N/A[\u0000-\uDFFF&&[\uD800-\uFFFF]]
906N/A[\u0000-\uDFFF&&[\uD800-\uFFFF]]
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDBFF\uDC00]]
906N/A[\u0000-\uD800\uDFFF&&[^\uDC00\uD800\uDBFF]]
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A\uD800\uDFFF\uDFFF\uDFFF\uDFFF
906N/A\uDFFF\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800 0
906N/A\uD800\uDFFF\uDFFF\uDFFF
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A\uDFFF\uD800\uDFFF\uD800
906N/A\uD800\uDFFF\uDFFF\uDFFF
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800
906N/A\uDFFF\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800 0
906N/A\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF 0
906N/A\uDFFF\uD800\uDFFF\uD800
906N/A\uDFFF\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800 0
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A\uD800\uDFFF\uD800\uD800\uDFFF\uD800\uDFFF
906N/A\uDFFF\uD800\uD800\uD800\uD800\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800\uD800\uD800 0
906N/A\uD800\uDFFF\uDFFF\uDFFF
906N/A\uD800\uDFFF\uD800\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A(\uD800(\uDC00)(\uDFFF))
906N/A(\uDFFF(\uD800)(\uDBFF))
906N/Atrue \uDFFF\uD800\uDBFF 3 \uDFFF\uD800\uDBFF \uD800 \uDBFF
906N/A(\uDFFF(\uD800)(\uDC00))
906N/A(\uDFFF\uD800(\uDC00\uDBFF))
906N/A\uDFFF\uD800\uDC00\uDBFF
906N/A(\uD800\uDFFF(\uDBFF)(\uDC00))
906N/A\uD800\uDFFF\uDBFF\uDC00
906N/A(\uD800\uDFFF(\uDBFF\uDC00))
906N/A\uD800\uDFFF\uDBFF\uDC00
906N/Atrue \uD800\uDFFF\uDBFF\uDC00 2 \uD800\uDFFF\uDBFF\uDC00 \uDBFF\uDC00