2017-08-07 170 views
1

我正在尝试查找正则表达式。 我有这样的:Java正则表达式:以's'结尾的单词除特定单词外

String regex_words_ended_s_in_singular_form = "\\b(anglais|francais)\\b"; 

然后,我想在除了“英语”和“法兰西”的所有词的结尾删除的“。

我想这一点,但它并没有当然的工作:

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

所以你只是想找到那个在's'结尾的字正则表达式? –

+0

你能提供一个输入输出的例子吗? –

回答

0

sanglais匹配结尾的单词和francais你可以使用

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

regex demo

详情

  • \b - 领先字边界
  • (?!(?:anglais|francais)\b) - 组 - 失败,如果有一个全字anglaisfrancais立即到当前位置
  • (\w*)权的比赛负前瞻:零或更多的单词字符
  • s - an s
  • \b - 尾随字边界。

在Java:

String res = s.replaceAll("\\b(?!(?:anglais|francais)\\b)(\\w*)s\\b", "$1"); 
+0

我只想在文本的每个单词的结尾处删除's',但不是用于anglais和francais。 如果你的解决方案,我只是删除单词,不仅's':/ –

+0

@GeoffreyGuettier固定。 –

+1

好吧,它的作品谢谢:) –

0

您的评论听起来好像你只是想找个结束的 'S' 字。如果是这样,你可以使用这样的事情:

[\S]+(s\b) regexr link

+0

不,我不想要这个,我想删除一个单词末尾的's'为“anglais”和“francais”。 –