3 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
如果您希望正則字符中具有特殊含義的點或其他字符是普通字符,則必須使用反斜杠將其轉義。由于Java中的正則表達式是普通的Java字符串,因此您需要轉義反斜杠本身,因此需要兩個反斜杠,例如\\.

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