Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  SupplementaryTestCases.txt   Sprache: Text

 
//
// Copyright (c) 1999, 2020, 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 supplementary 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
^(\ud800\udc61)?\ud800\udc61
\ud800\udc61
true \ud800\udc61 1

^(\ud800\udc61\ud800)?\ud800\udc61\ud800
\ud800\udc61\ud800
true \ud800\udc61\ud800 1

^(\ud800\udc61\ud800\udc61(\ud800\udc62\ud800\udc62)?)+$
\ud800\udc61\ud800\udc61\ud800\udc62\ud800\udc62\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61\ud800\udc62\ud800\udc62\ud800\udc61\ud800\udc61 2 \ud800\udc61\ud800\udc61 \ud800\udc62\ud800\udc62

^(\ud800\udc61\ud800\udc61\ud800(\ud800\udc62\ud800\udc62\ud800)?)+$
\ud800\udc61\ud800\udc61\ud800\ud800\udc62\ud800\udc62\ud800\ud800\udc61\ud800\udc61\ud800
true \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

((\ud800\udc61|\ud800\udc62)?\ud800\udc62)+
\ud800\udc62
true \ud800\udc62 2 \ud800\udc62

((\ud800|\ud800\udc62)?\ud800\udc62)+
\ud800\udc62
true \ud800\udc62 2 \ud800\udc62

(\ud800\udc61\ud800\udc61\ud800\udc61)?\ud800\udc61\ud800\udc61\ud800\udc61
\ud800\udc61\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61\ud800\udc61 1

(\ud800\udc61\ud800\udc61\ud800\ud800\udc61)?\ud800\udc61\ud800\udc61\ud800\ud800\udc61
\ud800\udc61\ud800\udc61\ud800\ud800\udc61
true \ud800\udc61\ud800\udc61\ud800\ud800\udc61 1

^(\ud800\udc61\ud800(\ud800\udc62\ud800)?)+$
\ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800
true \ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800 2 \ud800\udc61\ud800 \ud800\udc62\ud800

^(\ud800\udc61(\ud800\udc62)?)+$
\ud800\udc61\ud800\udc62\ud800\udc61
true \ud800\udc61\ud800\udc62\ud800\udc61 2 \ud800\udc61 \ud800\udc62

^(\ud800\udc61\ud800(\ud800\udc62\ud800)?)+$
\ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800
true \ud800\udc61\ud800\ud800\udc62\ud800\ud800\udc61\ud800 2 \ud800\udc61\ud800 \ud800\udc62\ud800

^(\ud800\udc61(\ud800\udc62(\ud800\udc63)?)?)?\ud800\udc61\ud800\udc62\ud800\udc63
\ud800\udc61\ud800\udc62\ud800\udc63
true \ud800\udc61\ud800\udc62\ud800\udc63 3

^(\ud800\udc61\ud800(\ud800\udc62(\ud800\udc63)?)?)?\ud800\udc61\ud800\ud800\udc62\ud800\udc63
\ud800\udc61\ud800\ud800\udc62\ud800\udc63
true \ud800\udc61\ud800\ud800\udc62\ud800\udc63 3

^(\ud800\udc61(\ud800\udc02(\ud800\udc63))).*
\ud800\udc61\ud800\udc02\ud800\udc63
true \ud800\udc61\ud800\udc02\ud800\udc63 3 \ud800\udc61\ud800\udc02\ud800\udc63 \ud800\udc02\ud800\udc63 \ud800\udc63

^(\ud800\udc61(\ud800(\ud800\udc63))).*
\ud800\udc61\ud800\ud800\udc63
true \ud800\udc61\ud800\ud800\udc63 3 \ud800\udc61\ud800\ud800\udc63 \ud800\ud800\udc63 \ud800\udc63

// Patterns including no surrogates
(.)([^a])xyz
\ud801\ud800\udc00xyz
true \ud801\ud800\udc00xyz 2 \ud801 \ud800\udc00

[^a-z]..
\ud801\ud800\udc00xyz
true \ud801\ud800\udc00x 0

.$
\ud801\ud800\udc00
true \ud800\udc00 0

.$
\ud801\udc01\ud800\udc00
true \ud800\udc00 0

.$
\ud801\udc01\ud800\udc00\udcff
true \udcff 0

[^x-\uffff][^y-\uffff]
\ud800\udc00pqr
true \ud800\udc00p 0

[^x-\uffff]+
\ud800\udc00pqrx
true \ud800\udc00pqr 0

/// The following test cases fail due to use of Start rather than
/// StartS. Disabled for now.
///[a-\uffff]
///\ud800\udc00x
///true x 0
///
///[a-\uffff]
///\ud800\udc00
///false 0

// unpaired surrogate should match
[\x{d800}-\x{dbff}\x{dc00}-\x{dfff}]
xxx\udca9\ud83dyyy
true \udca9 0

// surrogates in a supplementary character should not match
[\x{d800}-\x{dbff}\x{dc00}-\x{dfff}]
\ud83d\udca9
false 0

// unpaired surrogate should match
[\p{InHIGH_SURROGATES}\p{InLOW_SURROGATES}]
xxx\udca9\ud83dyyy
true \udca9 0

// surrogates part of a supplementary character should not match
[\p{InHIGH_SURROGATES}\p{InLOW_SURROGATES}]
\ud83d\udca9
false 0

// low surrogate part of a supplementary character should not match
[\x{dc00}-\x{dfff}]
\ud83d\udca9
false 0

// use of x modifier
\ud800\udc61bc(?x)bl\ud800\udc61h
\ud800\udc61bcbl\ud800\udc61h
true \ud800\udc61bcbl\ud800\udc61h 0

\ud800\udc61bc(?x)  bl\ud800\udc61h
\ud800\udc61bcbl\ud800\udc61h
true \ud800\udc61bcbl\ud800\udc61h 0

\ud800\udc61bc(?x)  bl\ud800\udc61h  blech
\ud800\udc61bcbl\ud800\udc61hblech
true \ud800\udc61bcbl\ud800\udc61hblech 0

\ud800\udc61bc(?x)  bl\ud800\udc61h # ignore comment
\ud800\udc61bcbl\ud800\udc61h
true \ud800\udc61bcbl\ud800\udc61h 0

// Simple alternation
\ud800\udc61|\ud800\udc62
\ud800\udc61
true \ud800\udc61 0

\ud800\udc61|\ud800\udc62|\ud800
\ud800\udc61
true \ud800\udc61 0

\ud800\udc61|\ud800
\ud800\udc62
false 0

\ud800\udc62|\ud800
\ud800
true \ud800 0

\ud800\udc61|\ud802\udc02
z
false 0

\ud800\udc61|\ud802\udc02
\ud802\udc02
true \ud802\udc02 0

\ud800\udc61|\ud802\udc02|\ud803\udc03\ud804\udc04
\ud803\udc03\ud804\udc04
true \ud803\udc03\ud804\udc04 0

\ud800\udc61|\ud800\udc61d
\ud800\udc61d
true \ud800\udc61 0

z(\ud800\udc61|\ud800\udc61c)\ud802\udc02
z\ud800\udc61c\ud802\udc02
true z\ud800\udc61c\ud802\udc02 1 \ud800\udc61c

z(\ud800\udc61|\ud800\udc61c|\udc61c)\ud802\udc02
z\udc61c\ud802\udc02
true z\udc61c\ud802\udc02 1 \udc61c

// Simple codepoint class
[\ud800\udc61\ud802\udc02c]+
\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
true \ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02 0

[\ud800\udc61\ud802\udc02c]+
\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
true \ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02 0

[\ud800\udc61\ud802\udc02c\ud800]+
\ud800\udc61\ud802\udc02\ud800\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
true \ud800\udc61\ud802\udc02\ud800\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02 0

[\ud800\udc61bc]+
d\ud800\udc62fg
false 0

[\ud800\udc61bc]+[\ud804\udc04ef]+[\ud807\udc07hi]+
zzz\ud800\udc61\ud800\udc61\ud804\udc04\ud804\udc04\ud807\udc07\ud807\udc07zzz
true \ud800\udc61\ud800\udc61\ud804\udc04\ud804\udc04\ud807\udc07\ud807\udc07 0

// Range codepoint class
[\ud801\udc01-\ud807\udc07]+
\ud8ff\udcff\ud8ff\udcff\ud8ff\udcff\ud807\udc07\ud807\udc07\ud807\udc07
true \ud807\udc07\ud807\udc07\ud807\udc07 0

[\ud801\udc01-\ud807\udc07]+
mmm
false 0

[\ud800\udc61-]+
z\ud800\udc61-9z
true \ud800\udc61- 0

// Negated char class
[^\ud800\udc61\ud802\udc02c]+
\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02\ud800\udc61\ud802\udc02
false 0

[^\ud800\udc61\ud802\udc02\ud803\udc03]+
\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02\ud802\udc02\ud802\udc02\ud803\udc03\ud803\udc03\ud803\udc03\ud804\udc04efg
true \ud804\udc04efg 0

[^\ud800\udc61\ud802\udc02\ud803\udc03\ud800]+
\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02\ud802\udc02\ud802\udc02\ud803\udc03\ud803\udc03\ud803\udc03\ud804\udc04efg
true \ud804\udc04efg 0

// Making sure a ^ not in first position matches literal ^
[\ud801\udc01\ud802\udc02\ud803\udc03^\ud802\udc02]
\ud802\udc02
true \ud802\udc02 0

[\ud801\udc01\ud802\udc02\ud803\udc03^\ud802\udc02]
^
true ^ 0

// Class union and intersection
[\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
\ud802\udc02
true \ud802\udc02 0

[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
\ud805\udc05
true \ud805\udc05 0

[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
\ud801\udc01
true \ud801\udc01 0

[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
\ud80c\udc0c
true \ud80c\udc0c 0

[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
4
true 4 0

[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
\ud805\udc05
false 0

[\ud801\udc01-\ud804\udc04[0-9][\ud80b\udc0b-\ud80d\udc0d]]
\ud816\udc16
false 0

[[\ud801\udc01-\ud804\udc04][0-9][\ud80b\udc0b-\ud80d\udc0d]]
\ud802\udc02
true \ud802\udc02 0

[[\ud801\udc01-\ud804\udc04][0-9][\ud80b\udc0b-\ud80d\udc0d]]
\ud81a\udc1a
false 0

[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
\ud801\udc01
true \ud801\udc01 0

[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
\ud805\udc05
true \ud805\udc05 0

[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
\ud808\udc08
true \ud808\udc08 0

[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]]
\ud80d\udc0d
false 0

[\ud801\udc01-\ud803\udc03[\ud804\udc04-\ud806\udc06[\ud807\udc07-\ud809\udc09]]\ud80d\udc0d]
\ud80d\udc0d
true \ud80d\udc0d 0

[\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
\ud801\udc01
true \ud801\udc01 0

[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
\ud804\udc04
true \ud804\udc04 0

[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
\ud808\udc08
true \ud808\udc08 0

[\ud800\udc61\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]\ud807\udc07\ud808\udc08\ud809\udc09]
\ud816\udc16
false 0

[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
\ud801\udc01
false 0

[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
\ud805\udc05
false 0

[\ud801\udc01-\ud803\udc03&&[\ud804\udc04-\ud806\udc06]]
\ud81a\udc1a
false 0

[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
\ud801\udc01
false 0

[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
\ud805\udc05
false 0

[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06]]
\ud81a\udc1a
false 0

[\ud801\udc01-\ud803\udc03&&\ud804\udc04-\ud806\udc06]
\ud801\udc01
false 0

[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a]
\ud80d\udc0d
true \ud80d\udc0d 0

[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a&&\ud801\udc01-\ud803\udc03]
\ud80d\udc0d
false 0

[\ud801\udc01-\ud80d\udc0d&&\ud80d\udc0d-\ud81a\udc1a&&\ud801\udc01-\ud81a\udc1a]
\ud80d\udc0d
true \ud80d\udc0d 0

[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
\ud801\udc01
false 0

[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
\ud80d\udc0d
true \ud80d\udc0d 0

[[\ud801\udc01-\ud80d\udc0d]&&[\ud80d\udc0d-\ud81a\udc1a]]
\ud81a\udc1a
false 0

[[\ud801\udc01-\ud80d\udc0d]&&[^\ud801\udc01-\ud803\udc03]]
\ud801\udc01
false 0

[[\ud801\udc01-\ud80d\udc0d]&&[^\ud801\udc01-\ud803\udc03]]
\ud804\udc04
true \ud804\udc04 0

[\ud801\udc01-\ud80d\udc0d&&[^\ud801\udc01-\ud803\udc03]]
\ud801\udc01
false 0

[\ud801\udc01-\ud80d\udc0d&&[^\ud801\udc01-\ud803\udc03]]
\ud804\udc04
true \ud804\udc04 0

[\ud801\udc01-\ud803\udc03\ud804\udc04-\ud806\udc06&&[\ud804\udc04-\ud806\udc06]]
\ud801\udc01
false 0

[\ud801\udc01-\ud803\udc03\ud804\udc04-\ud806\udc06&&[\ud804\udc04-\ud806\udc06]]
\ud805\udc05
true \ud805\udc05 0

[[\ud801\udc01-\ud803\udc03]&&\ud804\udc04-\ud806\udc06\ud801\udc01-\ud803\udc03]
\ud801\udc01
true \ud801\udc01 0

[[\ud801\udc01-\ud803\udc03]&&[\ud804\udc04-\ud806\udc06][\ud801\udc01-\ud803\udc03]]
\ud801\udc01
true \ud801\udc01 0

[[\ud801\udc01-\ud803\udc03][\ud804\udc04-\ud806\udc06]&&\ud801\udc01\ud802\udc02\ud803\udc03]
\ud801\udc01
true \ud801\udc01 0

[[\ud801\udc01-\ud803\udc03][\ud804\udc04-\ud806\udc06]&&\ud801\udc01\ud802\udc02\ud803\udc03[\ud804\udc04\ud805\udc05\ud806\udc06]]
\ud805\udc05
true \ud805\udc05 0

[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04]&&[\ud803\udc03-\ud805\udc05]]
\ud801\udc01
false 0

[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04]&&[\ud803\udc03-\ud805\udc05]]
\ud803\udc03
true \ud803\udc03 0

[[\ud801\udc01-\ud803\udc03]&&[\ud802\udc02-\ud804\udc04][\ud803\udc03-\ud805\udc05]&&[\ud815\udc15-\ud81a\udc1a]]
\ud803\udc03
false 0

[\ud801\udc01\ud802\udc02\ud803\udc03[^\ud802\udc02\ud803\udc03\ud804\udc04]]
\ud801\udc01
true \ud801\udc01 0

[\ud800\udc61\ud802\udc02\ud803\udc03[^\ud802\udc02\ud803\udc03\ud804\udc04]]
\ud804\udc04
false 0

[\ud801\udc01-\ud803\udc03&&\ud801\udc01-\ud804\udc04&&\ud801\udc01-\ud805\udc05\ud807\udc07\ud808\udc08\ud809\udc09]
\ud802\udc02
true \ud802\udc02 0

[\ud801\udc01-\ud803\udc03&&\ud801\udc01-\ud804\udc04&&\ud801\udc01-\ud805\udc05\ud807\udc07\ud808\udc08\ud809\udc09]
\ud807\udc07
false 0

[[\ud801\udc01[\ud802\udc02]]&&[\ud802\udc02[\ud801\udc01]]]
\ud801\udc01
true \ud801\udc01 0

// Unicode isn't supported in clazz()
[[\ud800\udc61]&&[b][c][\ud800\udc61]&&[^d]]
\ud800\udc61
true \ud800\udc61 0

[[\ud800\udc61]&&[\ud802\udc02][\ud800][\ud800\udc61]&&[^\ud804\udc04]]
\ud800\udc61
true \ud800\udc61 0

[[\ud800\udc61]&&[b][\ud800][\ud800\udc61]&&[^\ud804\udc04]]
\ud804\udc04
false 0

[[\ud800\udc61]&&[b][c][\ud800\udc61]&&[^d]]
d
false 0

[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]]
\ud800\udc01
false 0

[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]]
\ud800\udc03
true \ud800\udc03 0

[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]]
\ud800\udc03
true \ud800\udc03 0

[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03]
\ud800\udc03
true \ud800\udc03 0

[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03&&\ud800\udc03]
\ud800\udc03
true \ud800\udc03 0

[[[\ud800\udc01-\ud800\udc04]&&[\ud800\udc03-\ud800\udc06]]&&[\ud800\udc03]&&\ud800\udc03&&[\ud800\udc03\ud800\udc04\ud800\udc05]]
\ud800\udc03
true \ud800\udc03 0

[z[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04]]
\ud800\udc03
true \ud800\udc03 0

[z[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04]&&[u-z]]
z
true z 0

[x[\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04[z]]&&[u-z]]
z
false 0

[x[[wz]\ud800\udc61b\ud800\udc03&&b\ud800\udc03\ud800\udc04[z]]&&[u-z]]
z
true z 0

[[\ud800\udc61b\ud800\udc03]&&[\ud800\udc04\ud800\udc05f]\ud800\udc61b\ud800\udc03]
\ud800\udc61
true \ud800\udc61 0

[[\ud800\udc61b\ud800\udc03]&&[\ud800\udc04\ud800\udc05f]xyz[\ud800\udc61b\ud800\udc03]]
\ud800\udc61
true \ud800\udc61 0

\pL
\ud800\udc00
true \ud800\udc00 0

\p{IsASCII}
\ud800\udc00
false 0

\pLbc
\ud800\udc00bc
true \ud800\udc00bc 0

\ud800\udc61[r\p{InGreek}]c
\ud800\udc61\u0370c
true \ud800\udc61\u0370c 0

\ud800\udc61\p{InGreek}
\ud800\udc61\u0370
true \ud800\udc61\u0370 0

\ud800\udc61\P{InGreek}
\ud800\udc61\u0370
false 0

\ud800\udc61\P{InGreek}
\ud800\udc61b
true \ud800\udc61b 0

\ud800\udc61{^InGreek}
-
error

\ud800\udc61\p{^InGreek}
-
error

\ud800\udc61\P{^InGreek}
-
error

\ud800\udc61\p{InGreek}
\ud800\udc61\u0370
true \ud800\udc61\u0370 0

\ud800\udc61[\p{InGreek}]c
\ud800\udc61\u0370c
true \ud800\udc61\u0370c 0

\ud800\udc61[\P{InGreek}]c
\ud800\udc61\u0370c
false 0

\ud800\udc61[\P{InGreek}]c
\ud800\udc61bc
true \ud800\udc61bc 0

\ud800\udc61[{^InGreek}]c
\ud800\udc61nc
true \ud800\udc61nc 0

\ud800\udc61[{^InGreek}]c
\ud800\udc61zc
false 0

\ud800\udc61[\p{^InGreek}]c
-
error

\ud800\udc61[\P{^InGreek}]c
-
error

\ud800\udc61[\p{InGreek}]
\ud800\udc61\u0370
true \ud800\udc61\u0370 0

\ud800\udc61[r\p{InGreek}]c
\ud800\udc61rc
true \ud800\udc61rc 0

\ud800\udc61[\p{InGreek}r]c
\ud800\udc61rc
true \ud800\udc61rc 0

\ud800\udc61[r\p{InGreek}]c
\ud800\udc61rc
true \ud800\udc61rc 0

\ud800\udc61[^\p{InGreek}]c
\ud800\udc61\u0370c
false 0

\ud800\udc61[^\P{InGreek}]c
\ud800\udc61\u0370c
true \ud800\udc61\u0370c 0

\ud800\udc61[\p{InGreek}&&[^\u0370]]c
\ud800\udc61\u0370c
false 0

// Test the dot metacharacter
\ud800\udc61.c.+
\ud800\udc61#c%&
true \ud800\udc61#c%& 0

\ud800\udc61b.
\ud800\udc61b\n
false 0

(?s)\ud800\udc61b.
\ud800\udc61b\n
true \ud800\udc61b\n 0

\ud800\udc61[\p{L}&&[\P{InGreek}]]c
\ud800\udc61\u6000c
true \ud800\udc61\u6000c 0

\ud800\udc61[\p{L}&&[\P{InGreek}]]c
\ud800\udc61rc
true \ud800\udc61rc 0

\ud800\udc61[\p{L}&&[\P{InGreek}]]c
\ud800\udc61\u0370c
false 0

\ud800\udc61\p{InGreek}c
\ud800\udc61\u0370c
true \ud800\udc61\u0370c 0

\ud800\udc61\p{Sc}
\ud800\udc61$
true \ud800\udc61$ 0

// Test \p{L}
\p{L}
\ud800\udf1e
true \ud800\udf1e 0

^a\p{L}z$
a\ud800\udf1ez
true a\ud800\udf1ez 0

// Test \P{InDeseret}

\ud800\udf00\p{L}{2,3}\P{L}*supp->\ud900\udc00<-\P{InDeseret}
\ud800\udf00\ud800\udf1e\ud800\udf1esupp->\ud900\udc00<-\ud901\udf00
true \ud800\udf00\ud800\udf1e\ud800\udf1esupp->\ud900\udc00<-\ud901\udf00 0

\ud800\udf00\p{L}{2,3}\P{L}*supp->\ud900\udc00<-\P{InDeseret}
\ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud901\udf00
true \ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud901\udf00 0

// Test \p{InDeseret}
\ud800\udf00\p{L}{2,3}\P{L}*supp->\ud900\udc00<-\p{InDeseret}
\ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud801\udc00
true \ud800\udf00\ud800\udf1e\ud800\udf1e\ud901\udf00supp->\ud900\udc00<-\ud801\udc00 0

// Test the word char escape sequence
\ud800\udc61b\wc
\ud800\udc61bcc
true \ud800\udc61bcc 0

\ud800\udc61bc[\w]
\ud800\udc61bcd
true \ud800\udc61bcd 0

\ud800\udc61bc[\sdef]*
\ud800\udc61bc  def
true \ud800\udc61bc  def 0

\ud800\udc61bc[\sy-z]*
\ud800\udc61bc y z
true \ud800\udc61bc y z 0

\ud800\udc01bc[\ud800\udc01-\ud800\udc04\sm-p]*
\ud800\udc01bc\ud800\udc01\ud800\udc01 mn  p
true \ud800\udc01bc\ud800\udc01\ud800\udc01 mn  p 0

// Test the whitespace escape sequence
\ud800\udc61b\s\ud800\udc03
\ud800\udc61b \ud800\udc03
true \ud800\udc61b \ud800\udc03 0

\s\s\s
bl\ud800\udc61h  err
false 0

\S\S\s
bl\ud800\udc61h  err
true \ud800\udc61h  0

// Test the digit escape sequence
\ud800\udc61b\d\ud800\udc03
\ud800\udc61b9\ud800\udc03
true \ud800\udc61b9\ud800\udc03 0

\d\d\d
bl\ud800\udc61h45
false 0

// Test the caret metacharacter
^\ud800\udc61bc
\ud800\udc61bcdef
true \ud800\udc61bc 0

^\ud800\udc61bc
bcd\ud800\udc61bc
false 0

// Greedy ? metacharacter
\ud800\udc61?\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc02 0

\udc61?\ud800\udc02
\ud800\udc61\udc61\udc61\ud800\udc02
true \udc61\ud800\udc02 0

\ud800\udc61?\ud800\udc02
\ud800\udc02
true \ud800\udc02 0

\ud800?\ud800\udc02
\ud800\udc02
true \ud800\udc02 0

\ud800\udc61?\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc03\ud800\udc03\ud800\udc03
false 0

.?\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc02 0

// Reluctant ? metacharacter
\ud800\udc61??\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc02 0

\ud800??\ud800\udc02
\ud800\ud800\ud8001\ud800\ud800\udc02
true \ud800\ud800\udc02 0

\ud800\udc61??\ud800\udc02
\ud800\udc02
true \ud800\udc02 0

\ud800??\ud800\udc02
\ud800\udc02
true \ud800\udc02 0

\ud800\udc61??\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.??\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc02 0

// Possessive ? metacharacter
\ud800\udc61?+\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc02 0

\ud800\udc61?+\ud800\udc02
\ud800\udc02
true \ud800\udc02 0

\ud800\udc61?+\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.?+\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc02 0

// Greedy + metacharacter
\ud800\udc61+\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0

\udc61+\ud800\udc02
\ud800\udc61\udc61\udc61\udc61\ud800\udc02
true \udc61\udc61\udc61\ud800\udc02 0

\ud800\udc61+\ud800\udc02
\ud800\udc02
false 0

\ud800+\ud800\udc02
\ud800\udc02
false 0

\ud800\udc61+\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.+\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0

.+\ud800\udc02
\ud800\udc61\udc61\udc61\udc61\ud800\udc02
true \ud800\udc61\udc61\udc61\udc61\ud800\udc02 0

// Reluctant + metacharacter
\ud800\udc61+?\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0

\udc61+?\ud800\udc02
\udc61\udc61\udc61\udc61\ud800\udc02
true \udc61\udc61\udc61\udc61\ud800\udc02 0

\ud800\udc61+?\ud800\udc02
\ud800\udc02
false 0

\ud800+?\ud800\udc02
\ud800\udc02
false 0

\ud800\udc61+?\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.+?\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0

// Possessive + metacharacter
\ud800\udc61++\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02 0

\ud800\udc61++\ud800\udc02
\ud800\udc02
false 0

\ud800\udc61++\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.++\ud800\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc02
false 0

// Greedy Repetition
\ud800\udc61{2,3}
\ud800\udc61
false 0

\ud800\udc61{2,3}
\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61 0

\ud800\udc61{2,3}
\ud800\udc61\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61\ud800\udc61 0

\ud800\udc61{2,3}
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61\ud800\udc61 0

\ud800\udc61{3,}
zzz\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61zzz
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61 0

\ud800\udc61{3,}
zzz\ud800\udc61\ud800\udc61zzz
false 0

// Reluctant Repetition
\ud800\udc61{2,3}?
\ud800\udc61
false 0

\ud800\udc61{2,3}?
\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61 0

\ud800\udc61{2,3}?
\ud800\udc61\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61 0

\ud800\udc61{2,3}?
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61
true \ud800\udc61\ud800\udc61 0

// Zero width Positive lookahead
\ud800\udc61\ud802\udc02\ud803\udc03(?=\ud804\udc04)
zzz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04
true \ud800\udc61\ud802\udc02\ud803\udc03 0

\ud800\udc61\ud802\udc02\ud803\udc03(?=\ud804\udc04)
zzz\ud800\udc61\ud802\udc02\ud803\udc03e\ud804\udc04
false 0

\ud800\udc61\ud802\udc02\ud803\udc03(?=\udcff\ud804\udc04)
zzz\ud800\udc61\ud802\udc02\ud803\udc03\udcff\ud804\udc04
true \ud800\udc61\ud802\udc02\ud803\udc03 0

\ud800\udc61\ud802\udc02\ud803\udc03(?=\udcff\ud804\udc04)
zzz\ud800\udc61\ud802\udc02\ud803\udc03\ud8ff\udcff\ud804\udc04
false 0

// Zero width Negative lookahead
\ud800\udc61\ud802\udc02\ud803\udc03(?!\ud804\udc04)
zz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04
false 0

a\ud802\udc02\ud803\udc03(?!\ud804\udc04)
zza\ud802\udc02\ud803\udc03\udc04\ud804\udc04
true a\ud802\udc02\ud803\udc03 0

\ud800\udc61\ud802\udc02\ud803\udc03(?!\ud804\udc04\ud8ff)
zz\ud800\udc61\ud802\udc02\ud803\udc03\ud804\udc04\ud8ffX
false 0

a\ud802\udc02\ud803\udc03(?!\ud804\udc04\ud8ff)
zza\ud802\udc02\ud803\udc03e\ud804\udc04\ud8ff\udcff
true a\ud802\udc02\ud803\udc03 0

// Zero width Positive lookbehind
(?<=\ud801\udc01\ud802\udc02)\ud803\udc03
\ud801\udc01\ud802\udc02\ud803\udc03
true \ud803\udc03 0

// Zero width Negative lookbehind
(?<!\ud801\udc01)\ud802\udc02\ud803\udc03
###\ud800\udc00\ud802\udc02\ud803\udc03
true \ud802\udc02\ud803\udc03 0

(?<![\ud801\udc01\ud802\udc02])\ud803\udc03.
\ud801\udc01\ud803\udc03x\ud800\udc00\ud803\udc03y
true \ud803\udc03y 0

(?<!\ud801\udc01)\ud803\udc03
\ud801\udc01\ud803\udc03
false 0

// Nondeterministic group
(\ud800\udc61+\ud802)+
\ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802
true \ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802 1 \ud800\udc61\ud802

(\ud800\udc61|\ud802)+
\ud800\ud802\udc61\ud803\ud802\udc61
false 1

// Deterministic group
(\ud800\udc61\ud802)+
\ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802
true \ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802 1 \ud800\udc61\ud802

(\ud800\udc61\ud802)+
\ud800\udc61ccccd
false 1

(\ud800\udc61\ud802)*
\ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802
true \ud800\udc61\ud802\ud800\udc61\ud802\ud800\udc61\ud802 1 \ud800\udc61\ud802

(\ud800\udc61b)(cd*)
zzz\ud800\udc61bczzz
true \ud800\udc61bc 2 \ud800\udc61b c

\ud800\udc61bc(\ud804\udc04)*\ud800\udc61bc
\ud800\udc61bc\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud800\udc61bc
true \ud800\udc61bc\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud804\udc04\ud800\udc61bc 1 \ud804\udc04

// Back references
(\ud800\udc61*)\ud802\udc02c\1
zzz\ud800\udc61\ud800\udc61\ud802\udc02c\ud800\udc61\ud800\udc61zzz
true \ud800\udc61\ud800\udc61\ud802\udc02c\ud800\udc61\ud800\udc61 1 \ud800\udc61\ud800\udc61

(\ud800\udc61*)\ud802\udc02c\1
zzz\ud800\udc61\ud800\udc61\ud802\udc02c\ud800\udc61zzz
true \ud800\udc61\ud802\udc02c\ud800\udc61 1 \ud800\udc61

(\ud800\udc07\ud800\udc14*)(\ud804\udc04\ud804\udc04e)*(yu)\1\3(vv)
zzz\ud800\udc07\ud800\udc14\ud800\udc14\ud804\udc04\ud804\udc04e\ud804\udc04\ud804\udc04eyu\ud800\udc07\ud800\udc14\ud800\udc14yuvvzzz
true \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

// Greedy * metacharacter
\ud800\udc61*\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0

\ud800\udc61*\ud802\udc02
\ud802\udc02
true \ud802\udc02 0

\ud800\udc61*\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.*\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0

// Reluctant * metacharacter
\ud800\udc61*?\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0

\ud800\udc61*?\ud802\udc02
\ud802\udc02
true \ud802\udc02 0

\ud800\udc61*?\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.*?\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0

// Possessive * metacharacter
\ud800\udc61*+\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
true \ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02 0

\ud800\udc61*+\ud802\udc02
\ud802\udc02
true \ud802\udc02 0

\ud800\udc61*+\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61ccc
false 0

.*+\ud802\udc02
\ud800\udc61\ud800\udc61\ud800\udc61\ud800\udc61\ud802\udc02
false 0

// Case insensitivity
(?iu)\ud801\udc00\ud801\udc01\ud801\udc02x
\ud801\udc28\ud801\udc29\ud801\udc2aX
true \ud801\udc28\ud801\udc29\ud801\udc2aX 0

\ud801\udc00(?iu)\ud801\udc01\ud801\udc02
\ud801\udc00\ud801\udc29\ud801\udc2a
true \ud801\udc00\ud801\udc29\ud801\udc2a 0

\ud801\udc00(?iu)\ud801\udc01\ud801\udc02
\ud801\udc28\ud801\udc29\ud801\udc2a
false 0

(?iu)\ud801\udc00[\ud801\udc01\ud801\udc02]+
\ud801\udc28\ud801\udc29\ud801\udc2a
true \ud801\udc28\ud801\udc29\ud801\udc2a 0

(?iu)[\ud801\udc00-\ud801\udc02]+
\ud801\udc28\ud801\udc29\ud801\udc2a
true \ud801\udc28\ud801\udc29\ud801\udc2a 0

// Disable metacharacters- test both length <=3 and >3
// So that the BM optimization is part of test
\Q***\E\ud801\udc01\ud802\udc02\ud800\udc03
***\ud801\udc01\ud802\udc02\ud800\udc03
true ***\ud801\udc01\ud802\udc02\ud800\udc03 0

\ud802\udc02l\Q***\E\ud801\udc01\ud802\udc02\ud800\udc03
\ud802\udc02l***\ud801\udc01\ud802\udc02\ud800\udc03
true \ud802\udc02l***\ud801\udc01\ud802\udc02\ud800\udc03 0

\Q***\ud801\udc01\ud802\udc02\ud800\udc03
***\ud801\udc01\ud802\udc02\ud800\udc03
true ***\ud801\udc01\ud802\udc02\ud800\udc03 0

\ud802\udc02l\ud801\udc01h\Q***\E\ud801\udc01\ud802\udc02\ud800\udc03
\ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03
true \ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03 0

\Q***\ud801\udc01\ud802\udc02\ud800\udc03
***\ud801\udc01\ud802\udc02\ud800\udc03
true ***\ud801\udc01\ud802\udc02\ud800\udc03 0

\Q*\ud801\udc01\ud802\udc02
*\ud801\udc01\ud802\udc02
true *\ud801\udc01\ud802\udc02 0

\ud802\udc02l\ud801\udc01h\Q***\ud801\udc01\ud802\udc02\ud800\udc03
\ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03
true \ud802\udc02l\ud801\udc01h***\ud801\udc01\ud802\udc02\ud800\udc03 0

\ud802\udc02l\ud801\udc01\Q***\ud801\udc01\ud802\udc02\ud800\udc03
\ud802\udc02l\ud801\udc01***\ud801\udc01\ud802\udc02\ud800\udc03
true \ud802\udc02l\ud801\udc01***\ud801\udc01\ud802\udc02\ud800\udc03 0

//Test cases below copied from i18n QE's RegexSupplementaryTests.txt
\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
true \uD800\uDFFF\uD801\uDFF1\uDB00\uDC00 0

\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
\u1000\uD801\uDFF1\uDB00\uDC00
false 0

\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
\uD800\uDFFF\uFFFF\uDB00\uDC00
false 0

\uD800\uDFFF\uD801\uDFF1\uDB00\uDC00
\uD800\uDFFF\uD801\uDFF1\uFFFF
false 0

\u1000.\uFFFF
\u1000\uD800\uDFFF\uFFFF
true \u1000\uD800\uDFFF\uFFFF 0

//=======
// Ranges
//=======
[a-\uD800\uDFFF]
\uDFFF
true \uDFFF 0

[a-\uD800\uDFFF]
\uD800
true \uD800 0

[a-\uD800\uDFFF]
\uD800\uDFFF
true \uD800\uDFFF 0

[\uD800\uDC00-\uDBFF\uDFFF]
\uDBFF
false 0

[\uD800\uDC00-\uDBFF\uDFFF]
\uDC00
false 0

[\uD800-\uDFFF]
\uD800\uDFFF
false 0

[\uD800-\uDFFF]
\uDFFF\uD800
true \uDFFF 0

foo[^\uD800-\uDFFF]
foo\uD800\uDFFF
true foo\uD800\uDFFF 0

foo[^\uD800-\uDFFF]
foo\uDFFF\uD800
false 0

//fo\uD800[\uDC00-\uDFFF]

//==================
// Character Classes
//==================
// Simple class
[ab\uD800\uDFFFcd]at
\uD800at
false 0

[ab\uD800\uDFFFcd]at
\uD800\uDFFFat
true \uD800\uDFFFat 0

// Negation
[^\uD800\uDFFFcd]at
\uD800at
true \uD800at 0

[^\uD800\uDFFFcd]at
\uDFFFat
true \uDFFFat 0

// Inclusive range
[\u0000-\uD800\uDFFF-\uFFFF]
\uD800\uDFFF
true \uD800\uDFFF 0

// Unions
[\u0000-\uD800[\uDFFF-\uFFFF]]
\uD800\uDFFF
false 0


// Intersection
[\u0000-\uFFFF&&[\uD800\uDFFF]]
\uD800\uDFFF
false 0

[\u0000-\uFFFF&&[\uD800\uDFFF]]
\uD800
false 0

[\u0000-\uFFFF&&[\uDFFF\uD800]]
\uD800
true \uD800 0

[\u0000-\uFFFF&&[\uDFFF\uD800\uDC00]]
\uDC00
false 0

[\u0000-\uDFFF&&[\uD800-\uFFFF]]
\uD800\uDFFF
false 0

[\u0000-\uDFFF&&[\uD800-\uFFFF]]
\uDFFF\uD800
true \uDFFF 0

// Subtraction
[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
\uD800
true \uD800 0

[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
\uDC00
true \uDC00 0

[\u0000-\uD800\uDFFF&&[^\uD800\uDC00]]
\uD800\uDFFF
true \uD800\uDFFF 0

[\u0000-\uD800\uDFFF&&[^\uD800\uDBFF\uDC00]]
\uD800
false 0

[\u0000-\uD800\uDFFF&&[^\uDC00\uD800\uDBFF]]
\uD800\uDC00
true \uD800\uDC00 0

// Quantifiers
a\uD800\uDFFF?
a\uD800
true a 0

a\uD800\uDFFF?
a\uDFFF
true a 0

a\uD800\uDFFF?
a\uD800\uDFFF
true a\uD800\uDFFF 0

a\uDFFF\uD800?
a\uDFFF
true a\uDFFF 0

a\uDFFF\uD800?
a\uD800
false 0

\uD800\uDFFF\uDC00?
\uD800
false 0

\uD800\uDFFF\uDC00?
\uD800\uDFFF
true \uD800\uDFFF 0

a\uD800\uDFFF??
a\uDFFF
true a 0

a\uD800\uDFFF*
a
true a 0

a\uD800\uDFFF*
a\uD800
true a 0

\uD800\uDFFF*
\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
true \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0

\uD800\uDFFF*
\uD800\uDFFF\uDFFF\uDFFF\uDFFF
true \uD800\uDFFF 0

\uD800*\uDFFF
\uD800\uDFFF
false 0

a\uD800\uDFFF*
a\uD800
true a 0

\uDFFF\uD800*
\uDFFF
true \uDFFF 0

\uDFFF\uD800*
\uDFFF\uD800\uD800\uD800
true \uDFFF\uD800\uD800\uD800 0

\uD800\uDFFF+
\uD800\uDFFF\uDFFF\uDFFF
true \uD800\uDFFF 0

\uD800\uDFFF+
\uD800
false 0

\uD800\uDFFF+
\uD800\uDFFF
true \uD800\uDFFF 0

\uD800\uDFFF+
\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
true \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0

\uDFFF\uD800+
\uDFFF\uD800\uDFFF\uD800
false 0

\uD800+\uDFFF
\uD800\uDFFF
false 0

\uD800+\uDFFF
\uD800
false 0

\uDFFF+\uD800
\uD800
false 0

\uDFFF+\uD800
\uDFFF\uD800
true \uDFFF\uD800 0

\uD800\uDFFF{3}
\uD800\uDFFF\uDFFF\uDFFF
false 0

\uD800\uDFFF{3}
\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
true \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0

\uDFFF\uD800{3}
\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800
false 0

\uDFFF\uD800{3}
\uDFFF\uD800\uD800\uD800
true \uDFFF\uD800\uD800\uD800 0

\uD800\uDFFF{2,}
\uD800\uDFFF
false 0

\uD800\uDFFF{2,}
\uD800\uDFFF\uDFFF
false 0

\uD800\uDFFF{2,}
\uD800\uDFFF\uD800\uDFFF
true \uD800\uDFFF\uD800\uDFFF 0

\uDFFF\uD800{2,}
\uDFFF\uD800\uDFFF\uD800
false 0

\uDFFF\uD800{2,}
\uDFFF\uD800\uD800\uD800
true \uDFFF\uD800\uD800\uD800 0

\uD800\uDFFF{3,4}
\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
true \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0

\uD800\uDFFF{3,4}
\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF\uD800
true \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0

\uD800\uDFFF{3,4}
\uD800\uDFFF\uD800\uD800\uDFFF\uD800\uDFFF
false 0

\uDFFF\uD800{3,5}
\uDFFF\uD800\uD800\uD800\uD800\uD800\uD800\uD800
true \uDFFF\uD800\uD800\uD800\uD800\uD800 0

\uD800\uDFFF{3,5}
\uD800\uDFFF\uDFFF\uDFFF
false 0

\uD800\uDFFF{3,5}
\uD800\uDFFF\uD800\uD800\uDFFF\uD800\uDFFF\uD800\uDFFF
true \uD800\uDFFF\uD800\uDFFF\uD800\uDFFF 0

// Groupings
(\uD800(\uDFFF))
\uD800\uDFFF
false 2

(\uD800(\uDC00)(\uDFFF))
\uD800\uDC00\uDFFF
false 3

((\uD800)(\uDFFF))
\uD800\uDFFF
false 3

(\uD800(\uDFFF)\uDFFF)
\uD800\uDFFF
false 2

(\uDFFF(\uD800)(\uDBFF))
\uDFFF\uD800\uDBFF
true \uDFFF\uD800\uDBFF 3 \uDFFF\uD800\uDBFF \uD800 \uDBFF

(\uDFFF(\uD800)(\uDC00))
\uDFFF\uD800\uDC00
false 3

(\uDFFF\uD800(\uDC00\uDBFF))
\uDFFF\uD800\uDC00\uDBFF
false 2

(\uD800\uDFFF(\uDBFF)(\uDC00))
\uD800\uDFFF\uDBFF\uDC00
false 3

(\uD800\uDFFF(\uDBFF\uDC00))
\uD800\uDFFF\uDBFF\uDC00
true \uD800\uDFFF\uDBFF\uDC00 2 \uD800\uDFFF\uDBFF\uDC00 \uDBFF\uDC00

Messung V0.5
C=91 H=98 G=94

¤ Dauer der Verarbeitung: 0.28 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge