[英]Regex Match word that include a Dot
我有一個問題,例如,我有這個句子:
"HalloAnna daveca.nn dave anna ca. anna"
而且我只想匹配單個“站立”ca。 。
我的RegEx是這樣的:
(?i)\b(ca\.)\b
但這不起作用,我也不知道為什么。 有任何想法嗎 ?
//更新
我執行以下命令:
testSource.replaceAll()
與
pattern.matcher(testSource).replaceAll().
兩者都不起作用。
您應該這樣使用它:
Pattern.compile("(?i)\\b(ca\\.)(?=\\W)").matcher(a).replaceAll("SOME TEXT");
如果您省略了Java轉義符,則會給出正則表達式:( (?i)\\b(ca\\.)\\W
普通正則表達式中的每個\\
必須在java- \\\\
轉義。
同樣,在一個單詞之前,您具有單詞邊界( \\b
),但是它僅適用於String中您從空白更改為字母數字字符或相反的部分。 但是在您的情況下,您有一個點,該點不是字母數字字符,因此您不能在末尾使用\\b
。 您可以使用\\W
,這表示該點后面是非單詞字符。 但是要使用\\W
您需要在捕獲組中忽略它(這樣它就不會被替換)- (?=
。
另一個問題是您使用過.
,它可以匹配任何字符,但是您實際上要匹配實點,因此必須對它進行轉義- \\.
,它在java String中變成\\\\.
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.