我是正则表达式(和java)的新手,所以这可能是一个简单的问题。 我试图匹配字符{在一行的末尾。我的尝试就是这样:
row.matches("{$")
row.matches("\{$")
但两人都给了
线程“main”中的异常java.util.regex.PatternSyntaxException:非法重复
我做错了什么?
答案 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("\\{$");