3

How could I find string between [[ ]]? After searching a answer I find this method below, but I cannot find the regular expression for [[ ]], neither for {{ }}.

What I want to do is to find e.g. [[abc]]XXXXXXXXXX[[def]], and save abc, def as a ArrayList.

String s = "[[abc]]XXXXXXXXXX[[def]]";
Pattern p = Pattern.compile("[[(.*?)]]")
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(i)); // => "abc","def"
}
Alan Moore
  • 68,531
  • 11
  • 88
  • 149

1 Answers1

4

You must double escape the opening square brackets (you can do the same with the closing) since they are used to define character classes:

Pattern p = Pattern.compile("\\[\\[(.*?)]]");

(exactly the same with curly braces, that are used for quantifiers)

You can read this fabulous post about the incredible world of square brackets.

Community
  • 1
  • 1
Casimir et Hippolyte
  • 83,228
  • 5
  • 85
  • 113