0

我需要匹配一个模式来去除单词's的结尾和结尾'。我使用了正则表达式模式:

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

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

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

但是这里发生的是单词abc'group 1 has justab和 group 2 has c'。有关如何处理此问题的任何建议。

4

2 回答 2

0

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
于 2013-09-27T21:32:59.997 回答
0

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

(\\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'.

于 2013-09-27T21:29:24.457 回答