Java Regex:结尾于' s'除了具体的话

时间:2017-08-07 17:36:38

标签: java regex replaceall

我想找一个正则表达式。 我有这个:

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;

2 个答案:

答案 0 :(得分:0)

要匹配s但以anglaisfrancais结尾的任何字词,您可以使用

\b(?!(?:anglais|francais)\b)(\w*)s\b

请参阅regex demo

<强>详情

  • \b - 领先的单词边界
  • (?!(?:anglais|francais)\b) - 如果当前位置右侧有一个完整的单词anglaisfrancais,则会导致匹配失败的否定前瞻
  • (\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