我需要匹配一个模式来去除单词's
的结尾和结尾'
。我使用了正则表达式模式:
(\\w+)('s$|s'$|'$).
我需要第一组。然而,这种模式发生的事情是cats'
与第三个模式匹配的单词,即'$
. 因此我的group(1)
仍然有cats
。我尝试使用该模式:
(\\w+)('s$|s'$|([^s] & '$).
但是这里发生的是单词abc'
group 1 has justab
和 group 2 has c'
。有关如何处理此问题的任何建议。
我需要匹配一个模式来去除单词's
的结尾和结尾'
。我使用了正则表达式模式:
(\\w+)('s$|s'$|'$).
我需要第一组。然而,这种模式发生的事情是cats'
与第三个模式匹配的单词,即'$
. 因此我的group(1)
仍然有cats
。我尝试使用该模式:
(\\w+)('s$|s'$|([^s] & '$).
但是这里发生的是单词abc'
group 1 has justab
和 group 2 has c'
。有关如何处理此问题的任何建议。
Not sure what the input/output are supposed to be exactly (see Rohit's comment), but a solution involving String.replaceAll
(takes regex String
as argument) could go like:
String input = "cats cat's cats' dawgs";
System.out.println(input.replaceAll("'s?\\W", " "));
Output:
cats cat cats dawgs
你可以使用这样的正则表达式吗?
(\\w+)s?'(?:s\\b)?
并替换为第一个捕获组,或使用后视:
(?<=\\w)s?'(?:s\\b)?
我使用了一个单词边界来表示没有更多的字母s
,我认为这就是你试图用$
and 空间做的事情。
cats cat's cats'
变得:
cat cat cat
编辑:因为你想保持cat'
为cat'
:
(?<=\\w)(?:s'|'s\\b)
cats cat's cats' cat'
变成cat cat cat cat'
.