906N/A//
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//
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//
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//
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.
906N/A//
2362N/A// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A// or visit www.oracle.com if you need additional information or have any
2362N/A// questions.
906N/A//
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
906N/A// Test unsetting of backed off groups
906N/A^(\ud800\udc61)?\ud800\udc61
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 1
906N/A
906N/A^(\ud800\udc61\ud800)?\ud800\udc61\ud800
906N/A\ud800\udc61\ud800
906N/Atrue \ud800\udc61\ud800 1
906N/A
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
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
906N/A((\ud800\udc61|\ud800\udc62)?\ud800\udc62)+
906N/A\ud800\udc62
906N/Atrue \ud800\udc62 2 \ud800\udc62
906N/A
906N/A((\ud800|\ud800\udc62)?\ud800\udc62)+
906N/A\ud800\udc62
906N/Atrue \ud800\udc62 2 \ud800\udc62
906N/A
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
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
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
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
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
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
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
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
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
906N/A// Patterns including no surrogates
906N/A(.)([^a])xyz
906N/A\ud801\ud800\udc00xyz
906N/Atrue \ud801\ud800\udc00xyz 2 \ud801 \ud800\udc00
906N/A
906N/A[^a-z]..
906N/A\ud801\ud800\udc00xyz
906N/Atrue \ud801\ud800\udc00x 0
906N/A
906N/A.$
906N/A\ud801\ud800\udc00
906N/Atrue \ud800\udc00 0
906N/A
906N/A.$
906N/A\ud801\udc01\ud800\udc00
906N/Atrue \ud800\udc00 0
906N/A
906N/A.$
906N/A\ud801\udc01\ud800\udc00\udcff
906N/Atrue \udcff 0
906N/A
906N/A[^x-\uffff][^y-\uffff]
906N/A\ud800\udc00pqr
906N/Atrue \ud800\udc00p 0
906N/A
906N/A[^x-\uffff]+
906N/A\ud800\udc00pqrx
906N/Atrue \ud800\udc00pqr 0
906N/A
906N/A/// The following test cases fail due to use of Start rather than
906N/A/// StartS. Disabled for now.
906N/A///[a-\uffff]
906N/A///\ud800\udc00x
906N/A///true x 0
906N/A///
906N/A///[a-\uffff]
906N/A///\ud800\udc00
906N/A///false 0
906N/A
906N/A// use of x modifier
906N/A\ud800\udc61bc(?x)bl\ud800\udc61h
906N/A\ud800\udc61bcbl\ud800\udc61h
906N/Atrue \ud800\udc61bcbl\ud800\udc61h 0
906N/A
906N/A\ud800\udc61bc(?x) bl\ud800\udc61h
906N/A\ud800\udc61bcbl\ud800\udc61h
906N/Atrue \ud800\udc61bcbl\ud800\udc61h 0
906N/A
906N/A\ud800\udc61bc(?x) bl\ud800\udc61h blech
906N/A\ud800\udc61bcbl\ud800\udc61hblech
906N/Atrue \ud800\udc61bcbl\ud800\udc61hblech 0
906N/A
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
906N/A// Simple alternation
906N/A\ud800\udc61|\ud800\udc62
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 0
906N/A
906N/A\ud800\udc61|\ud800\udc62|\ud800
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 0
906N/A
906N/A\ud800\udc61|\ud800
906N/A\ud800\udc62
906N/Afalse 0
906N/A
906N/A\ud800\udc62|\ud800
906N/A\ud800
906N/Atrue \ud800 0
906N/A
906N/A\ud800\udc61|\ud802\udc02
906N/Az
906N/Afalse 0
906N/A
906N/A\ud800\udc61|\ud802\udc02
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
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
906N/A\ud800\udc61|\ud800\udc61d
906N/A\ud800\udc61d
906N/Atrue \ud800\udc61 0
906N/A
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/A
906N/Az(\ud800\udc61|\ud800\udc61c|\udc61c)\ud802\udc02
906N/Az\udc61c\ud802\udc02
906N/Atrue z\udc61c\ud802\udc02 1 \udc61c
906N/A
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
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
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
906N/A[\ud800\udc61bc]+
906N/Ad\ud800\udc62fg
906N/Afalse 0
906N/A
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
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
906N/A[\ud801\udc01-\ud807\udc07]+
906N/Ammm
906N/Afalse 0
906N/A
906N/A[\ud800\udc61-]+
906N/Az\ud800\udc61-9z
906N/Atrue \ud800\udc61- 0
906N/A
906N/A// Negated char class
906N/A[^\ud800\udc61\ud802\udc02c]+
906N/A\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
906N/Afalse 0
906N/A
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/Atrue \ud804\udc04efg 0
906N/A
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/Atrue \ud804\udc04efg 0
906N/A
906N/A// Making sure a ^ not in first position matches literal ^
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03^\ud802\udc02]
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03^\ud802\udc02]
906N/A^
906N/Atrue ^ 0
906N/A
906N/A// Class union and intersection
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
906N/A\ud805\udc05
906N/Atrue \ud805\udc05 0
906N/A
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A\ud80c\udc0c
906N/Atrue \ud80c\udc0c 0
906N/A
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A4
906N/Atrue 4 0
906N/A
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A\ud805\udc05
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A\ud816\udc16
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud804\udc04][0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A[[\ud801\udc01-\ud804\udc04][0-9][\ud80b\udc0b-\ud80d\udc0d]]
906N/A\ud81a\udc1a
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A\ud805\udc05
906N/Atrue \ud805\udc05 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A\ud808\udc08
906N/Atrue \ud808\udc08 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
906N/A\ud80d\udc0d
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]\ud80d\udc0d]
906N/A\ud80d\udc0d
906N/Atrue \ud80d\udc0d 0
906N/A
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A\ud804\udc04
906N/Atrue \ud804\udc04 0
906N/A
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A\ud808\udc08
906N/Atrue \ud808\udc08 0
906N/A
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A\ud816\udc16
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud805\udc05
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud81a\udc1a
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud805\udc05
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud81a\udc1a
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03&&\ud804\udc04-\ud806\udc06]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a]
906N/A\ud80d\udc0d
906N/Atrue \ud80d\udc0d 0
906N/A
906N/A[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a&&\ud801\udc01-\ud803\udc03]
906N/A\ud80d\udc0d
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a&&\ud801\udc01-\ud81a\udc1a]
906N/A\ud80d\udc0d
906N/Atrue \ud80d\udc0d 0
906N/A
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
906N/A\ud80d\udc0d
906N/Atrue \ud80d\udc0d 0
906N/A
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
906N/A\ud81a\udc1a
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[^\ud801\udc01-\ud803\udc03]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud80d\udc0d]&&[^\ud801\udc01-\ud803\udc03]]
906N/A\ud804\udc04
906N/Atrue \ud804\udc04 0
906N/A
906N/A[\ud801\udc01-\ud80d\udc0d&&[^\ud801\udc01-\ud803\udc03]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud80d\udc0d&&[^\ud801\udc01-\ud803\udc03]]
906N/A\ud804\udc04
906N/Atrue \ud804\udc04 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03\ud804\udc04-\ud806\udc06&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03\ud804\udc04-\ud806\udc06&&[\ud804\udc04-\ud806\udc06]]
906N/A\ud805\udc05
906N/Atrue \ud805\udc05 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&\ud804\udc04-\ud806\udc06\ud801\udc01-\ud803\udc03]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06][\ud801\udc01-\ud803\udc03]]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03][\ud804\udc04-\ud806\udc06]&&\ud801\udc01\ud802\udc02\ud803\udc03]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03][\ud804\udc04-\ud806\udc06]&&\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
906N/A\ud805\udc05
906N/Atrue \ud805\udc05 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04]&&[\ud803\udc03-\ud805\udc05]]
906N/A\ud801\udc01
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04]&&[\ud803\udc03-\ud805\udc05]]
906N/A\ud803\udc03
906N/Atrue \ud803\udc03 0
906N/A
906N/A[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04][\ud803\udc03-\ud805\udc05]&&[\ud815\udc15-\ud81a\udc1a]]
906N/A\ud803\udc03
906N/Afalse 0
906N/A
906N/A[\ud801\udc01\ud802\udc02\ud803\udc03[^\ud802\udc02\ud803\udc03\ud804\udc04]]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A[\ud800\udc61\ud802\udc02\ud803\udc03[^\ud802\udc02\ud803\udc03\ud804\udc04]]
906N/A\ud804\udc04
906N/Afalse 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03&&\ud801\udc01-\ud804\udc04&&\ud801\udc01-\ud805\udc05\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A[\ud801\udc01-\ud803\udc03&&\ud801\udc01-\ud804\udc04&&\ud801\udc01-\ud805\udc05\ud807\udc07\ud808\udc08\ud809\udc09]
906N/A\ud807\udc07
906N/Afalse 0
906N/A
906N/A[[\ud801\udc01[\ud802\udc02]]&&[\ud802\udc02[\ud801\udc01]]]
906N/A\ud801\udc01
906N/Atrue \ud801\udc01 0
906N/A
906N/A// Unicode isn't supported in clazz()
906N/A[[\ud800\udc61]&&[b][c][\ud800\udc61]&&[^d]]
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 0
906N/A
906N/A[[\ud800\udc61]&&[\ud802\udc02][\ud800][\ud800\udc61]&&[^\ud804\udc04]]
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 0
906N/A
906N/A[[\ud800\udc61]&&[b][\ud800][\ud800\udc61]&&[^\ud804\udc04]]
906N/A\ud804\udc04
906N/Afalse 0
906N/A
906N/A[[\ud800\udc61]&&[b][c][\ud800\udc61]&&[^d]]
906N/Ad
906N/Afalse 0
906N/A
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]]
906N/A\ud800\udc01
906N/Afalse 0
906N/A
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]]
906N/A\ud800\udc03
906N/Atrue \ud800\udc03 0
906N/A
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]]
906N/A\ud800\udc03
906N/Atrue \ud800\udc03 0
906N/A
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03]
906N/A\ud800\udc03
906N/Atrue \ud800\udc03 0
906N/A
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03&&\ud800\udc03]
906N/A\ud800\udc03
906N/Atrue \ud800\udc03 0
906N/A
906N/A[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03&&[\ud800\udc03\ud800\udc04\ud800\udc05]]
906N/A\ud800\udc03
906N/Atrue \ud800\udc03 0
906N/A
906N/A[z[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04]]
906N/A\ud800\udc03
906N/Atrue \ud800\udc03 0
906N/A
906N/A[z[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04]&&[u-z]]
906N/Az
906N/Atrue z 0
906N/A
906N/A[x[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04[z]]&&[u-z]]
906N/Az
906N/Afalse 0
906N/A
906N/A[x[[wz]\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04[z]]&&[u-z]]
906N/Az
906N/Atrue z 0
906N/A
906N/A[[\ud800\udc61b\ud800\udc03]&&[\ud800\udc04\ud800\udc05f]\ud800\udc61b\ud800\udc03]
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 0
906N/A
906N/A[[\ud800\udc61b\ud800\udc03]&&[\ud800\udc04\ud800\udc05f]xyz[\ud800\udc61b\ud800\udc03]]
906N/A\ud800\udc61
906N/Atrue \ud800\udc61 0
906N/A
906N/A\pL
906N/A\ud800\udc00
906N/Atrue \ud800\udc00 0
906N/A
906N/A\p{IsASCII}
906N/A\ud800\udc00
906N/Afalse 0
906N/A
906N/A\pLbc
906N/A\ud800\udc00bc
906N/Atrue \ud800\udc00bc 0
906N/A
906N/A\ud800\udc61[r\p{InGreek}]c
906N/A\ud800\udc61\u0370c
906N/Atrue \ud800\udc61\u0370c 0
906N/A
906N/A\ud800\udc61\p{InGreek}
906N/A\ud800\udc61\u0370
906N/Atrue \ud800\udc61\u0370 0
906N/A
906N/A\ud800\udc61\P{InGreek}
906N/A\ud800\udc61\u0370
906N/Afalse 0
906N/A
906N/A\ud800\udc61\P{InGreek}
906N/A\ud800\udc61b
906N/Atrue \ud800\udc61b 0
906N/A
906N/A\ud800\udc61{^InGreek}
906N/A-
906N/Aerror
906N/A
906N/A\ud800\udc61\p{^InGreek}
906N/A-
906N/Aerror
906N/A
906N/A\ud800\udc61\P{^InGreek}
906N/A-
906N/Aerror
906N/A
906N/A\ud800\udc61\p{InGreek}
906N/A\ud800\udc61\u0370
906N/Atrue \ud800\udc61\u0370 0
906N/A
906N/A\ud800\udc61[\p{InGreek}]c
906N/A\ud800\udc61\u0370c
906N/Atrue \ud800\udc61\u0370c 0
906N/A
906N/A\ud800\udc61[\P{InGreek}]c
906N/A\ud800\udc61\u0370c
906N/Afalse 0
906N/A
906N/A\ud800\udc61[\P{InGreek}]c
906N/A\ud800\udc61bc
906N/Atrue \ud800\udc61bc 0
906N/A
906N/A\ud800\udc61[{^InGreek}]c
906N/A\ud800\udc61nc
906N/Atrue \ud800\udc61nc 0
906N/A
906N/A\ud800\udc61[{^InGreek}]c
906N/A\ud800\udc61zc
906N/Afalse 0
906N/A
906N/A\ud800\udc61[\p{^InGreek}]c
906N/A-
906N/Aerror
906N/A
906N/A\ud800\udc61[\P{^InGreek}]c
906N/A-
906N/Aerror
906N/A
906N/A\ud800\udc61[\p{InGreek}]
906N/A\ud800\udc61\u0370
906N/Atrue \ud800\udc61\u0370 0
906N/A
906N/A\ud800\udc61[r\p{InGreek}]c
906N/A\ud800\udc61rc
906N/Atrue \ud800\udc61rc 0
906N/A
906N/A\ud800\udc61[\p{InGreek}r]c
906N/A\ud800\udc61rc
906N/Atrue \ud800\udc61rc 0
906N/A
906N/A\ud800\udc61[r\p{InGreek}]c
906N/A\ud800\udc61rc
906N/Atrue \ud800\udc61rc 0
906N/A
906N/A\ud800\udc61[^\p{InGreek}]c
906N/A\ud800\udc61\u0370c
906N/Afalse 0
906N/A
906N/A\ud800\udc61[^\P{InGreek}]c
906N/A\ud800\udc61\u0370c
906N/Atrue \ud800\udc61\u0370c 0
906N/A
906N/A\ud800\udc61[\p{InGreek}&&[^\u0370]]c
906N/A\ud800\udc61\u0370c
906N/Afalse 0
906N/A
906N/A// Test the dot metacharacter
906N/A\ud800\udc61.c.+
906N/A\ud800\udc61#c%&
906N/Atrue \ud800\udc61#c%& 0
906N/A
906N/A\ud800\udc61b.
906N/A\ud800\udc61b\n
906N/Afalse 0
906N/A
906N/A(?s)\ud800\udc61b.
906N/A\ud800\udc61b\n
906N/Atrue \ud800\udc61b\n 0
906N/A
906N/A\ud800\udc61[\p{L}&&[\P{InGreek}]]c
906N/A\ud800\udc61\u6000c
906N/Atrue \ud800\udc61\u6000c 0
906N/A
906N/A\ud800\udc61[\p{L}&&[\P{InGreek}]]c
906N/A\ud800\udc61rc
906N/Atrue \ud800\udc61rc 0
906N/A
906N/A\ud800\udc61[\p{L}&&[\P{InGreek}]]c
906N/A\ud800\udc61\u0370c
906N/Afalse 0
906N/A
906N/A\ud800\udc61\p{InGreek}c
906N/A\ud800\udc61\u0370c
906N/Atrue \ud800\udc61\u0370c 0
906N/A
906N/A\ud800\udc61\p{Sc}
906N/A\ud800\udc61$
906N/Atrue \ud800\udc61$ 0
906N/A
906N/A// Test \p{L}
906N/A\p{L}
906N/A\ud800\udf1e
906N/Atrue \ud800\udf1e 0
906N/A
906N/A^a\p{L}z$
906N/Aa\ud800\udf1ez
906N/Atrue a\ud800\udf1ez 0
906N/A
906N/A// Test \P{InDeseret}
906N/A
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
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
906N/A// Test \p{InDeseret}
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
906N/A// Test the word char escape sequence
906N/A\ud800\udc61b\wc
906N/A\ud800\udc61bcc
906N/Atrue \ud800\udc61bcc 0
906N/A
906N/A\ud800\udc61bc[\w]
906N/A\ud800\udc61bcd
906N/Atrue \ud800\udc61bcd 0
906N/A
906N/A\ud800\udc61bc[\sdef]*
906N/A\ud800\udc61bc def
906N/Atrue \ud800\udc61bc def 0
906N/A
906N/A\ud800\udc61bc[\sy-z]*
906N/A\ud800\udc61bc y z
906N/Atrue \ud800\udc61bc y z 0
906N/A
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
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
906N/A\s\s\s
906N/Abl\ud800\udc61h err
906N/Afalse 0
906N/A
906N/A\S\S\s
906N/Abl\ud800\udc61h err
906N/Atrue \ud800\udc61h 0
906N/A
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
906N/A\d\d\d
906N/Abl\ud800\udc61h45
906N/Afalse 0
906N/A
906N/A// Test the caret metacharacter
906N/A^\ud800\udc61bc
906N/A\ud800\udc61bcdef
906N/Atrue \ud800\udc61bc 0
906N/A
906N/A^\ud800\udc61bc
906N/Abcd\ud800\udc61bc
906N/Afalse 0
906N/A
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
906N/A\udc61?\ud800\udc02
906N/A\ud800\udc61\udc61\udc61\ud800\udc02
906N/Atrue \udc61\ud800\udc02 0
906N/A
906N/A\ud800\udc61?\ud800\udc02
906N/A\ud800\udc02
906N/Atrue \ud800\udc02 0
906N/A
906N/A\ud800?\ud800\udc02
906N/A\ud800\udc02
906N/Atrue \ud800\udc02 0
906N/A
906N/A\ud800\udc61?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc03\ud800\udc03\ud800\udc03
906N/Afalse 0
906N/A
906N/A.?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A
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
906N/A\ud800??\ud800\udc02
906N/A\ud800\ud800\ud8001\ud800\ud800\udc02
906N/Atrue \ud800\ud800\udc02 0
906N/A
906N/A\ud800\udc61??\ud800\udc02
906N/A\ud800\udc02
906N/Atrue \ud800\udc02 0
906N/A
906N/A\ud800??\ud800\udc02
906N/A\ud800\udc02
906N/Atrue \ud800\udc02 0
906N/A
906N/A\ud800\udc61??\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.??\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A
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
906N/A\ud800\udc61?+\ud800\udc02
906N/A\ud800\udc02
906N/Atrue \ud800\udc02 0
906N/A
906N/A\ud800\udc61?+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.?+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Atrue \ud800\udc61\ud800\udc02 0
906N/A
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
906N/A\udc61+\ud800\udc02
906N/A\ud800\udc61\udc61\udc61\udc61\ud800\udc02
906N/Atrue \udc61\udc61\udc61\ud800\udc02 0
906N/A
906N/A\ud800\udc61+\ud800\udc02
906N/A\ud800\udc02
906N/Afalse 0
906N/A
906N/A\ud800+\ud800\udc02
906N/A\ud800\udc02
906N/Afalse 0
906N/A
906N/A\ud800\udc61+\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.+\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
906N/A.+\ud800\udc02
906N/A\ud800\udc61\udc61\udc61\udc61\ud800\udc02
906N/Atrue \ud800\udc61\udc61\udc61\udc61\ud800\udc02 0
906N/A
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
906N/A\udc61+?\ud800\udc02
906N/A\udc61\udc61\udc61\udc61\ud800\udc02
906N/Atrue \udc61\udc61\udc61\udc61\ud800\udc02 0
906N/A
906N/A\ud800\udc61+?\ud800\udc02
906N/A\ud800\udc02
906N/Afalse 0
906N/A
906N/A\ud800+?\ud800\udc02
906N/A\ud800\udc02
906N/Afalse 0
906N/A
906N/A\ud800\udc61+?\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.+?\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
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
906N/A\ud800\udc61++\ud800\udc02
906N/A\ud800\udc02
906N/Afalse 0
906N/A
906N/A\ud800\udc61++\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.++\ud800\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
906N/Afalse 0
906N/A
906N/A// Greedy Repetition
906N/A\ud800\udc61{2,3}
906N/A\ud800\udc61
906N/Afalse 0
906N/A
906N/A\ud800\udc61{2,3}
906N/A\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A
906N/A\ud800\udc61{2,3}
906N/A\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61 0
906N/A
906N/A\ud800\udc61{2,3}
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61 0
906N/A
906N/A\ud800\udc61{3,}
906N/Azzz\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61zzz
906N/Atrue \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61 0
906N/A
906N/A\ud800\udc61{3,}
906N/Azzz\ud800\udc61\ud800\udc61zzz
906N/Afalse 0
906N/A
906N/A// Reluctant Repetition
906N/A\ud800\udc61{2,3}?
906N/A\ud800\udc61
906N/Afalse 0
906N/A
906N/A\ud800\udc61{2,3}?
906N/A\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A
906N/A\ud800\udc61{2,3}?
906N/A\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A
906N/A\ud800\udc61{2,3}?
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61
906N/Atrue \ud800\udc61\ud800\udc61 0
906N/A
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
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?=\ud804\udc04)
906N/Azzz\ud800\udc61\ud802\udc02\ud803\udc03e\ud804\udc04
906N/Afalse 0
906N/A
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
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?=\udcff\ud804\udc04)
906N/Azzz\ud800\udc61\ud802\udc02\ud803\udc03\ud8ff\udcff\ud804\udc04
906N/Afalse 0
906N/A
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/Afalse 0
906N/A
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
906N/A\ud800\udc61\ud802\udc02\ud803\udc03(?!\ud804\udc04\ud8ff)
906N/Azz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04\ud8ffX
906N/Afalse 0
906N/A
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
906N/A// Zero width Positive lookbehind
906N/A(?<=\ud801\udc01\ud802\udc02)\ud803\udc03
906N/A\ud801\udc01\ud802\udc02\ud803\udc03
906N/Atrue \ud803\udc03 0
906N/A
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
906N/A(?<![\ud801\udc01\ud802\udc02])\ud803\udc03.
906N/A\ud801\udc01\ud803\udc03x\ud800\udc00\ud803\udc03y
906N/Atrue \ud803\udc03y 0
906N/A
906N/A(?<!\ud801\udc01)\ud803\udc03
906N/A\ud801\udc01\ud803\udc03
906N/Afalse 0
906N/A
906N/A// Nondeterministic group
906N/A(\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/A
906N/A(\ud800\udc61|\ud802)+
906N/A\ud800\ud802\udc61\ud803\ud802\udc61
906N/Afalse 1
906N/A
906N/A// Deterministic group
906N/A(\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/A
906N/A(\ud800\udc61\ud802)+
906N/A\ud800\udc61ccccd
906N/Afalse 1
906N/A
906N/A(\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/A
906N/A(\ud800\udc61b)(cd*)
906N/Azzz\ud800\udc61bczzz
906N/Atrue \ud800\udc61bc 2 \ud800\udc61b c
906N/A
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
906N/A// Back references
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
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
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
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
906N/A\ud800\udc61*\ud802\udc02
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A\ud800\udc61*\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.*\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
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
906N/A\ud800\udc61*?\ud802\udc02
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A\ud800\udc61*?\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.*?\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
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
906N/A\ud800\udc61*+\ud802\udc02
906N/A\ud802\udc02
906N/Atrue \ud802\udc02 0
906N/A
906N/A\ud800\udc61*+\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61ccc
906N/Afalse 0
906N/A
906N/A.*+\ud802\udc02
906N/A\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
906N/Afalse 0
906N/A
906N/A// Case insensitivity
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
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
906N/A\ud801\udc00(?iu)\ud801\udc01\ud801\udc02
906N/A\ud801\udc28\ud801\udc29\ud801\udc2a
906N/Afalse 0
906N/A
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
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
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
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
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
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
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
906N/A\Q*\ud801\udc01\ud802\udc02
906N/A*\ud801\udc01\ud802\udc02
906N/Atrue *\ud801\udc01\ud802\udc02 0
906N/A
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
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
906N/A//Test cases below copied from i18n QE's RegexSupplementaryTests.txt
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
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\u1000\uD801\uDFF1\uDB00\uDC00
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\uD800\uDFFF\uFFFF\uDB00\uDC00
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
906N/A\uD800\uDFFF\uD801\uDFF1\uFFFF
906N/Afalse 0
906N/A
906N/A\u1000.\uFFFF
906N/A\u1000\uD800\uDFFF\uFFFF
906N/Atrue \u1000\uD800\uDFFF\uFFFF 0
906N/A
906N/A//=======
906N/A// Ranges
906N/A//=======
906N/A[a-\uD800\uDFFF]
906N/A\uDFFF
906N/Atrue \uDFFF 0
906N/A
906N/A[a-\uD800\uDFFF]
906N/A\uD800
906N/Atrue \uD800 0
906N/A
906N/A[a-\uD800\uDFFF]
906N/A\uD800\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/A[\uD800\uDC00-\uDBFF\uDFFF]
906N/A\uDBFF
906N/Afalse 0
906N/A
906N/A[\uD800\uDC00-\uDBFF\uDFFF]
906N/A\uDC00
906N/Afalse 0
906N/A
906N/A[\uD800-\uDFFF]
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A[\uD800-\uDFFF]
906N/A\uDFFF\uD800
906N/Atrue \uDFFF 0
906N/A
906N/Afoo[^\uD800-\uDFFF]
906N/Afoo\uD800\uDFFF
906N/Atrue foo\uD800\uDFFF 0
906N/A
906N/Afoo[^\uD800-\uDFFF]
906N/Afoo\uDFFF\uD800
906N/Afalse 0
906N/A
906N/A//fo\uD800[\uDC00-\uDFFF]
906N/A
906N/A//==================
906N/A// Character Classes
906N/A//==================
906N/A// Simple class
906N/A[ab\uD800\uDFFFcd]at
906N/A\uD800at
906N/Afalse 0
906N/A
906N/A[ab\uD800\uDFFFcd]at
906N/A\uD800\uDFFFat
906N/Atrue \uD800\uDFFFat 0
906N/A
906N/A// Negation
906N/A[^\uD800\uDFFFcd]at
906N/A\uD800at
906N/Atrue \uD800at 0
906N/A
906N/A[^\uD800\uDFFFcd]at
906N/A\uDFFFat
906N/Atrue \uDFFFat 0
906N/A
906N/A// Inclusive range
906N/A[\u0000-\uD800\uDFFF-\uFFFF]
906N/A\uD800\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/A// Unions
906N/A[\u0000-\uD800[\uDFFF-\uFFFF]]
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A
906N/A// Intersection
906N/A[\u0000-\uFFFF&&[\uD800\uDFFF]]
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A[\u0000-\uFFFF&&[\uD800\uDFFF]]
906N/A\uD800
906N/Afalse 0
906N/A
906N/A[\u0000-\uFFFF&&[\uDFFF\uD800]]
906N/A\uD800
906N/Atrue \uD800 0
906N/A
906N/A[\u0000-\uFFFF&&[\uDFFF\uD800\uDC00]]
906N/A\uDC00
906N/Afalse 0
906N/A
906N/A[\u0000-\uDFFF&&[\uD800-\uFFFF]]
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A[\u0000-\uDFFF&&[\uD800-\uFFFF]]
906N/A\uDFFF\uD800
906N/Atrue \uDFFF 0
906N/A
906N/A// Subtraction
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
906N/A\uD800
906N/Atrue \uD800 0
906N/A
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
906N/A\uDC00
906N/Atrue \uDC00 0
906N/A
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
906N/A\uD800\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/A[\u0000-\uD800\uDFFF&&[^\uD800\uDBFF\uDC00]]
906N/A\uD800
906N/Afalse 0
906N/A
906N/A[\u0000-\uD800\uDFFF&&[^\uDC00\uD800\uDBFF]]
906N/A\uD800\uDC00
906N/Atrue \uD800\uDC00 0
906N/A
906N/A// Quantifiers
906N/Aa\uD800\uDFFF?
906N/Aa\uD800
906N/Atrue a 0
906N/A
906N/Aa\uD800\uDFFF?
906N/Aa\uDFFF
906N/Atrue a 0
906N/A
906N/Aa\uD800\uDFFF?
906N/Aa\uD800\uDFFF
906N/Atrue a\uD800\uDFFF 0
906N/A
906N/Aa\uDFFF\uD800?
906N/Aa\uDFFF
906N/Atrue a\uDFFF 0
906N/A
906N/Aa\uDFFF\uD800?
906N/Aa\uD800
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF\uDC00?
906N/A\uD800
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF\uDC00?
906N/A\uD800\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/Aa\uD800\uDFFF??
906N/Aa\uDFFF
906N/Atrue a 0
906N/A
906N/Aa\uD800\uDFFF*
906N/Aa
906N/Atrue a 0
906N/A
906N/Aa\uD800\uDFFF*
906N/Aa\uD800
906N/Atrue a 0
906N/A
906N/A\uD800\uDFFF*
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A\uD800\uDFFF*
906N/A\uD800\uDFFF\uDFFF\uDFFF\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/A\uD800*\uDFFF
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/Aa\uD800\uDFFF*
906N/Aa\uD800
906N/Atrue a 0
906N/A
906N/A\uDFFF\uD800*
906N/A\uDFFF
906N/Atrue \uDFFF 0
906N/A
906N/A\uDFFF\uD800*
906N/A\uDFFF\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800 0
906N/A
906N/A\uD800\uDFFF+
906N/A\uD800\uDFFF\uDFFF\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/A\uD800\uDFFF+
906N/A\uD800
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF+
906N/A\uD800\uDFFF
906N/Atrue \uD800\uDFFF 0
906N/A
906N/A\uD800\uDFFF+
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A\uDFFF\uD800+
906N/A\uDFFF\uD800\uDFFF\uD800
906N/Afalse 0
906N/A
906N/A\uD800+\uDFFF
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A\uD800+\uDFFF
906N/A\uD800
906N/Afalse 0
906N/A
906N/A\uDFFF+\uD800
906N/A\uD800
906N/Afalse 0
906N/A
906N/A\uDFFF+\uD800
906N/A\uDFFF\uD800
906N/Atrue \uDFFF\uD800 0
906N/A
906N/A\uD800\uDFFF{3}
906N/A\uD800\uDFFF\uDFFF\uDFFF
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF{3}
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A\uDFFF\uD800{3}
906N/A\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800
906N/Afalse 0
906N/A
906N/A\uDFFF\uD800{3}
906N/A\uDFFF\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800 0
906N/A
906N/A\uD800\uDFFF{2,}
906N/A\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF{2,}
906N/A\uD800\uDFFF\uDFFF
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF{2,}
906N/A\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A\uDFFF\uD800{2,}
906N/A\uDFFF\uD800\uDFFF\uD800
906N/Afalse 0
906N/A
906N/A\uDFFF\uD800{2,}
906N/A\uDFFF\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800 0
906N/A
906N/A\uD800\uDFFF{3,4}
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A\uD800\uDFFF{3,4}
906N/A\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A\uD800\uDFFF{3,4}
906N/A\uD800\uDFFF\uD800\uD800\uDFFF\uD800\uDFFF
906N/Afalse 0
906N/A
906N/A\uDFFF\uD800{3,5}
906N/A\uDFFF\uD800\uD800\uD800\uD800\uD800\uD800\uD800
906N/Atrue \uDFFF\uD800\uD800\uD800\uD800\uD800 0
906N/A
906N/A\uD800\uDFFF{3,5}
906N/A\uD800\uDFFF\uDFFF\uDFFF
906N/Afalse 0
906N/A
906N/A\uD800\uDFFF{3,5}
906N/A\uD800\uDFFF\uD800\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
906N/Atrue \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0
906N/A
906N/A// Groupings
906N/A(\uD800(\uDFFF))
906N/A\uD800\uDFFF
906N/Afalse 2
906N/A
906N/A(\uD800(\uDC00)(\uDFFF))
906N/A\uD800\uDC00\uDFFF
906N/Afalse 3
906N/A
906N/A((\uD800)(\uDFFF))
906N/A\uD800\uDFFF
906N/Afalse 3
906N/A
906N/A(\uD800(\uDFFF)\uDFFF)
906N/A\uD800\uDFFF
906N/Afalse 2
906N/A
906N/A(\uDFFF(\uD800)(\uDBFF))
906N/A\uDFFF\uD800\uDBFF
906N/Atrue \uDFFF\uD800\uDBFF 3 \uDFFF\uD800\uDBFF \uD800 \uDBFF
906N/A
906N/A(\uDFFF(\uD800)(\uDC00))
906N/A\uDFFF\uD800\uDC00
906N/Afalse 3
906N/A
906N/A(\uDFFF\uD800(\uDC00\uDBFF))
906N/A\uDFFF\uD800\uDC00\uDBFF
906N/Afalse 2
906N/A
906N/A(\uD800\uDFFF(\uDBFF)(\uDC00))
906N/A\uD800\uDFFF\uDBFF\uDC00
906N/Afalse 3
906N/A
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