Regular expression to extract text between square brackets
You can use the following regex globally:
\[(.*?)\]
Explanation:
\[
:[
is a meta char and needs to be escaped if you want to match it literally.(.*?)
: match everything in a non-greedy way and capture it.\]
:]
is a meta char and needs to be escaped if you want to match it literally.
Can brackets be nested?
If not: \[([^]]+)\]
matches one item, including square brackets. Backreference \1
will contain the item to be match. If your regex flavor supports lookaround, use
(?<=\[)[^]]+(?=\])
This will only match the item inside brackets.
(?<=\[).+?(?=\])
Will capture content without brackets
(?<=\[)
- positive lookbehind for[
.*?
- non greedy match for the content(?=\])
- positive lookahead for]
EDIT: for nested brackets the below regex should work:
(\[(?:\[??[^\[]*?\]))
This should work out ok:
\[([^]]+)\]