我正在尝试构建一个与嵌套大括号匹配但不匹配单个大括号的正则表达式。
例如,给定此字符串:
" { { I'm so cool, I'm nested } } I'm neither { I'm just boring normal braces } "
正则表达式应匹配:
{ { I'm so cool, I'm nested } }
但不是:
{ I'm just boring normal braces }
我想我几乎就在那里,我一直在玩正则表达式测试器试图让它工作,但我必须遗漏一些东西。
这是我到目前为止所得到的:
(?(?=\{(?>[^\{\}]++|(?R))*\})(\{(?>[^\{\}]++|(?R))*\}))
它仍然匹配单曲。
这个想法是它使用带有正向前瞻的if语句来检查是否存在嵌套大括号。如果它匹配它们。我不知道如何排除常规的。
答案 0 :(得分:1)
答案 1 :(得分:0)
这应该适用于准确的第二级嵌套curlies:
{[^{}]*{([^}]*)}
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:0)
你现在的模式在Regex101上似乎对我很好。它与单打不匹配!但是我能够为你总结一下这个:
(\{(?:[^{}]|(?R))++\})
你真的不需要if。