括号中的多行正则表达式匹配模式,忽略转义的括号

时间:2020-07-16 19:49:02

标签: regex flex-lexer

我终于设法找到了解决方法,请参见https://regex101.com/r/Zls9Kq/5/

(?!\\)[{](.|\n)*?(?<!\\)[}]

尝试匹配

sometext {
 blah \{
\}
\{
 \}
}

但是该表达式不能在flex中使用。

任何人都知道是否可以通过flex进行转换吗?

1 个答案:

答案 0 :(得分:1)

我将假定使用一个有限的正则表达式引擎,并尝试一下

([^\\]|^)[{]([^\\}]|\\(.|\n))*[}]

https://regex101.com/r/WBFbWw/1

**

 ( [^\\] | ^ )      # (1), Before the opening {, match not an escape or the beginning of the string
 [{]                # Opening brace
 (                  # (2 start)
      [^\\}]             # Not an escape nor a closing brace
   |  \\                 # Or, an escape anything
      ( . | \n )         # (3)
 )*                 # (2 end), 0 to many times
 [}]                # Closing brace