2013-02-12 78 views
1

我是新來正則表達式(和Java),所以這可能是一個簡單的問題。 我想匹配字符{在行尾。我的嘗試是簡單:匹配{正則表達式java

row.matches("{$") 

row.matches("\{$") 

但兩者只是給

異常線程 「main」 java.util.regex.PatternSyntaxException:非法重複

我在做什麼錯?

回答

4
row.matches("^.*\\{$"); 

你只需要轉義{,因爲它是一個元字符。由於Java爲特殊上下文(\ n,\ r等)保留單個反斜槓,因此需要兩個反斜槓爲該模式生成一個反斜槓。因此,

\\{ 

將正確評估,以

\{ 

不僅如此,但matches方法檢查看,而不只是一個子集,當且僅當整個字符串匹配。因此,^.*部分

+0

嗯,這不會給任何錯誤,但它不會給任何比賽無論是。而我的字符串肯定有{最後。 – user2065207 2013-02-12 15:27:06

+0

@ user2065207 - 愚蠢的問題;它是{或者}嗎?也就是說,你試圖匹配的字符串是什麼? – 2013-02-12 15:27:39

+0

我也這麼想過。但它確實是{。 – user2065207 2013-02-12 15:32:08

2

您必須,因爲它是正則表達式

row.matches("\\{$") 
2

特殊字符轉義沒有角度支架工作逃脫{字符?

\\{$

試了一下對

hello world{ 
    whatever{ 
    hello{dontmatch 
    } 
} 

它匹配world{whatever{但不hello{dontmatch

2

你需要躲避{\但要防止的是,\{讀作爲特殊字符(如\n換行),您還需要逃脫他與另外\導致到\

row.matches("\\{$");