mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
eb04c21373
This patch syncs the regex implementation with gnulib (commit 0ee5212). Only two changes in GLIBC regex testing are required: 1. posix/bug-regex28.c: as previously discussed [1] the change of expected results on the pattern should be safe. 2. posix/PCRE.tests: the ERE (a)|\1 is malformed (in the sense that the \1 doesn't mean anything) and although current GLIBC accepts it has undefined behavior. This patch removes the specific test. This sync contains some patches from thread 'Regex: Make libc regex more usable outside GLIBC.' [2] which have been pushed upstream in gnulib. This patches also fixes some regex issues (BZ #23233, BZ #21163, BZ #18986, BZ #13762) and I did not add testcases for both #23233 and #13762 because I couldn't think a simple way to trigger the expected failure path to trigger them. Checked on x86_64-linux-gnu and i686-linux-gnu. [BZ #23233] [BZ #21163] [BZ #18986] [BZ #13762] * posix/Makefile (tests): Add bug-regex37 and bug-regex38. * posix/PCRE.tests: Remove invalid test. * posix/bug-regex28.c: Fix expected values for used syntax. * posix/bug-regex37.c: New file. * posix/bug-regex38.c: Likewise. * posix/regcomp.c: Sync with gnulib. * posix/regex.c: Likewise. * posix/regex.h: Likewise. * posix/regex_internal.c: Likewise. * posix/regex_internal.h: Likewise. * posix/regexec.c: Likewise. [1] https://sourceware.org/ml/libc-alpha/2017-12/msg00807.html [2] https://sourceware.org/ml/libc-alpha/2017-12/msg00237.html
2374 lines
25 KiB
Plaintext
2374 lines
25 KiB
Plaintext
# PCRE version 4.4 21-August-2003
|
|
|
|
# Tests taken from PCRE and modified to suit glibc regex.
|
|
#
|
|
# PCRE LICENCE
|
|
# ------------
|
|
#
|
|
# PCRE is a library of functions to support regular expressions whose syntax
|
|
# and semantics are as close as possible to those of the Perl 5 language.
|
|
#
|
|
# Written by: Philip Hazel <ph10@cam.ac.uk>
|
|
#
|
|
# University of Cambridge Computing Service,
|
|
# Cambridge, England. Phone: +44 1223 334714.
|
|
#
|
|
# Copyright (c) 1997-2003 University of Cambridge
|
|
#
|
|
# Permission is granted to anyone to use this software for any purpose on any
|
|
# computer system, and to redistribute it freely, subject to the following
|
|
# restrictions:
|
|
#
|
|
# 1. This software 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.
|
|
#
|
|
# 2. The origin of this software must not be misrepresented, either by
|
|
# explicit claim or by omission. In practice, this means that if you use
|
|
# PCRE in software that you distribute to others, commercially or
|
|
# otherwise, you must put a sentence like this
|
|
#
|
|
# Regular expression support is provided by the PCRE library package,
|
|
# which is open source software, written by Philip Hazel, and copyright
|
|
# by the University of Cambridge, England.
|
|
#
|
|
# somewhere reasonably visible in your documentation and in any relevant
|
|
# files or online help data or similar. A reference to the ftp site for
|
|
# the source, that is, to
|
|
#
|
|
# ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
|
|
#
|
|
# should also be given in the documentation. However, this condition is not
|
|
# intended to apply to whole chains of software. If package A includes PCRE,
|
|
# it must acknowledge it, but if package B is software that includes package
|
|
# A, the condition is not imposed on package B (unless it uses PCRE
|
|
# independently).
|
|
#
|
|
# 3. Altered versions must be plainly marked as such, and must not be
|
|
# misrepresented as being the original software.
|
|
#
|
|
# 4. If PCRE is embedded in any software that is released under the GNU
|
|
# General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),
|
|
# then the terms of that licence shall supersede any condition above with
|
|
# which it is incompatible.
|
|
#
|
|
# The documentation for PCRE, supplied in the "doc" directory, is distributed
|
|
# under the same terms as the software itself.
|
|
#
|
|
# End
|
|
#
|
|
|
|
/the quick brown fox/
|
|
the quick brown fox
|
|
0: the quick brown fox
|
|
The quick brown FOX
|
|
No match
|
|
What do you know about the quick brown fox?
|
|
0: the quick brown fox
|
|
What do you know about THE QUICK BROWN FOX?
|
|
No match
|
|
|
|
/The quick brown fox/i
|
|
the quick brown fox
|
|
0: the quick brown fox
|
|
The quick brown FOX
|
|
0: The quick brown FOX
|
|
What do you know about the quick brown fox?
|
|
0: the quick brown fox
|
|
What do you know about THE QUICK BROWN FOX?
|
|
0: THE QUICK BROWN FOX
|
|
|
|
/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
|
|
abxyzpqrrrabbxyyyypqAzz
|
|
0: abxyzpqrrrabbxyyyypqAzz
|
|
abxyzpqrrrabbxyyyypqAzz
|
|
0: abxyzpqrrrabbxyyyypqAzz
|
|
aabxyzpqrrrabbxyyyypqAzz
|
|
0: aabxyzpqrrrabbxyyyypqAzz
|
|
aaabxyzpqrrrabbxyyyypqAzz
|
|
0: aaabxyzpqrrrabbxyyyypqAzz
|
|
aaaabxyzpqrrrabbxyyyypqAzz
|
|
0: aaaabxyzpqrrrabbxyyyypqAzz
|
|
abcxyzpqrrrabbxyyyypqAzz
|
|
0: abcxyzpqrrrabbxyyyypqAzz
|
|
aabcxyzpqrrrabbxyyyypqAzz
|
|
0: aabcxyzpqrrrabbxyyyypqAzz
|
|
aaabcxyzpqrrrabbxyyyypAzz
|
|
0: aaabcxyzpqrrrabbxyyyypAzz
|
|
aaabcxyzpqrrrabbxyyyypqAzz
|
|
0: aaabcxyzpqrrrabbxyyyypqAzz
|
|
aaabcxyzpqrrrabbxyyyypqqAzz
|
|
0: aaabcxyzpqrrrabbxyyyypqqAzz
|
|
aaabcxyzpqrrrabbxyyyypqqqAzz
|
|
0: aaabcxyzpqrrrabbxyyyypqqqAzz
|
|
aaabcxyzpqrrrabbxyyyypqqqqAzz
|
|
0: aaabcxyzpqrrrabbxyyyypqqqqAzz
|
|
aaabcxyzpqrrrabbxyyyypqqqqqAzz
|
|
0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
|
|
aaabcxyzpqrrrabbxyyyypqqqqqqAzz
|
|
0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
|
|
aaaabcxyzpqrrrabbxyyyypqAzz
|
|
0: aaaabcxyzpqrrrabbxyyyypqAzz
|
|
abxyzzpqrrrabbxyyyypqAzz
|
|
0: abxyzzpqrrrabbxyyyypqAzz
|
|
aabxyzzzpqrrrabbxyyyypqAzz
|
|
0: aabxyzzzpqrrrabbxyyyypqAzz
|
|
aaabxyzzzzpqrrrabbxyyyypqAzz
|
|
0: aaabxyzzzzpqrrrabbxyyyypqAzz
|
|
aaaabxyzzzzpqrrrabbxyyyypqAzz
|
|
0: aaaabxyzzzzpqrrrabbxyyyypqAzz
|
|
abcxyzzpqrrrabbxyyyypqAzz
|
|
0: abcxyzzpqrrrabbxyyyypqAzz
|
|
aabcxyzzzpqrrrabbxyyyypqAzz
|
|
0: aabcxyzzzpqrrrabbxyyyypqAzz
|
|
aaabcxyzzzzpqrrrabbxyyyypqAzz
|
|
0: aaabcxyzzzzpqrrrabbxyyyypqAzz
|
|
aaaabcxyzzzzpqrrrabbxyyyypqAzz
|
|
0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
|
|
aaaabcxyzzzzpqrrrabbbxyyyypqAzz
|
|
0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
|
|
aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
|
|
0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
|
|
aaabcxyzpqrrrabbxyyyypABzz
|
|
0: aaabcxyzpqrrrabbxyyyypABzz
|
|
aaabcxyzpqrrrabbxyyyypABBzz
|
|
0: aaabcxyzpqrrrabbxyyyypABBzz
|
|
>>>aaabxyzpqrrrabbxyyyypqAzz
|
|
0: aaabxyzpqrrrabbxyyyypqAzz
|
|
>aaaabxyzpqrrrabbxyyyypqAzz
|
|
0: aaaabxyzpqrrrabbxyyyypqAzz
|
|
>>>>abcxyzpqrrrabbxyyyypqAzz
|
|
0: abcxyzpqrrrabbxyyyypqAzz
|
|
*** Failers
|
|
No match
|
|
abxyzpqrrabbxyyyypqAzz
|
|
No match
|
|
abxyzpqrrrrabbxyyyypqAzz
|
|
No match
|
|
abxyzpqrrrabxyyyypqAzz
|
|
No match
|
|
aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
|
|
No match
|
|
aaaabcxyzzzzpqrrrabbbxyyypqAzz
|
|
No match
|
|
aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
|
|
No match
|
|
|
|
/^(abc){1,2}zz/
|
|
abczz
|
|
0: abczz
|
|
1: abc
|
|
abcabczz
|
|
0: abcabczz
|
|
1: abc
|
|
*** Failers
|
|
No match
|
|
zz
|
|
No match
|
|
abcabcabczz
|
|
No match
|
|
>>abczz
|
|
No match
|
|
|
|
/^(b+|a){1,2}c/
|
|
bc
|
|
0: bc
|
|
1: b
|
|
bbc
|
|
0: bbc
|
|
1: bb
|
|
bbbc
|
|
0: bbbc
|
|
1: bbb
|
|
bac
|
|
0: bac
|
|
1: a
|
|
bbac
|
|
0: bbac
|
|
1: a
|
|
aac
|
|
0: aac
|
|
1: a
|
|
abbbbbbbbbbbc
|
|
0: abbbbbbbbbbbc
|
|
1: bbbbbbbbbbb
|
|
bbbbbbbbbbbac
|
|
0: bbbbbbbbbbbac
|
|
1: a
|
|
*** Failers
|
|
No match
|
|
aaac
|
|
No match
|
|
abbbbbbbbbbbac
|
|
No match
|
|
|
|
/^[]cde]/
|
|
]thing
|
|
0: ]
|
|
cthing
|
|
0: c
|
|
dthing
|
|
0: d
|
|
ething
|
|
0: e
|
|
*** Failers
|
|
No match
|
|
athing
|
|
No match
|
|
fthing
|
|
No match
|
|
|
|
/^[^]cde]/
|
|
athing
|
|
0: a
|
|
fthing
|
|
0: f
|
|
*** Failers
|
|
0: *
|
|
]thing
|
|
No match
|
|
cthing
|
|
No match
|
|
dthing
|
|
No match
|
|
ething
|
|
No match
|
|
|
|
/^[0-9]+$/
|
|
0
|
|
0: 0
|
|
1
|
|
0: 1
|
|
2
|
|
0: 2
|
|
3
|
|
0: 3
|
|
4
|
|
0: 4
|
|
5
|
|
0: 5
|
|
6
|
|
0: 6
|
|
7
|
|
0: 7
|
|
8
|
|
0: 8
|
|
9
|
|
0: 9
|
|
10
|
|
0: 10
|
|
100
|
|
0: 100
|
|
*** Failers
|
|
No match
|
|
abc
|
|
No match
|
|
|
|
/^.*nter/
|
|
enter
|
|
0: enter
|
|
inter
|
|
0: inter
|
|
uponter
|
|
0: uponter
|
|
|
|
/^xxx[0-9]+$/
|
|
xxx0
|
|
0: xxx0
|
|
xxx1234
|
|
0: xxx1234
|
|
*** Failers
|
|
No match
|
|
xxx
|
|
No match
|
|
|
|
/^.+[0-9][0-9][0-9]$/
|
|
x123
|
|
0: x123
|
|
xx123
|
|
0: xx123
|
|
123456
|
|
0: 123456
|
|
*** Failers
|
|
No match
|
|
123
|
|
No match
|
|
x1234
|
|
0: x1234
|
|
|
|
/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
|
|
abc!pqr=apquxz.ixr.zzz.ac.uk
|
|
0: abc!pqr=apquxz.ixr.zzz.ac.uk
|
|
1: abc
|
|
2: pqr
|
|
*** Failers
|
|
No match
|
|
!pqr=apquxz.ixr.zzz.ac.uk
|
|
No match
|
|
abc!=apquxz.ixr.zzz.ac.uk
|
|
No match
|
|
abc!pqr=apquxz:ixr.zzz.ac.uk
|
|
No match
|
|
abc!pqr=apquxz.ixr.zzz.ac.ukk
|
|
No match
|
|
|
|
/:/
|
|
Well, we need a colon: somewhere
|
|
0: :
|
|
*** Fail if we don't
|
|
No match
|
|
|
|
/([0-9a-f:]+)$/i
|
|
0abc
|
|
0: 0abc
|
|
1: 0abc
|
|
abc
|
|
0: abc
|
|
1: abc
|
|
fed
|
|
0: fed
|
|
1: fed
|
|
E
|
|
0: E
|
|
1: E
|
|
::
|
|
0: ::
|
|
1: ::
|
|
5f03:12C0::932e
|
|
0: 5f03:12C0::932e
|
|
1: 5f03:12C0::932e
|
|
fed def
|
|
0: def
|
|
1: def
|
|
Any old stuff
|
|
0: ff
|
|
1: ff
|
|
*** Failers
|
|
No match
|
|
0zzz
|
|
No match
|
|
gzzz
|
|
No match
|
|
Any old rubbish
|
|
No match
|
|
|
|
/^.*\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/
|
|
.1.2.3
|
|
0: .1.2.3
|
|
1: 1
|
|
2: 2
|
|
3: 3
|
|
A.12.123.0
|
|
0: A.12.123.0
|
|
1: 12
|
|
2: 123
|
|
3: 0
|
|
*** Failers
|
|
No match
|
|
.1.2.3333
|
|
No match
|
|
1.2.3
|
|
No match
|
|
1234.2.3
|
|
No match
|
|
|
|
/^([0-9]+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
|
|
1 IN SOA non-sp1 non-sp2(
|
|
0: 1 IN SOA non-sp1 non-sp2(
|
|
1: 1
|
|
2: non-sp1
|
|
3: non-sp2
|
|
1 IN SOA non-sp1 non-sp2 (
|
|
0: 1 IN SOA non-sp1 non-sp2 (
|
|
1: 1
|
|
2: non-sp1
|
|
3: non-sp2
|
|
*** Failers
|
|
No match
|
|
1IN SOA non-sp1 non-sp2(
|
|
No match
|
|
|
|
/^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-z0-9-]*)*\.$/
|
|
a.
|
|
0: a.
|
|
Z.
|
|
0: Z.
|
|
2.
|
|
0: 2.
|
|
ab-c.pq-r.
|
|
0: ab-c.pq-r.
|
|
1: .pq-r
|
|
sxk.zzz.ac.uk.
|
|
0: sxk.zzz.ac.uk.
|
|
1: .uk
|
|
x-.y-.
|
|
0: x-.y-.
|
|
1: .y-
|
|
*** Failers
|
|
No match
|
|
-abc.peq.
|
|
No match
|
|
|
|
/^\*\.[a-z]([a-z0-9-]*[a-z0-9]+)?(\.[a-z]([a-z0-9-]*[a-z0-9]+)?)*$/
|
|
*.a
|
|
0: *.a
|
|
*.b0-a
|
|
0: *.b0-a
|
|
1: 0-a
|
|
*.c3-b.c
|
|
0: *.c3-b.c
|
|
1: 3-b
|
|
2: .c
|
|
*.c-a.b-c
|
|
0: *.c-a.b-c
|
|
1: -a
|
|
2: .b-c
|
|
3: -c
|
|
*** Failers
|
|
No match
|
|
*.0
|
|
No match
|
|
*.a-
|
|
No match
|
|
*.a-b.c-
|
|
No match
|
|
*.c-a.0-c
|
|
No match
|
|
|
|
/^[0-9a-f](\.[0-9a-f])*$/i
|
|
a.b.c.d
|
|
0: a.b.c.d
|
|
1: .d
|
|
A.B.C.D
|
|
0: A.B.C.D
|
|
1: .D
|
|
a.b.c.1.2.3.C
|
|
0: a.b.c.1.2.3.C
|
|
1: .C
|
|
|
|
/^".*"\s*(;.*)?$/
|
|
"1234"
|
|
0: "1234"
|
|
"abcd" ;
|
|
0: "abcd" ;
|
|
1: ;
|
|
"" ; rhubarb
|
|
0: "" ; rhubarb
|
|
1: ; rhubarb
|
|
*** Failers
|
|
No match
|
|
"1234" : things
|
|
No match
|
|
|
|
/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
|
|
abcdefhijklm
|
|
0: abcdefhijklm
|
|
1: abc
|
|
2: bc
|
|
3: c
|
|
4: def
|
|
5: ef
|
|
6: f
|
|
7: hij
|
|
8: ij
|
|
9: j
|
|
10: klm
|
|
11: lm
|
|
12: m
|
|
|
|
/^a*\w/
|
|
z
|
|
0: z
|
|
az
|
|
0: az
|
|
aaaz
|
|
0: aaaz
|
|
a
|
|
0: a
|
|
aa
|
|
0: aa
|
|
aaaa
|
|
0: aaaa
|
|
a+
|
|
0: a
|
|
aa+
|
|
0: aa
|
|
|
|
/^a+\w/
|
|
az
|
|
0: az
|
|
aaaz
|
|
0: aaaz
|
|
aa
|
|
0: aa
|
|
aaaa
|
|
0: aaaa
|
|
aa+
|
|
0: aa
|
|
|
|
/^[0-9]{8}\w{2,}/
|
|
1234567890
|
|
0: 1234567890
|
|
12345678ab
|
|
0: 12345678ab
|
|
12345678__
|
|
0: 12345678__
|
|
*** Failers
|
|
No match
|
|
1234567
|
|
No match
|
|
|
|
/^[aeiou0-9]{4,5}$/
|
|
uoie
|
|
0: uoie
|
|
1234
|
|
0: 1234
|
|
12345
|
|
0: 12345
|
|
aaaaa
|
|
0: aaaaa
|
|
*** Failers
|
|
No match
|
|
123456
|
|
No match
|
|
|
|
/\`(abc|def)=(\1){2,3}\'/
|
|
abc=abcabc
|
|
0: abc=abcabc
|
|
1: abc
|
|
2: abc
|
|
def=defdefdef
|
|
0: def=defdefdef
|
|
1: def
|
|
2: def
|
|
*** Failers
|
|
No match
|
|
abc=defdef
|
|
No match
|
|
|
|
/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
|
|
cataract cataract23
|
|
0: cataract cataract23
|
|
1: cataract
|
|
2: aract
|
|
3: ract
|
|
4:
|
|
5: 3
|
|
catatonic catatonic23
|
|
0: catatonic catatonic23
|
|
1: catatonic
|
|
2: atonic
|
|
3: tonic
|
|
4:
|
|
5: 3
|
|
caterpillar caterpillar23
|
|
0: caterpillar caterpillar23
|
|
1: caterpillar
|
|
2: erpillar
|
|
3: <unset>
|
|
4:
|
|
5: 3
|
|
|
|
|
|
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
|
|
From abcd Mon Sep 01 12:33:02 1997
|
|
0: From abcd Mon Sep 01 12:33
|
|
1: abcd
|
|
|
|
/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}[0-9]{1,2}\s+[0-9][0-9]:[0-9][0-9]/
|
|
From abcd Mon Sep 01 12:33:02 1997
|
|
0: From abcd Mon Sep 01 12:33
|
|
1: Sep
|
|
From abcd Mon Sep 1 12:33:02 1997
|
|
0: From abcd Mon Sep 1 12:33
|
|
1: Sep
|
|
*** Failers
|
|
No match
|
|
From abcd Sep 01 12:33:02 1997
|
|
No match
|
|
|
|
/^(a)\1{2,3}(.)/
|
|
aaab
|
|
0: aaab
|
|
1: a
|
|
2: b
|
|
aaaab
|
|
0: aaaab
|
|
1: a
|
|
2: b
|
|
aaaaab
|
|
0: aaaaa
|
|
1: a
|
|
2: a
|
|
aaaaaab
|
|
0: aaaaa
|
|
1: a
|
|
2: a
|
|
|
|
/^[ab]{1,3}(ab*|b)/
|
|
aabbbbb
|
|
0: aabbbbb
|
|
1: abbbbb
|
|
|
|
/^(cow|)\1(bell)/
|
|
cowcowbell
|
|
0: cowcowbell
|
|
1: cow
|
|
2: bell
|
|
bell
|
|
0: bell
|
|
1:
|
|
2: bell
|
|
*** Failers
|
|
No match
|
|
cowbell
|
|
No match
|
|
|
|
/^(a|)\1+b/
|
|
aab
|
|
0: aab
|
|
1: a
|
|
aaaab
|
|
0: aaaab
|
|
1: a
|
|
b
|
|
0: b
|
|
1:
|
|
*** Failers
|
|
No match
|
|
ab
|
|
No match
|
|
|
|
/^(a|)\1{2}b/
|
|
aaab
|
|
0: aaab
|
|
1: a
|
|
b
|
|
0: b
|
|
1:
|
|
*** Failers
|
|
No match
|
|
ab
|
|
No match
|
|
aab
|
|
No match
|
|
aaaab
|
|
No match
|
|
|
|
/^(a|)\1{2,3}b/
|
|
aaab
|
|
0: aaab
|
|
1: a
|
|
aaaab
|
|
0: aaaab
|
|
1: a
|
|
b
|
|
0: b
|
|
1:
|
|
*** Failers
|
|
No match
|
|
ab
|
|
No match
|
|
aab
|
|
No match
|
|
aaaaab
|
|
No match
|
|
|
|
/ab{1,3}bc/
|
|
abbbbc
|
|
0: abbbbc
|
|
abbbc
|
|
0: abbbc
|
|
abbc
|
|
0: abbc
|
|
*** Failers
|
|
No match
|
|
abc
|
|
No match
|
|
abbbbbc
|
|
No match
|
|
|
|
/([^.]*)\.([^:]*):[T ]+(.*)/
|
|
track1.title:TBlah blah blah
|
|
0: track1.title:TBlah blah blah
|
|
1: track1
|
|
2: title
|
|
3: Blah blah blah
|
|
|
|
/([^.]*)\.([^:]*):[T ]+(.*)/i
|
|
track1.title:TBlah blah blah
|
|
0: track1.title:TBlah blah blah
|
|
1: track1
|
|
2: title
|
|
3: Blah blah blah
|
|
|
|
/([^.]*)\.([^:]*):[t ]+(.*)/i
|
|
track1.title:TBlah blah blah
|
|
0: track1.title:TBlah blah blah
|
|
1: track1
|
|
2: title
|
|
3: Blah blah blah
|
|
|
|
/^abc$/
|
|
abc
|
|
0: abc
|
|
*** Failers
|
|
No match
|
|
|
|
/[-az]+/
|
|
az-
|
|
0: az-
|
|
*** Failers
|
|
0: a
|
|
b
|
|
No match
|
|
|
|
/[az-]+/
|
|
za-
|
|
0: za-
|
|
*** Failers
|
|
0: a
|
|
b
|
|
No match
|
|
|
|
/[a-z]+/
|
|
abcdxyz
|
|
0: abcdxyz
|
|
|
|
/[0-9-]+/
|
|
12-34
|
|
0: 12-34
|
|
*** Failers
|
|
No match
|
|
aaa
|
|
No match
|
|
|
|
/(abc)\1/i
|
|
abcabc
|
|
0: abcabc
|
|
1: abc
|
|
ABCabc
|
|
0: ABCabc
|
|
1: ABC
|
|
abcABC
|
|
0: abcABC
|
|
1: abc
|
|
|
|
/a{0}bc/
|
|
bc
|
|
0: bc
|
|
|
|
/^([^a])([^b])([^c]*)([^d]{3,4})/
|
|
baNOTccccd
|
|
0: baNOTcccc
|
|
1: b
|
|
2: a
|
|
3: NOT
|
|
4: cccc
|
|
baNOTcccd
|
|
0: baNOTccc
|
|
1: b
|
|
2: a
|
|
3: NOT
|
|
4: ccc
|
|
baNOTccd
|
|
0: baNOTcc
|
|
1: b
|
|
2: a
|
|
3: NO
|
|
4: Tcc
|
|
bacccd
|
|
0: baccc
|
|
1: b
|
|
2: a
|
|
3:
|
|
4: ccc
|
|
*** Failers
|
|
0: *** Failers
|
|
1: *
|
|
2: *
|
|
3: * Fail
|
|
4: ers
|
|
anything
|
|
No match
|
|
baccd
|
|
No match
|
|
|
|
/[^a]/
|
|
Abc
|
|
0: A
|
|
|
|
/[^a]/i
|
|
Abc
|
|
0: b
|
|
|
|
/[^a]+/
|
|
AAAaAbc
|
|
0: AAA
|
|
|
|
/[^a]+/i
|
|
AAAaAbc
|
|
0: bc
|
|
|
|
/[^k]$/
|
|
abc
|
|
0: c
|
|
*** Failers
|
|
0: s
|
|
abk
|
|
No match
|
|
|
|
/[^k]{2,3}$/
|
|
abc
|
|
0: abc
|
|
kbc
|
|
0: bc
|
|
kabc
|
|
0: abc
|
|
*** Failers
|
|
0: ers
|
|
abk
|
|
No match
|
|
akb
|
|
No match
|
|
akk
|
|
No match
|
|
|
|
/^[0-9]{8,}@.+[^k]$/
|
|
12345678@a.b.c.d
|
|
0: 12345678@a.b.c.d
|
|
123456789@x.y.z
|
|
0: 123456789@x.y.z
|
|
*** Failers
|
|
No match
|
|
12345678@x.y.uk
|
|
No match
|
|
1234567@a.b.c.d
|
|
No match
|
|
|
|
/(a)\1{8,}/
|
|
aaaaaaaaa
|
|
0: aaaaaaaaa
|
|
1: a
|
|
aaaaaaaaaa
|
|
0: aaaaaaaaaa
|
|
1: a
|
|
*** Failers
|
|
No match
|
|
aaaaaaa
|
|
No match
|
|
|
|
/[^a]/
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: A
|
|
|
|
/[^a]/i
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: b
|
|
|
|
/[^az]/
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: A
|
|
|
|
/[^az]/i
|
|
aaaabcd
|
|
0: b
|
|
aaAabcd
|
|
0: b
|
|
|
|
/P[^*]TAIRE[^*]{1,6}LL/
|
|
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
|
|
0: PSTAIREISLL
|
|
|
|
/P[^*]TAIRE[^*]{1,}LL/
|
|
xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
|
|
0: PSTAIREISLL
|
|
|
|
/(\.[0-9][0-9][1-9]?)[0-9]+/
|
|
1.230003938
|
|
0: .230003938
|
|
1: .23
|
|
1.875000282
|
|
0: .875000282
|
|
1: .875
|
|
1.235
|
|
0: .235
|
|
1: .23
|
|
|
|
/\b(foo)\s+(\w+)/i
|
|
Food is on the foo table
|
|
0: foo table
|
|
1: foo
|
|
2: table
|
|
|
|
/foo(.*)bar/
|
|
The food is under the bar in the barn.
|
|
0: food is under the bar in the bar
|
|
1: d is under the bar in the
|
|
|
|
/(.*)([0-9]*)/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers: 53147
|
|
2:
|
|
|
|
/(.*)([0-9]+)/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers: 5314
|
|
2: 7
|
|
|
|
/(.*)([0-9]+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers: 5314
|
|
2: 7
|
|
|
|
/(.*)\b([0-9]+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers:
|
|
2: 53147
|
|
|
|
/(.*[^0-9])([0-9]+)$/
|
|
I have 2 numbers: 53147
|
|
0: I have 2 numbers: 53147
|
|
1: I have 2 numbers:
|
|
2: 53147
|
|
|
|
/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]]\/[[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
|
|
01/01/2000
|
|
0: 01/01/2000
|
|
|
|
/^(a){0,0}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0:
|
|
aab
|
|
0:
|
|
|
|
/^(a){0,1}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: a
|
|
1: a
|
|
|
|
/^(a){0,2}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
|
|
/^(a){0,3}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
aaa
|
|
0: aaa
|
|
1: a
|
|
|
|
/^(a){0,}/
|
|
bcd
|
|
0:
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
aaa
|
|
0: aaa
|
|
1: a
|
|
aaaaaaaa
|
|
0: aaaaaaaa
|
|
1: a
|
|
|
|
/^(a){1,1}/
|
|
bcd
|
|
No match
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: a
|
|
1: a
|
|
|
|
/^(a){1,2}/
|
|
bcd
|
|
No match
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
|
|
/^(a){1,3}/
|
|
bcd
|
|
No match
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
aaa
|
|
0: aaa
|
|
1: a
|
|
|
|
/^(a){1,}/
|
|
bcd
|
|
No match
|
|
abc
|
|
0: a
|
|
1: a
|
|
aab
|
|
0: aa
|
|
1: a
|
|
aaa
|
|
0: aaa
|
|
1: a
|
|
aaaaaaaa
|
|
0: aaaaaaaa
|
|
1: a
|
|
|
|
/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
|
|
123456654321
|
|
0: 123456654321
|
|
|
|
/^[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]/
|
|
123456654321
|
|
0: 123456654321
|
|
|
|
/^[abc]{12}/
|
|
abcabcabcabc
|
|
0: abcabcabcabc
|
|
|
|
/^[a-c]{12}/
|
|
abcabcabcabc
|
|
0: abcabcabcabc
|
|
|
|
/^(a|b|c){12}/
|
|
abcabcabcabc
|
|
0: abcabcabcabc
|
|
1: c
|
|
|
|
/^[abcdefghijklmnopqrstuvwxy0123456789]/
|
|
n
|
|
0: n
|
|
*** Failers
|
|
No match
|
|
z
|
|
No match
|
|
|
|
/abcde{0,0}/
|
|
abcd
|
|
0: abcd
|
|
*** Failers
|
|
No match
|
|
abce
|
|
No match
|
|
|
|
/ab[cd]{0,0}e/
|
|
abe
|
|
0: abe
|
|
*** Failers
|
|
No match
|
|
abcde
|
|
No match
|
|
|
|
/ab(c){0,0}d/
|
|
abd
|
|
0: abd
|
|
*** Failers
|
|
No match
|
|
abcd
|
|
No match
|
|
|
|
/a(b*)/
|
|
a
|
|
0: a
|
|
1:
|
|
ab
|
|
0: ab
|
|
1: b
|
|
abbbb
|
|
0: abbbb
|
|
1: bbbb
|
|
*** Failers
|
|
0: a
|
|
1:
|
|
bbbbb
|
|
No match
|
|
|
|
/ab[0-9]{0}e/
|
|
abe
|
|
0: abe
|
|
*** Failers
|
|
No match
|
|
ab1e
|
|
No match
|
|
|
|
/(A|B)*CD/
|
|
CD
|
|
0: CD
|
|
|
|
/(AB)*\1/
|
|
ABABAB
|
|
0: ABABAB
|
|
1: AB
|
|
|
|
/([0-9]+)(\w)/
|
|
12345a
|
|
0: 12345a
|
|
1: 12345
|
|
2: a
|
|
12345+
|
|
0: 12345
|
|
1: 1234
|
|
2: 5
|
|
|
|
/(abc|)+/
|
|
abc
|
|
0: abc
|
|
1: abc
|
|
abcabc
|
|
0: abcabc
|
|
1: abc
|
|
abcabcabc
|
|
0: abcabcabc
|
|
1: abc
|
|
xyz
|
|
0:
|
|
1:
|
|
|
|
/([a]*)*/
|
|
a
|
|
0: a
|
|
1: a
|
|
aaaaa
|
|
0: aaaaa
|
|
1: aaaaa
|
|
|
|
/([ab]*)*/
|
|
a
|
|
0: a
|
|
1: a
|
|
b
|
|
0: b
|
|
1: b
|
|
ababab
|
|
0: ababab
|
|
1: ababab
|
|
aaaabcde
|
|
0: aaaab
|
|
1: aaaab
|
|
bbbb
|
|
0: bbbb
|
|
1: bbbb
|
|
|
|
/([^a]*)*/
|
|
b
|
|
0: b
|
|
1: b
|
|
bbbb
|
|
0: bbbb
|
|
1: bbbb
|
|
aaa
|
|
0:
|
|
|
|
/([^ab]*)*/
|
|
cccc
|
|
0: cccc
|
|
1: cccc
|
|
abab
|
|
0:
|
|
|
|
/abc/
|
|
abc
|
|
0: abc
|
|
xabcy
|
|
0: abc
|
|
ababc
|
|
0: abc
|
|
*** Failers
|
|
No match
|
|
xbc
|
|
No match
|
|
axc
|
|
No match
|
|
abx
|
|
No match
|
|
|
|
/ab*c/
|
|
abc
|
|
0: abc
|
|
|
|
/ab*bc/
|
|
abc
|
|
0: abc
|
|
abbc
|
|
0: abbc
|
|
abbbbc
|
|
0: abbbbc
|
|
|
|
/.{1}/
|
|
abbbbc
|
|
0: a
|
|
|
|
/.{3,4}/
|
|
abbbbc
|
|
0: abbb
|
|
|
|
/ab{0,}bc/
|
|
abbbbc
|
|
0: abbbbc
|
|
|
|
/ab+bc/
|
|
abbc
|
|
0: abbc
|
|
*** Failers
|
|
No match
|
|
abc
|
|
No match
|
|
abq
|
|
No match
|
|
|
|
/ab+bc/
|
|
abbbbc
|
|
0: abbbbc
|
|
|
|
/ab{1,}bc/
|
|
abbbbc
|
|
0: abbbbc
|
|
|
|
/ab{1,3}bc/
|
|
abbbbc
|
|
0: abbbbc
|
|
|
|
/ab{3,4}bc/
|
|
abbbbc
|
|
0: abbbbc
|
|
|
|
/ab{4,5}bc/
|
|
*** Failers
|
|
No match
|
|
abq
|
|
No match
|
|
abbbbc
|
|
No match
|
|
|
|
/ab?bc/
|
|
abbc
|
|
0: abbc
|
|
abc
|
|
0: abc
|
|
|
|
/ab{0,1}bc/
|
|
abc
|
|
0: abc
|
|
|
|
/ab?c/
|
|
abc
|
|
0: abc
|
|
|
|
/ab{0,1}c/
|
|
abc
|
|
0: abc
|
|
|
|
/^abc$/
|
|
abc
|
|
0: abc
|
|
*** Failers
|
|
No match
|
|
abbbbc
|
|
No match
|
|
abcc
|
|
No match
|
|
|
|
/^abc/
|
|
abcc
|
|
0: abc
|
|
|
|
/abc$/
|
|
aabc
|
|
0: abc
|
|
*** Failers
|
|
No match
|
|
aabc
|
|
0: abc
|
|
aabcd
|
|
No match
|
|
|
|
/^/
|
|
abc
|
|
0:
|
|
|
|
/$/
|
|
abc
|
|
0:
|
|
|
|
/a.c/
|
|
abc
|
|
0: abc
|
|
axc
|
|
0: axc
|
|
|
|
/a.*c/
|
|
axyzc
|
|
0: axyzc
|
|
|
|
/a[bc]d/
|
|
abd
|
|
0: abd
|
|
*** Failers
|
|
No match
|
|
axyzd
|
|
No match
|
|
abc
|
|
No match
|
|
|
|
/a[b-d]e/
|
|
ace
|
|
0: ace
|
|
|
|
/a[b-d]/
|
|
aac
|
|
0: ac
|
|
|
|
/a[-b]/
|
|
a-
|
|
0: a-
|
|
|
|
/a[b-]/
|
|
a-
|
|
0: a-
|
|
|
|
/a[]]b/
|
|
a]b
|
|
0: a]b
|
|
|
|
/a[^bc]d/
|
|
aed
|
|
0: aed
|
|
*** Failers
|
|
No match
|
|
abd
|
|
No match
|
|
abd
|
|
No match
|
|
|
|
/a[^-b]c/
|
|
adc
|
|
0: adc
|
|
|
|
/a[^]b]c/
|
|
adc
|
|
0: adc
|
|
*** Failers
|
|
No match
|
|
a-c
|
|
0: a-c
|
|
a]c
|
|
No match
|
|
|
|
/\ba\b/
|
|
a-
|
|
0: a
|
|
-a
|
|
0: a
|
|
-a-
|
|
0: a
|
|
|
|
/\by\b/
|
|
*** Failers
|
|
No match
|
|
xy
|
|
No match
|
|
yz
|
|
No match
|
|
xyz
|
|
No match
|
|
|
|
/\Ba\B/
|
|
*** Failers
|
|
0: a
|
|
a-
|
|
No match
|
|
-a
|
|
No match
|
|
-a-
|
|
No match
|
|
|
|
/\By\b/
|
|
xy
|
|
0: y
|
|
|
|
/\by\B/
|
|
yz
|
|
0: y
|
|
|
|
/\By\B/
|
|
xyz
|
|
0: y
|
|
|
|
/\w/
|
|
a
|
|
0: a
|
|
|
|
/\W/
|
|
-
|
|
0: -
|
|
*** Failers
|
|
0: *
|
|
-
|
|
0: -
|
|
a
|
|
No match
|
|
|
|
/a\sb/
|
|
a b
|
|
0: a b
|
|
|
|
/a\Sb/
|
|
a-b
|
|
0: a-b
|
|
*** Failers
|
|
No match
|
|
a-b
|
|
0: a-b
|
|
a b
|
|
No match
|
|
|
|
/[0-9]/
|
|
1
|
|
0: 1
|
|
|
|
/[^0-9]/
|
|
-
|
|
0: -
|
|
*** Failers
|
|
0: *
|
|
-
|
|
0: -
|
|
1
|
|
No match
|
|
|
|
/ab|cd/
|
|
abc
|
|
0: ab
|
|
abcd
|
|
0: ab
|
|
|
|
/()ef/
|
|
def
|
|
0: ef
|
|
1:
|
|
|
|
/a\(b/
|
|
a(b
|
|
0: a(b
|
|
|
|
/a\(*b/
|
|
ab
|
|
0: ab
|
|
a((b
|
|
0: a((b
|
|
|
|
/((a))/
|
|
abc
|
|
0: a
|
|
1: a
|
|
2: a
|
|
|
|
/(a)b(c)/
|
|
abc
|
|
0: abc
|
|
1: a
|
|
2: c
|
|
|
|
/a+b+c/
|
|
aabbabc
|
|
0: abc
|
|
|
|
/a{1,}b{1,}c/
|
|
aabbabc
|
|
0: abc
|
|
|
|
/(a+|b)*/
|
|
ab
|
|
0: ab
|
|
1: b
|
|
|
|
/(a+|b){0,}/
|
|
ab
|
|
0: ab
|
|
1: b
|
|
|
|
/(a+|b)+/
|
|
ab
|
|
0: ab
|
|
1: b
|
|
|
|
/(a+|b){1,}/
|
|
ab
|
|
0: ab
|
|
1: b
|
|
|
|
/(a+|b)?/
|
|
ab
|
|
0: a
|
|
1: a
|
|
|
|
/(a+|b){0,1}/
|
|
ab
|
|
0: a
|
|
1: a
|
|
|
|
/[^ab]*/
|
|
cde
|
|
0: cde
|
|
|
|
/abc/
|
|
*** Failers
|
|
No match
|
|
b
|
|
No match
|
|
|
|
|
|
/a*/
|
|
|
|
|
|
/([abc])*d/
|
|
abbbcd
|
|
0: abbbcd
|
|
1: c
|
|
|
|
/([abc])*bcd/
|
|
abcd
|
|
0: abcd
|
|
1: a
|
|
|
|
/a|b|c|d|e/
|
|
e
|
|
0: e
|
|
|
|
/(a|b|c|d|e)f/
|
|
ef
|
|
0: ef
|
|
1: e
|
|
|
|
/abcd*efg/
|
|
abcdefg
|
|
0: abcdefg
|
|
|
|
/ab*/
|
|
xabyabbbz
|
|
0: ab
|
|
xayabbbz
|
|
0: a
|
|
|
|
/(ab|cd)e/
|
|
abcde
|
|
0: cde
|
|
1: cd
|
|
|
|
/[abhgefdc]ij/
|
|
hij
|
|
0: hij
|
|
|
|
/(abc|)ef/
|
|
abcdef
|
|
0: ef
|
|
1:
|
|
|
|
/(a|b)c*d/
|
|
abcd
|
|
0: bcd
|
|
1: b
|
|
|
|
/(ab|ab*)bc/
|
|
abc
|
|
0: abc
|
|
1: a
|
|
|
|
/a([bc]*)c*/
|
|
abc
|
|
0: abc
|
|
1: bc
|
|
|
|
/a([bc]*)(c*d)/
|
|
abcd
|
|
0: abcd
|
|
1: bc
|
|
2: d
|
|
|
|
/a([bc]+)(c*d)/
|
|
abcd
|
|
0: abcd
|
|
1: bc
|
|
2: d
|
|
|
|
/a([bc]*)(c+d)/
|
|
abcd
|
|
0: abcd
|
|
1: b
|
|
2: cd
|
|
|
|
/a[bcd]*dcdcde/
|
|
adcdcde
|
|
0: adcdcde
|
|
|
|
/a[bcd]+dcdcde/
|
|
*** Failers
|
|
No match
|
|
abcde
|
|
No match
|
|
adcdcde
|
|
No match
|
|
|
|
/(ab|a)b*c/
|
|
abc
|
|
0: abc
|
|
1: ab
|
|
|
|
/((a)(b)c)(d)/
|
|
abcd
|
|
0: abcd
|
|
1: abc
|
|
2: a
|
|
3: b
|
|
4: d
|
|
|
|
/[a-zA-Z_][a-zA-Z0-9_]*/
|
|
alpha
|
|
0: alpha
|
|
|
|
/^a(bc+|b[eh])g|.h$/
|
|
abh
|
|
0: bh
|
|
|
|
/(bc+d$|ef*g.|h?i(j|k))/
|
|
effgz
|
|
0: effgz
|
|
1: effgz
|
|
ij
|
|
0: ij
|
|
1: ij
|
|
2: j
|
|
reffgz
|
|
0: effgz
|
|
1: effgz
|
|
*** Failers
|
|
No match
|
|
effg
|
|
No match
|
|
bcdd
|
|
No match
|
|
|
|
/((((((((((a))))))))))/
|
|
a
|
|
0: a
|
|
1: a
|
|
2: a
|
|
3: a
|
|
4: a
|
|
5: a
|
|
6: a
|
|
7: a
|
|
8: a
|
|
9: a
|
|
10: a
|
|
|
|
/((((((((((a))))))))))\9/
|
|
aa
|
|
0: aa
|
|
1: a
|
|
2: a
|
|
3: a
|
|
4: a
|
|
5: a
|
|
6: a
|
|
7: a
|
|
8: a
|
|
9: a
|
|
10: a
|
|
|
|
/(((((((((a)))))))))/
|
|
a
|
|
0: a
|
|
1: a
|
|
2: a
|
|
3: a
|
|
4: a
|
|
5: a
|
|
6: a
|
|
7: a
|
|
8: a
|
|
9: a
|
|
|
|
/multiple words of text/
|
|
*** Failers
|
|
No match
|
|
aa
|
|
No match
|
|
uh-uh
|
|
No match
|
|
|
|
/multiple words/
|
|
multiple words, yeah
|
|
0: multiple words
|
|
|
|
/(.*)c(.*)/
|
|
abcde
|
|
0: abcde
|
|
1: ab
|
|
2: de
|
|
|
|
/\((.*), (.*)\)/
|
|
(a, b)
|
|
0: (a, b)
|
|
1: a
|
|
2: b
|
|
|
|
/abcd/
|
|
abcd
|
|
0: abcd
|
|
|
|
/a(bc)d/
|
|
abcd
|
|
0: abcd
|
|
1: bc
|
|
|
|
/a[-]?c/
|
|
ac
|
|
0: ac
|
|
|
|
/(abc)\1/
|
|
abcabc
|
|
0: abcabc
|
|
1: abc
|
|
|
|
/([a-c]*)\1/
|
|
abcabc
|
|
0: abcabc
|
|
1: abc
|
|
|
|
/abc/i
|
|
ABC
|
|
0: ABC
|
|
XABCY
|
|
0: ABC
|
|
ABABC
|
|
0: ABC
|
|
*** Failers
|
|
No match
|
|
aaxabxbaxbbx
|
|
No match
|
|
XBC
|
|
No match
|
|
AXC
|
|
No match
|
|
ABX
|
|
No match
|
|
|
|
/ab*c/i
|
|
ABC
|
|
0: ABC
|
|
|
|
/ab*bc/i
|
|
ABC
|
|
0: ABC
|
|
ABBC
|
|
0: ABBC
|
|
|
|
/ab+bc/i
|
|
*** Failers
|
|
No match
|
|
ABC
|
|
No match
|
|
ABQ
|
|
No match
|
|
|
|
/ab+bc/i
|
|
ABBBBC
|
|
0: ABBBBC
|
|
|
|
/^abc$/i
|
|
ABC
|
|
0: ABC
|
|
*** Failers
|
|
No match
|
|
ABBBBC
|
|
No match
|
|
ABCC
|
|
No match
|
|
|
|
/^abc/i
|
|
ABCC
|
|
0: ABC
|
|
|
|
/abc$/i
|
|
AABC
|
|
0: ABC
|
|
|
|
/^/i
|
|
ABC
|
|
0:
|
|
|
|
/$/i
|
|
ABC
|
|
0:
|
|
|
|
/a.c/i
|
|
ABC
|
|
0: ABC
|
|
AXC
|
|
0: AXC
|
|
|
|
/a.*c/i
|
|
*** Failers
|
|
No match
|
|
AABC
|
|
0: AABC
|
|
AXYZD
|
|
No match
|
|
|
|
/a[bc]d/i
|
|
ABD
|
|
0: ABD
|
|
|
|
/a[b-d]e/i
|
|
ACE
|
|
0: ACE
|
|
*** Failers
|
|
No match
|
|
ABC
|
|
No match
|
|
ABD
|
|
No match
|
|
|
|
/a[b-d]/i
|
|
AAC
|
|
0: AC
|
|
|
|
/a[-b]/i
|
|
A-
|
|
0: A-
|
|
|
|
/a[b-]/i
|
|
A-
|
|
0: A-
|
|
|
|
/a[]]b/i
|
|
A]B
|
|
0: A]B
|
|
|
|
/a[^bc]d/i
|
|
AED
|
|
0: AED
|
|
|
|
/a[^-b]c/i
|
|
ADC
|
|
0: ADC
|
|
*** Failers
|
|
No match
|
|
ABD
|
|
No match
|
|
A-C
|
|
No match
|
|
|
|
/a[^]b]c/i
|
|
ADC
|
|
0: ADC
|
|
|
|
/ab|cd/i
|
|
ABC
|
|
0: AB
|
|
ABCD
|
|
0: AB
|
|
|
|
/()ef/i
|
|
DEF
|
|
0: EF
|
|
1:
|
|
|
|
/$b/i
|
|
*** Failers
|
|
No match
|
|
A]C
|
|
No match
|
|
B
|
|
No match
|
|
|
|
/a\(b/i
|
|
A(B
|
|
0: A(B
|
|
|
|
/a\(*b/i
|
|
AB
|
|
0: AB
|
|
A((B
|
|
0: A((B
|
|
|
|
/((a))/i
|
|
ABC
|
|
0: A
|
|
1: A
|
|
2: A
|
|
|
|
/(a)b(c)/i
|
|
ABC
|
|
0: ABC
|
|
1: A
|
|
2: C
|
|
|
|
/a+b+c/i
|
|
AABBABC
|
|
0: ABC
|
|
|
|
/a{1,}b{1,}c/i
|
|
AABBABC
|
|
0: ABC
|
|
|
|
/(a+|b)*/i
|
|
AB
|
|
0: AB
|
|
1: B
|
|
|
|
/(a+|b){0,}/i
|
|
AB
|
|
0: AB
|
|
1: B
|
|
|
|
/(a+|b)+/i
|
|
AB
|
|
0: AB
|
|
1: B
|
|
|
|
/(a+|b){1,}/i
|
|
AB
|
|
0: AB
|
|
1: B
|
|
|
|
/(a+|b)?/i
|
|
AB
|
|
0: A
|
|
1: A
|
|
|
|
/(a+|b){0,1}/i
|
|
AB
|
|
0: A
|
|
1: A
|
|
|
|
/[^ab]*/i
|
|
CDE
|
|
0: CDE
|
|
|
|
/([abc])*d/i
|
|
ABBBCD
|
|
0: ABBBCD
|
|
1: C
|
|
|
|
/([abc])*bcd/i
|
|
ABCD
|
|
0: ABCD
|
|
1: A
|
|
|
|
/a|b|c|d|e/i
|
|
E
|
|
0: E
|
|
|
|
/(a|b|c|d|e)f/i
|
|
EF
|
|
0: EF
|
|
1: E
|
|
|
|
/abcd*efg/i
|
|
ABCDEFG
|
|
0: ABCDEFG
|
|
|
|
/ab*/i
|
|
XABYABBBZ
|
|
0: AB
|
|
XAYABBBZ
|
|
0: A
|
|
|
|
/(ab|cd)e/i
|
|
ABCDE
|
|
0: CDE
|
|
1: CD
|
|
|
|
/[abhgefdc]ij/i
|
|
HIJ
|
|
0: HIJ
|
|
|
|
/^(ab|cd)e/i
|
|
ABCDE
|
|
No match
|
|
|
|
/(abc|)ef/i
|
|
ABCDEF
|
|
0: EF
|
|
1:
|
|
|
|
/(a|b)c*d/i
|
|
ABCD
|
|
0: BCD
|
|
1: B
|
|
|
|
/(ab|ab*)bc/i
|
|
ABC
|
|
0: ABC
|
|
1: A
|
|
|
|
/a([bc]*)c*/i
|
|
ABC
|
|
0: ABC
|
|
1: BC
|
|
|
|
/a([bc]*)(c*d)/i
|
|
ABCD
|
|
0: ABCD
|
|
1: BC
|
|
2: D
|
|
|
|
/a([bc]+)(c*d)/i
|
|
ABCD
|
|
0: ABCD
|
|
1: BC
|
|
2: D
|
|
|
|
/a([bc]*)(c+d)/i
|
|
ABCD
|
|
0: ABCD
|
|
1: B
|
|
2: CD
|
|
|
|
/a[bcd]*dcdcde/i
|
|
ADCDCDE
|
|
0: ADCDCDE
|
|
|
|
/a[bcd]+dcdcde/i
|
|
|
|
/(ab|a)b*c/i
|
|
ABC
|
|
0: ABC
|
|
1: AB
|
|
|
|
/((a)(b)c)(d)/i
|
|
ABCD
|
|
0: ABCD
|
|
1: ABC
|
|
2: A
|
|
3: B
|
|
4: D
|
|
|
|
/[a-zA-Z_][a-zA-Z0-9_]*/i
|
|
ALPHA
|
|
0: ALPHA
|
|
|
|
/^a(bc+|b[eh])g|.h$/i
|
|
ABH
|
|
0: BH
|
|
|
|
/(bc+d$|ef*g.|h?i(j|k))/i
|
|
EFFGZ
|
|
0: EFFGZ
|
|
1: EFFGZ
|
|
IJ
|
|
0: IJ
|
|
1: IJ
|
|
2: J
|
|
REFFGZ
|
|
0: EFFGZ
|
|
1: EFFGZ
|
|
*** Failers
|
|
No match
|
|
ADCDCDE
|
|
No match
|
|
EFFG
|
|
No match
|
|
BCDD
|
|
No match
|
|
|
|
/((((((((((a))))))))))/i
|
|
A
|
|
0: A
|
|
1: A
|
|
2: A
|
|
3: A
|
|
4: A
|
|
5: A
|
|
6: A
|
|
7: A
|
|
8: A
|
|
9: A
|
|
10: A
|
|
|
|
/((((((((((a))))))))))\9/i
|
|
AA
|
|
0: AA
|
|
1: A
|
|
2: A
|
|
3: A
|
|
4: A
|
|
5: A
|
|
6: A
|
|
7: A
|
|
8: A
|
|
9: A
|
|
10: A
|
|
|
|
/(((((((((a)))))))))/i
|
|
A
|
|
0: A
|
|
1: A
|
|
2: A
|
|
3: A
|
|
4: A
|
|
5: A
|
|
6: A
|
|
7: A
|
|
8: A
|
|
9: A
|
|
|
|
/multiple words of text/i
|
|
*** Failers
|
|
No match
|
|
AA
|
|
No match
|
|
UH-UH
|
|
No match
|
|
|
|
/multiple words/i
|
|
MULTIPLE WORDS, YEAH
|
|
0: MULTIPLE WORDS
|
|
|
|
/(.*)c(.*)/i
|
|
ABCDE
|
|
0: ABCDE
|
|
1: AB
|
|
2: DE
|
|
|
|
/\((.*), (.*)\)/i
|
|
(A, B)
|
|
0: (A, B)
|
|
1: A
|
|
2: B
|
|
|
|
/abcd/i
|
|
ABCD
|
|
0: ABCD
|
|
|
|
/a(bc)d/i
|
|
ABCD
|
|
0: ABCD
|
|
1: BC
|
|
|
|
/a[-]?c/i
|
|
AC
|
|
0: AC
|
|
|
|
/(abc)\1/i
|
|
ABCABC
|
|
0: ABCABC
|
|
1: ABC
|
|
|
|
/([a-c]*)\1/i
|
|
ABCABC
|
|
0: ABCABC
|
|
1: ABC
|
|
|
|
/((foo)|(bar))*/
|
|
foobar
|
|
0: foobar
|
|
1: bar
|
|
2: foo
|
|
3: bar
|
|
|
|
/^(.+)?B/
|
|
AB
|
|
0: AB
|
|
1: A
|
|
|
|
/^([^a-z])|(\^)$/
|
|
.
|
|
0: .
|
|
1: .
|
|
|
|
/^[<>]&/
|
|
<&OUT
|
|
0: <&
|
|
|
|
/^(){3,5}/
|
|
abc
|
|
0:
|
|
1:
|
|
|
|
/^(a+)*ax/
|
|
aax
|
|
0: aax
|
|
1: a
|
|
|
|
/^((a|b)+)*ax/
|
|
aax
|
|
0: aax
|
|
1: a
|
|
2: a
|
|
|
|
/^((a|bc)+)*ax/
|
|
aax
|
|
0: aax
|
|
1: a
|
|
2: a
|
|
|
|
/(a|x)*ab/
|
|
cab
|
|
0: ab
|
|
|
|
/(a)*ab/
|
|
cab
|
|
0: ab
|
|
|
|
/(ab)[0-9]\1/i
|
|
Ab4ab
|
|
0: Ab4ab
|
|
1: Ab
|
|
ab4Ab
|
|
0: ab4Ab
|
|
1: ab
|
|
|
|
/foo\w*[0-9]{4}baz/
|
|
foobar1234baz
|
|
0: foobar1234baz
|
|
|
|
/(\w+:)+/
|
|
one:
|
|
0: one:
|
|
1: one:
|
|
|
|
/((\w|:)+::)?(\w+)$/
|
|
abcd
|
|
0: abcd
|
|
1: <unset>
|
|
2: <unset>
|
|
3: abcd
|
|
xy:z:::abcd
|
|
0: xy:z:::abcd
|
|
1: xy:z:::
|
|
2: :
|
|
3: abcd
|
|
|
|
/^[^bcd]*(c+)/
|
|
aexycd
|
|
0: aexyc
|
|
1: c
|
|
|
|
/(a*)b+/
|
|
caab
|
|
0: aab
|
|
1: aa
|
|
|
|
/((\w|:)+::)?(\w+)$/
|
|
abcd
|
|
0: abcd
|
|
1: <unset>
|
|
2: <unset>
|
|
3: abcd
|
|
xy:z:::abcd
|
|
0: xy:z:::abcd
|
|
1: xy:z:::
|
|
2: :
|
|
3: abcd
|
|
*** Failers
|
|
0: Failers
|
|
1: <unset>
|
|
2: <unset>
|
|
3: Failers
|
|
abcd:
|
|
No match
|
|
abcd:
|
|
No match
|
|
|
|
/^[^bcd]*(c+)/
|
|
aexycd
|
|
0: aexyc
|
|
1: c
|
|
|
|
/((Z)+|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: A
|
|
2: Z
|
|
|
|
/(Z()|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: A
|
|
2:
|
|
|
|
/(Z(())|A)*/
|
|
ZABCDEFG
|
|
0: ZA
|
|
1: A
|
|
2:
|
|
3:
|
|
|
|
/(.*)[0-9]+\1/
|
|
abc123abc
|
|
0: abc123abc
|
|
1: abc
|
|
abc123bc
|
|
0: bc123bc
|
|
1: bc
|
|
|
|
/((.*))[0-9]+\1/
|
|
abc123abc
|
|
0: abc123abc
|
|
1: abc
|
|
2: abc
|
|
abc123bc
|
|
0: bc123bc
|
|
1: bc
|
|
2: bc
|
|
|
|
/^a{2,5}$/
|
|
aa
|
|
0: aa
|
|
aaa
|
|
0: aaa
|
|
aaaa
|
|
0: aaaa
|
|
aaaaa
|
|
0: aaaaa
|
|
*** Failers
|
|
No match
|
|
a
|
|
No match
|
|
b
|
|
No match
|
|
aaaaab
|
|
No match
|
|
aaaaaa
|