Java Regex模式将字符串与撇号匹配

时间:2013-09-27 21:23:40

标签: java regex apostrophe

我需要匹配一个模式以从单词中删除's以及结尾'。我使用了正则表达式模式:

(\\w+)('s$|s'$|'$). 

我需要第一组。然而,这种模式正在发生的是cats'这样的词与第三种模式匹配,即'$。因此我的group(1)仍有cats。我尝试使用模式:

(\\w+)('s$|s'$|([^s] & '$).

但是,这里发生的事情是abc'一个字组1只有ab而第2组有c'。有关如何处理此事的任何建议。

2 个答案:

答案 0 :(得分:0)

你可以使用这样的正则表达式吗?

(\\w+)s?'(?:s\\b)?

并替换为第一个捕获组,或使用lookbehind:

(?<=\\w)s?'(?:s\\b)?

我使用了一个单词边界来表示在s之后没有更多的字母,我认为这是你试图用$和空格进行的。

cats cat's cats'

成为:

cat cat cat

编辑:由于您希望将cat'保留为cat'

(?<=\\w)(?:s'|'s\\b)

cats cat's cats' cat'变为cat cat cat cat'

答案 1 :(得分:0)

不确定输入/输出应该是什么(参见Rohit的评论),但涉及String.replaceAll的解决方案(以正则表达式String作为参数)可能会像:

String input = "cats cat's cats' dawgs";
System.out.println(input.replaceAll("'s?\\W", " "));

输出:

cats cat cats dawgs