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
(以regexString
为参数)的解决方案可能如下所示:
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