【发布时间】:2017-11-27 23:03:43
【问题描述】:
我有那个正则表达式
\{([^{}]|(?R))*\}
与最外层括号内容匹配的很好
foo{
subfoo{
"foofoofoo..."
}
}foo
//Matches :
// {
// subfoo{
// "foofoofoo..."
// }
//}
但我需要添加一些排除:
- 绕过位于单引号或双引号中的每个括号
- 如果右括号后跟\s*,则不匹配; (分号之间有空格)
所以下面的文字应该给出:
foo{
subfoo{
"foofoofoo... { "
}
}foo
//Matches :
// {
// subfoo{
// "foofoofoo... { "
// }
//}
和
foo{foofoofoo} ;
//Matches nothing
谁能帮忙?
【问题讨论】:
-
#2 可以通过否定断言
... \}(?!\s+)轻松实现;同时#1我不确定是否可以使用正则表达式(特别是如果我们想忽略转义引号并在双引号字符串中说单引号)
标签: regex