#1
abc
abc
YES
abc

#2
abc
xbc
NO

#3
abc
axc
NO

#4
abc
abx
NO

#5
abc
xabcy
YES
abc

#6
abc
ababc
YES
abc

#7
ab*c
abc
YES
abc

#8
ab*bc
abc
YES
abc

#9
ab*bc
abbc
YES
abbc

#10
ab*bc
abbbbc
YES
abbbbc

#11
ab+bc
abbc
YES
abbc

#12
ab+bc
abc
NO

#13
ab+bc
abq
NO

#14
ab+bc
abbbbc
YES
abbbbc

#15
ab?bc
abbc
YES
abbc

#16
ab?bc
abc
YES
abc

#17
ab?bc
abbbbc
NO

#18
ab?c
abc
YES
abc

#19
a.c
abc
YES
abc

#20
a.c
axc
YES
axc

#21
a.*c
axyzc
YES
axyzc

#22
a.*c
axyzd
NO

#23
a[bc]d
abc
NO

#24
a[bc]d
abd
YES
abd

#25
a[b-d]e
abd
NO

#26
a[b-d]e
ace
YES
ace

#27
a[b-d]
aac
YES
ac

#28
a[b-a]
ERR

#29
a[-b]
aa
YES
aa

#30
a[b-]
ac
YES
ac

#31
a[]b
ERR

#32
a[
ERR

#33
a]
ERR

#34
a[]]
ERR

#35
a[^bc]d
aed
YES
aed

#36
a[^bc]
abd
NO

#37
ab|cd
abc
YES
ab

#38
ab|cd
abcd
YES
ab

#39
ab|cd
bcda
YES
cd

#40
a[]b
ERR

#41
()ef
ef
YES
ef


#42
()*
ERR

#43
*a
ERR

#44
(*)b
ERR

#45
a\
ERR

#46
a\(b
a(b
YES
a(b

#47
a\(*b
ab
YES
ab

#48
a\(*b
a((b
YES
a((b

#49
a\\b
a\b
YES
a\b

#50
abc)
ERR

#51
(abc
ERR

#52
((a))
abc
YES
a
a
a

#53
(a)b(c)
abc
YES
abc
a
c

#54
a+b+c
aabbabc
YES
abc

#55
a**
ERR

#56
a++
ERR

#57
a*
aaaa
YES
aaaa

#58
a*
baaaa
YES


#59
(a*)*
ERR

#60
(a*)+
ERR

#61
(a|)*
ERR

#62
(ab|cd)e
abcde
YES
cde
cd

#63
[abhgefdc]ij
hij
YES
hij

#64
ab*
xabyabbbz
YES
ab

#65
ab*
xayabbbz
YES
a

#66
abcd*efg
abcdefg
YES
abcdefg

#67
(ab|ab*)bc
abc
YES
abc
a


#68
(a|b|c|d|e)f
ef
YES
ef
e

#69
a|b|c|d|e
e
YES
e

#70
(.*)c(.*)
abcde
YES
abcde
ab
de

#71
\((.*), (.*)\)
(a, b)
YES
(a, b)
a
b

#72
a(bc)d
abcd
YES
abcd
bc

#73
a*
x
YES


#74
([abc])*d
abbbcd
YES
abbbcd
c

#75
a*

YES


#76
([abc])*bcd
abcd
YES
abcd
a

#77
(a|b)c*d
abcd
YES
bcd
b

#78
a([bc]*)c*
abc
YES
abc
bc

#79
[a-zA-Z_][a-zA-Z0-9_]*
alpha
YES
alpha

#80
((a)(b)c)(d)
abcd
YES
abcd
abc
a
b
d

#81
(ab|a)b*c
abc
YES
abc
ab

#82
a[bcd]+dcdcde
adcdcde
NO

#83
((((((((((a)))))))))
ERR

#84
(((((((((a)))))))))
a
YES
a
a
a
a
a
a
a
a
a
a

#85
[k]
ab
NO

#86
abcd
abcd
YES
abcd

#87
a[-]?c
abc
YES
abc

#88
multiple words of text
uh-uh
NO

#89
multiple words
multiple words, yeah
YES
multiple words

#90
a[bcd]*dcdcde
adcdcde
YES
adcdcde

#91
a([bc]*)(c*d)
abcd
YES
abcd
bc
d

#92
a([bc]+)(c*d)
abcd
YES
abcd
bc
d

#93
a([bc]*)(c+d)
abcd
YES
abcd
b
cd

#94
abc

NO

#95
^*
ERR

#96
$*
ERR

#97
^abc$
abc
YES
abc

#98
^abc$
abcc
NO

#99
^abc
abcc
YES
abc

#100
^abc$
aabc
NO

#101
abc$
aabc
YES
abc

#102
^
abc
YES


#103
$
abc
YES

#104
$b
b
NO

#105
(a+|b)*
ab
YES
ab
b

#106
(a+|b)+
ab
YES
ab
b

#107
(a+|b)?
ab
YES
a
a

#108
(^*
ERR

#109
)(
ERR

#110
[^ab]*
cde
YES
cde

#111
^(ab|cd)e
abcde
NO

#112
^a(bc+|b[eh])g|.h$
abh
YES
bh


#113
(bc+d$|ef*g.|h?i(j|k))
effgz
YES
effgz
effgz


#114
(bc+d$|ef*g.|h?i(j|k))
ij
YES
ij
ij
j


#115
(bc+d$|ef*g.|h?i(j|k))
effg
NO

#116
(bc+d$|ef*g.|h?i(j|k))
bcdd
NO

#117
(bc+d$|ef*g.|h?i(j|k))
reffgz
YES
effgz
effgz

#118
a*b\s+c
aaaab    c
YES
aaaab    c

#119
a*b\s+c
aaaabfc
NO

#120
a*(b*c*)
aabbcc
YES
aabbcc
bbcc

#121
a?b+c*
b
YES
b

#122
\d+
99
YES
99

#123
^[:javastart:]+[:javapart:]+$
javaIdentifier0
YES
javaIdentifier0

#124
^[:javastart:]+[:javapart:]+$
?javaIdentifier
NO

#125
[a-e]?d\\e
yyzabecd\eyyz
YES
cd\e

#126
((\w+)/)*(\w+)
foo/bar/baz
YES
foo/bar/baz
bar/
bar
baz

#127
i am a green (giant|man|martian)
i am a green man
YES
i am a green man
man

#128
([a-c]+?)c
abcabcabc
YES
abc
ab

#129
([ab]*?)b
aaaaabaaaababab
YES
aaaaab
aaaaa

#130
([ab]*)b
aaaaabaaaababab
YES
aaaaabaaaababab
aaaaabaaaababa

#131
([ab]??)b
bb
YES
b

#132
(c[ab]?)b
cbb
YES
cbb
cb

#133
(c[ab]??)b
cbb
YES
cb
c

#134
(c[ab]*?)b
cbb
YES
cb
c

#135
[:digit:]+
789
YES
789

#136
[:digit:]+
abc
NO

#137
[:xdigit:]+
ffe5a
YES
ffe5a

#138
[:wacky:]+
ERR

#139
(wee|week)(knights|knight)
weeknights
YES
weeknights
wee
knights

#140
(ac*)c*d[ac]*\1
acdacaa
YES
acdac
ac

#141
(a.*b)(a.*b)
accbaccccb
YES
accbaccccb
accb
accccb

#142
(.)=\1
x=x
YES
x=x
x

#143
([ab])=\1
a=a
YES
a=a
a

#144
([ab]+)=\1
abba=abba
YES
abba=abba
abba

#145
\u004a
J
YES
J

#146
\x4a
J
YES
J

#147
\[([:javastart:][:javapart:]*)\]
foo[bar]baz
YES
[bar]
bar

#148
(\s*\w+)?
  aa
YES
  aa
  aa

#149
(?:a)
a
YES
a

#150
(?:a)
aa
YES
a

#151
(?:\w)
abc
YES
a

#152
(?:\w\s\w)+
a b c
YES
a b

#153
(a\w)(?:,(a\w))+
ab,ac,ad
YES
ab,ac,ad
ab
ad

#154
z(\w\s+(?:\w\s+\w)+)z
za   b bc   cd     dz
YES
za   b bc   cd     dz
a   b bc   cd     d

#155
(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*
http://www.test.com
YES
http://www.test.com
http://
http
.com

#156
((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*
ftp://www.test.com
YES
ftp://www.test.com
ftp://
.com

#157
(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*
htTp://www.test.com
YES
htTp://www.test.com
htTp://
htTp

#158
(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*
FTP://www.test.com
YES
FTP://www.test.com
FTP
.com

#159
^(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$
http://.www.test.com
NO

#160
^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$
FtP://www.test.com
YES
FtP://www.test.com

#161
^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$
FtTP://www.test.com
NO

#162
^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$
www.test.com
YES
www.test.com

#163
abc.*?x+yz
abcaaaaaxyzbbbbxyz
YES
abcaaaaaxyz

#164
abc.+?x+yz
abcaaaaaxyzbbbbxyz
YES
abcaaaaaxyz

#165
a.+?(c|d)
aaaacaaaaad
YES
aaaac
c

#166
a.+(c|d)
aaaacaaaaad
YES
aaaacaaaaad
d

#167
a+?b+?c+?
aaabccaaabbbccc
YES
aaabc

#168
a(.+)b(.+)c(.+)d(.+)e(.+)f(.+)g(.+)h(.+)i(.+)j(.+)k(.+)l(.+)m(.+)n(.+)o(.+)p(.+)q(.+)r
a01b02c03d04e05f06g07h08i09j10k11l12m13n14o15p16q17r
YES
a01b02c03d04e05f06g07h08i09j10k11l12m13n14o15p16q17r
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17

#169
\bfly\b
flying
NO

#170
\bfly\b
housefly
NO

#171
[^ac]+
bd
YES
bd

#172
[^ca]+
bd
YES
bd

#173
[^ac]+
acb
YES
b

#174
[a-z]{0,3}
123abcdefg123
YES

#175
ab{0,1}a
aa
YES
aa

#176
ab{0,1}a
aba
YES
aba

#177
ab{0,1}a
abba
NO

#178
ab{0,2}a
aa
YES
aa

#179
ab{0,2}a
aba
YES
aba

#180
ab{0,2}a
abba
YES
abba

#181
ab{0,2}a
abbba
NO

#182
ab{1,1}a
aa
NO

#183
ab{1,1}a
aba
YES
aba

#184
ab{1,1}a
abba
NO

#185
ab{1,2}a
aa
NO

#186
ab{1,2}a
aba
YES
aba

#187
ab{1,2}a
abba
YES
abba

#188
ab{1,2}a
abbba
NO

#189
ab{0,}a
aa
YES
aa

#190
ab{0,}a
aba
YES
aba

#191
ab{0,}a
abba
YES
abba

#192
ab{1,}a
aa
NO

#193
ab{1,}a
aba
YES
aba

#194
ab{1,}a
abba
YES
abba

#195
ab{1}a
aa
NO

#196
ab{1}a
aba
YES
aba

#197
ab{1}a
abba
NO

#198
ab{0}a
aa
YES
aa

#199
ab{0}a
aba
NO

#200
ab{2}a
aa
NO

#201
ab{2}a
aba
NO

#202
ab{2}a
abba
YES
abba

#203
ab{2}a
abbba
NO

#204
[ \-]
 -
YES
 -

#205
[a-z0-9\.\-]+
{regexp-1.2}
YES
regexp-1.2

#206
[a-z0-9\-\.]+
{regexp-1.2}
YES
regexp-1.2

#207
[a-z\-0-9\.]+
{regexp-1.2}
YES
regexp-1.2

#208
\w+
a_b
YES
a_b

#209
([0123])??((((1st)|(2nd))|(3rd))|(\dth))
1st
YES
1st

1st
1st
1st
1st

#210
[^\s\]'<>(),;:\.\[]
-
YES
-

#211
^\(?(\d{3})\)?[\- ]?(\d{3})[\- ]?(\d{4})$
(425) 576+1202
NO

#212
[^\s\(\)<>@,;:\\\"\.\[\]]
-
YES
-

#213
a{0,1}b{0,1}c{0,1}d{0,1}e{0,1}f{0,1}g{0,1}h{0,1}i{0,1}j{0,1}k{0,1}l{0,1}
acghij
YES
acghij

#214
[^02468ACEGIKMOQSUW]
012
YES
1

#215
[^02468ACEGIKMOQSUW]
UVW
YES
V
