2017-08-07 162 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」。 –