我正在尝试编写一个使用以下模式查找字符串的正则表达式:
{
开头,后跟双引号"
a-zA-Z0-9
"
后跟一个冒号:
和一个左括号[
a-zA-Z0-9
因此会匹配正则表达式的一些字符串:
{"hello":[blah
{"hello":[
{"1":[
一些不匹配的字符串:
{hello:[blah
hello":[
{"2:[
到目前为止,我能够想到的最好的是:
String regex = "{\"[a-zA-Z0-9]+\":\[[a-zA-Z0-9]*";
if(myString.matches(regex))
// do something
但我知道我离开了基地。任何正则表达式专家都可以帮助我进入吗?提前谢谢!
答案 0 :(得分:5)
String regex = "{\"[a-zA-Z0-9]+\":\[[a-zA-Z0-9]*";
这里的问题是在方括号之前需要额外的反斜杠。这是因为您需要正则表达式包含\[
才能匹配方括号,这意味着字符串文字需要包含\\[
到逃避Java代码解析器的反斜杠。类似地,您可能还需要转义正则表达式中的{
,因为它是元字符(对于有界重复计数)
String regex = "\\{\"[a-zA-Z0-9]+\":\\[[a-zA-Z0-9]*";