我试图找出匹配仅包含字母和撇号的字符串的正则表达式。如果一个字符串包含一个撇号,我只想在它的两边都有一个字母时匹配它。
到目前为止我所拥有的是 [a-zA-Z]+('[a-zA-Z])?
我想匹配如下字符串:
a'a
aa'a
a'aaa
Run Code Online (Sandbox Code Playgroud)
但不是:
bb'
'bb
Run Code Online (Sandbox Code Playgroud)
你快到了,只是你需要+在可选组中存在的字符类之后添加。
^[a-zA-Z]+('[a-zA-Z]+)?$
Run Code Online (Sandbox Code Playgroud)
或者
如果您想处理多个撇号,请使用此选项。
^[a-zA-Z]+(?:'[a-zA-Z]+)*$
Run Code Online (Sandbox Code Playgroud)
String s = "a'a'a'a a' a'a-'bb";
String parts[] = s.split("[ -]");
for(String i:parts) {
if(!i.isEmpty())
{
System.out.println(i + " => " + i.matches("[a-zA-Z]+(?:'[a-zA-Z]+)*"));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
a'a'a'a => true
a' => false
a'a => true
'bb => false
Run Code Online (Sandbox Code Playgroud)