si458 si458 - 2 months ago 16
PHP Question

how to get string outside brackets within brackets regex

I need help trying to get regex to work with double brackets

currently i have this for the regex

(\\[.*?\\])


that allows me to get everything inside a bracket,

HOWEVER my string has double brackets

[DATA1[OTHERDATA]RUBBISH]


the output I get is

[DATA1[OTHERDATA]


is the a way of getting the full bracket including the bracket inside?

Answer

Keeping things nice and simple. A greedy match should do the trick:

/\[(.+)\]/

the .+ will match any character, but it'll stop at the last ], so the match will be "DATA1[OTHERDATA]RUBBISH"

Demo

Breakdown is really simple:

  • \[: Matches literal [
  • (.+): Match (and capture) all characters - including opening and closing brackets
  • \]: Match literal ]

Regardless of how many nested brackets you have the results are the same:

[data[foo][bar][eve[n]]more]
//match:
data[foo][bar][eve[n]]more
Comments