Java正则表达式模式匹配带撇号的字符串

Java正则表达式模式匹配带撇号的字符串,java,regex,apostrophe,Java,Regex,Apostrophe,我需要匹配一个模式,从单词中去掉的以及结尾的,。我使用了正则表达式模式: (\\w+)('s$|s'$|'$). 我需要第一组。然而,这个模式所发生的是一个类似于cats'的单词与第三个模式相匹配,即'$。因此,我的组(1)仍然有猫。我试着使用这个模式: (\\w+)('s$|s'$|([^s] & '$). 但是这里发生的是一个单词abc'第一组只有ab,第二组只有c'。有没有关于如何处理这个问题的建议。你可以使用这样的正则表达式 (\\w+)s?'(?:s\\b)? 并替换为

我需要匹配一个模式,从单词中去掉
以及结尾的
。我使用了正则表达式模式:

(\\w+)('s$|s'$|'$). 
我需要第一组。然而,这个模式所发生的是一个类似于
cats'
的单词与第三个模式相匹配,即
'$
。因此,我的
组(1)
仍然有
猫。我试着使用这个模式:

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

但是这里发生的是一个单词
abc'
第一组只有
ab
,第二组只有
c'
。有没有关于如何处理这个问题的建议。

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

(\\w+)s?'(?:s\\b)?
并替换为第一个捕获组,或使用查找:

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

cat cat cat
编辑:因为您想将
cat'
保留为
cat'

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

(?不确定输入/输出应该是什么(请参见Rohit的评论),但涉及
String.replaceAll
(以regex
String
为参数)的解决方案可能如下所示:

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

cats cat cats dawgs

现在还不太清楚您到底想要什么。您能发布一些输入和输出示例吗?我需要从字符串中去掉撇号和“s”,即“s”和“s”。还有以“.”结尾的任何单词。例如cats“shud是cat,cat的shud是cat,cat”应该是cat。实际上对于模式(\\w+)('s$|s'$|'$)我有没有办法给's$s'$'赋予优先级,因为当前的“猫”被视为一个's'案例,而不是s'$。我也需要删除's'。我还需要“猫”继续作为猫。@U me123更新了正则表达式。看看最后一个是否适合你。
cats cat cats dawgs