我需要匹配一个模式以从单词中删除's
以及结尾'
。我使用了正则表达式模式:
(\\w+)('s$|s'$|'$).
我需要第一组。然而,这种模式正在发生的是cats'
这样的词与第三种模式匹配,即'$
。因此我的group(1)
仍有cats
。我尝试使用模式:
(\\w+)('s$|s'$|([^s] & '$).
但是,这里发生的事情是abc'
一个字组1只有ab
而第2组有c'
。有关如何处理此事的任何建议。
答案 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