我想找一个正则表达式。 我有这个:
String regex_words_ended_s_in_singular_form = "\\b(anglais|francais)\\b";
然后,我想删除''在所有单词的最后,除了" anglais"和" francais"。
我尝试了这个,但它当然不起作用:
String temp = tweet.replaceAll( "(?!" + regex_words_ended_s_in_singular_form + ")" + "s\\b","");
while (!temp.equals(tweet)) {
tweet = temp;
temp = tweet.replaceAll( "(?!" + regex_words_ended_s_in_singular_form + ")" + "s\\b","");
}
tweet = temp;
答案 0 :(得分:0)
要匹配s
但以anglais
和francais
结尾的任何字词,您可以使用
\b(?!(?:anglais|francais)\b)(\w*)s\b
请参阅regex demo
<强>详情
\b
- 领先的单词边界(?!(?:anglais|francais)\b)
- 如果当前位置右侧有一个完整的单词anglais
或francais
,则会导致匹配失败的否定前瞻(\w*)
- 第1组:零个或多个字词s
- s
\b
- 一个尾随字边界。在Java中:
String res = s.replaceAll("\\b(?!(?:anglais|francais)\\b)(\\w*)s\\b", "$1");
答案 1 :(得分:0)
您的评论听起来似乎只是想找到以's'结尾的单词。如果是这样,你可以使用这样的东西:
[\S]+(s\b)
regexr link