I am looking for a regex rule to match everything inside square brackets, including the brackets and ignoring the possible brackets inside. E.g. from:
[value] in the [text[42]] and [1[2[3]]]!
I need to extract [value]
, [text[42]]
and [1[2[3]]]
.
I use
\[(.*?)\]
Here are more expamples - https://regex101.com/r/Xp4ghi/1
P.S. I am going to use it in .NET
CodePudding user response:
You can use
\[(?>[^][] |(?<c>)\[|(?<-c>)]) ]
See the regex demo. Details:
\[
- a[
char(?>[^][] |(?<c>)\[|(?<-c>)])
- one or more occurrences of[^][] |
- one or more chars other than]
and[
, or(?<c>)\[|
- a[
char and a value is pushed onto Group "c" stack, or(?<-c>)]
- a]
char and a value is popped off the Group "c" stack
]
- a]
char.