匹配{正则表达式java

时间:2013-02-12 15:19:15

标签: java regex

我是正则表达式(和java)的新手,所以这可能是一个简单的问题。 我试图匹配字符{在一行的末尾。我的尝试就是这样:

row.matches("{$")

row.matches("\{$")

但两人都给了

线程“main”中的异常java.util.regex.PatternSyntaxException:非法重复

我做错了什么?

4 个答案:

答案 0 :(得分:4)

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

你只需要逃避{,因为它是一个元字符。因为Java为特殊上下文(\ n,\ r \ n等)保留一个反斜杠,所以需要两个反斜杠来为Pattern生成一个反斜杠。因此,

\\{

将正确评估为

\{

不仅如此,matches方法还会检查整个字符串是否匹配,而不仅仅是一个子集。因此,^.*部分

答案 1 :(得分:2)

你必须转义{字符,因为它是正则表达式的特殊字符

row.matches("\\{$")

答案 2 :(得分:2)

转角支架是否有效?

\\{$

一样

反对

hello world{
    whatever{
    hello{dontmatch
    }
}

它符合world{whatever{但不符合hello{dontmatch

答案 3 :(得分:2)

您需要使用{转义\,但要防止\{被视为特殊字符(例如\n用于换行),您需要另外\也会转义\,导致:

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