我需要匹配一個模式以從單詞中去除's
以及結尾'
。我使用了正則表達式模式:Java正則表達式匹配帶撇號的字符串
(\\w+)('s$|s'$|'$).
我需要第一組。然而,這種模式發生的是類似cats'
這樣的詞與第三種模式匹配,即'$
。因此我的group(1)
仍然有cats
。我嘗試使用模式:
(\\w+)('s$|s'$|([^s] & '$).
但這裏發生的事情是一個詞abc'
1組剛剛ab
和羣組2 c'
。有關如何處理此問題的任何建議。
我需要匹配一個模式以從單詞中去除's
以及結尾'
。我使用了正則表達式模式:Java正則表達式匹配帶撇號的字符串
(\\w+)('s$|s'$|'$).
我需要第一組。然而,這種模式發生的是類似cats'
這樣的詞與第三種模式匹配,即'$
。因此我的group(1)
仍然有cats
。我嘗試使用模式:
(\\w+)('s$|s'$|([^s] & '$).
但這裏發生的事情是一個詞abc'
1組剛剛ab
和羣組2 c'
。有關如何處理此問題的任何建議。
你可以使用這樣的正則表達式嗎?
(\\w+)s?'(?:s\\b)?
由第一捕獲組更換,或者用一個回顧後:
(?<=\\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'
。
我也需要貓來留下貓。 –
@ that_me123更新了正則表達式。看看最後一個是否適合你。 – Jerry
不知道什麼輸入/輸出都應該是完全相同(見羅希特的評論),但涉及String.replaceAll
溶液(取正則表達式String
作爲參數)可以去,如:
String input = "cats cat's cats' dawgs";
System.out.println(input.replaceAll("'s?\\W", " "));
輸出:
cats cat cats dawgs
我還需要刪除's'。 –
@ that_me123看到我的編輯。 – Mena
這是不是很清楚你真正想要什麼。你可以發佈一些示例輸入,並輸出? –
我需要從字符串中去掉撇號和's',即's和s'。還有任何以'結尾的單詞。例如,貓被「貓和貓的不好是貓和貓」應該是貓。 –
其實對於模式(\\ w +)('s $ | s'$ |'$)有沒有什麼辦法可以給$ s'$'$賦予優先權,因爲現在貓被認爲是'$案件,而不是s'$。 –