我正在尝试找出正则表达式来匹配仅包含字母和撇号的字符串。如果一个字符串包含一个撇号,我只想在它的两边都有一个字母的情况下匹配它。
到目前为止我得到的是 [a-zA-Z]+('[a-zA-Z])?
我想匹配如下字符串:
a'a
aa'a
a'aaa
但不是:
bb'
'bb
最佳答案
你就快完成了,只需要在可选组中的 char 类之后添加 +
。
^[a-zA-Z]+('[a-zA-Z]+)?$
或
如果您想处理多个撇号,请使用此选项。
^[a-zA-Z]+(?:'[a-zA-Z]+)*$
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]+)*"));
}
}
输出:
a'a'a'a => true
a' => false
a'a => true
'bb => false
关于java - 带撇号的单词的正则表达式 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29618493/