正则表达式匹配括号内的所有内容忽略嵌套
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”堆栈中弹出
]
- 一个 ]
字符。
我正在寻找一个正则表达式规则来匹配方括号内的所有内容,包括括号并忽略里面可能的括号。例如。来自:
[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”堆栈中弹出
]
- 一个]
字符。