我是正则表达式(和 java)的新手,所以这可能是一个简单的问题。我正在尝试匹配行尾的字符 {。我的尝试很简单:
row.matches("{$")
row.matches("\{$")
但两者都只是给
线程“主”java.util.regex.PatternSyntaxException 中的异常:非法重复
我究竟做错了什么?
row.matches("^.*\\{$");
您只需要转义 {,因为它是一个元字符。因为 Java 为特殊上下文(\n、\r 等)保留了一个反斜杠,所以需要两个反斜杠来为 Pattern 生成一个反斜杠。所以,
\\{
将正确评估为
\{
不仅如此,该matches
方法还会检查整个字符串是否匹配,而不仅仅是一个子集。因此,该^.*
部分
您必须转义 { 字符,因为它是正则表达式的特殊字符
row.matches("\\{$")
转义尖括号有效吗?
如在\\{$
试过反对
hello world{
whatever{
hello{dontmatch
}
}
它匹配world{
但whatever{
不匹配hello{dontmatch
您需要{
使用 an转义,\
但为了防止将 the\{
读取为特殊字符(如\n
换行符),您还需要\
使用额外的\
结果来转义:
row.matches("\\{$");