我想检查给定的文本是否被大括号包围,但是当它们被“转义”时也想忽略它们。所以我希望匹配{Something}
但不匹配\{Something\}
...
最简单的方法是什么?
答案 0 :(得分:0)
可以使用负面后卫,即没有反斜杠。但如果反斜杠是常规转义字符,则\\{
将是反斜杠加括号。
对于那种情况,请执行:
Pattern pattern = Pattern.compile("(\\\\.|[^{\\\\])*\\{" // All upto open brace
+ "(\\\\.|[^}\\\\])*" // The sought, $2
+ "\\}"); // Closing brace
String s = "...";
Matcher m = pattern.matcher(s);
while (m.find()) {
System.out.println(m.group(2);
}
模式
(
\\\\. backslash followed by any char
| or
[^{\\\\] not one of: '{' or backslash
)