正则表达式匹配括号内的所有内容忽略嵌套

Regex to match everything inside brackets ignore nested

我正在寻找一个正则表达式规则来匹配方括号内的所有内容,包括括号并忽略里面可能的括号。例如。来自:

[value] in the [text[42]] and [1[2[3]]]!

我需要提取 [value][text[42]][1[2[3]]]

我用

\[(.*?)\]

这里有更多例子 - https://regex101.com/r/Xp4ghi/1

P.S。我打算在 .NET 中使用它

您可以使用

\[(?>[^][]+|(?<c>)\[|(?<-c>)])+]

regex demo详情:

  • \[ - 一个 [ 字符
  • (?>[^][]+|(?<c>)\[|(?<-c>)])+ - 出现一次或多次
    • [^][]+| - ][
    • 以外的一个或多个字符
    • (?<c>)\[| - 一个 [ 字符和一个值被压入“c”组堆栈,或者
    • (?<-c>)] - 一个 ] 字符和一个值从组“c”堆栈中弹出
  • ] - 一个 ] 字符。