java - 带撇号的单词的正则表达式 (Java)

标签 java regex

我正在尝试找出正则表达式来匹配仅包含字母和撇号的字符串。如果一个字符串包含一个撇号,我只想在它的两边都有一个字母的情况下匹配它。

到目前为止我得到的是 [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]+)*$

DEMO

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/

相关文章:

java - 如何在c或java中的单个循环中打印斐波那契数列及其反转?

java - yyyy-MM-dd'T'HH :mm:ss. SSSSSSS'Z' 格式

java - (更好的方法)使用 Eclipse 和 XText 在项目中获取文件

java - Node JS,静态函数/变量最佳实践

java - 运行java代码错误: Workspace is closed

regex - 为什么添加 Perl/x 开关会阻止我的正则表达式匹配?

regex - 如何使用 Perl 匹配 Unicode 文本中的俄语单词?

python - 在带加量词的字符范围后,负前瞻不起作用

java - 正则表达式创建代理类

c# - 删除字符串末尾的数字 C#