我是新來正則表達式(和Java),所以這可能是一個簡單的問題。 我想匹配字符{在行尾。我的嘗試是簡單:匹配{正則表達式java
row.matches("{$")
row.matches("\{$")
但兩者只是給
異常線程 「main」 java.util.regex.PatternSyntaxException:非法重複
我在做什麼錯?
我是新來正則表達式(和Java),所以這可能是一個簡單的問題。 我想匹配字符{在行尾。我的嘗試是簡單:匹配{正則表達式java
row.matches("{$")
row.matches("\{$")
但兩者只是給
異常線程 「main」 java.util.regex.PatternSyntaxException:非法重複
我在做什麼錯?
row.matches("^.*\\{$");
你只需要轉義{,因爲它是一個元字符。由於Java爲特殊上下文(\ n,\ r等)保留單個反斜槓,因此需要兩個反斜槓爲該模式生成一個反斜槓。因此,
\\{
將正確評估,以
\{
不僅如此,但matches
方法檢查看,而不只是一個子集,當且僅當整個字符串匹配。因此,^.*
部分
您必須,因爲它是正則表達式
row.matches("\\{$")
特殊字符轉義沒有角度支架工作逃脫{字符?
爲\\{$
試了一下對
hello world{
whatever{
hello{dontmatch
}
}
它匹配world{
和whatever{
但不hello{dontmatch
你需要躲避{
與\
但要防止的是,\{
讀作爲特殊字符(如\n
換行),您還需要逃脫他與另外\
導致到\
:
row.matches("\\{$");
嗯,這不會給任何錯誤,但它不會給任何比賽無論是。而我的字符串肯定有{最後。 – user2065207 2013-02-12 15:27:06
@ user2065207 - 愚蠢的問題;它是{或者}嗎?也就是說,你試圖匹配的字符串是什麼? – 2013-02-12 15:27:39
我也這麼想過。但它確實是{。 – user2065207 2013-02-12 15:32:08