3 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果您希望正則字符中具有特殊含義的點(diǎn)或其他字符是普通字符,則必須使用反斜杠將其轉(zhuǎn)義。由于Java中的正則表達(dá)式是普通的Java字符串,因此您需要轉(zhuǎn)義反斜杠本身,因此需要兩個(gè)反斜杠,例如\\.

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
其他成員提出的解決方案對我不起作用。
但我發(fā)現(xiàn)了這個(gè):
在java regexp寫中轉(zhuǎn)義一個(gè)點(diǎn) [.]

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
Perl樣式的正則表達(dá)式(Java正則表達(dá)式引擎或多或少基于它)將以下字符視為特殊字符:
.^$|*+?()[{\在字符類之外有特殊含義,
]^-\在字符類([...])中有特殊含義。
所以你需要根據(jù)上下文(或者在字符類的情況下,將它們放在不能被誤解的位置)來逃避那些(并且只有那些)符號。
不必要地轉(zhuǎn)義其他字符可能會(huì)起作用,但是一些正則表達(dá)式引擎會(huì)將其視為語法錯(cuò)誤,例如\_會(huì)在.NET中導(dǎo)致錯(cuò)誤。
其他一些會(huì)導(dǎo)致錯(cuò)誤的結(jié)果,例如在Perl中\(zhòng)<被解釋為文字<,但在egrep其中意味著“單詞邊界”。
所以寫-?\d+\.\d+\$匹配1.50$,-2.00$等,并[(){}[\]]為一個(gè)字符類匹配各種支架/支架/括號。
如果需要將用戶輸入字符串轉(zhuǎn)換為正則表達(dá)式安全表單,請使用java.util.regex.Pattern.quote。
添加回答
舉報(bào)