簡體   English   中英

正則表達式包含點的匹配詞

[英]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().

兩者都不起作用。

您必須轉義該點並在以下位置斷言一個非單詞:

(?i)\bca\.(?=\W)

觀看現場演示

您應該這樣使用它:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM