5

Related to my previous question, I have a string on the following format:

this {is} a [sample] string with [some] {special} words. [another one]

What is the regular expression to extract the words within either square or curly brackets, ie.

{is}
[sample]
[some]
{special}
[another one]

Note: In my use case, brackets cannot be nested. I would also like to keep the enclosing characters, so that I can tell the difference between them when processing the results.

Wiktor Stribiżew
  • 607,720
  • 39
  • 448
  • 563
ObiWanKenobi
  • 14,526
  • 11
  • 45
  • 51

2 Answers2

7

Simply or (|) the different things you wish to match together:

\[.*?\]|\{.*?\}

Robert P
  • 15,707
  • 10
  • 68
  • 112
2

This one seems to work:

[[{].*?[}\]]

Or this one:

\[.*?\]|{.*?}

If you want to catch the cases mentioned in the comments below.

You can use an online regex tester to try these things out. I think http://gskinner.com/RegExr/ is one of the more user-friendly options.

Carl Norum
  • 219,201
  • 40
  • 422
  • 469