Nishikant
Nishikant

Reputation: 315

Java Regex to get Data between curly brackets

I am looking for a regular expression to match the text between curly brackets.

{one}{two}{three}

I want each of these as separate groups, as one two three separately.

I tried Pattern.compile("\\{.*?\\}"); which removes only first and last curly brackets.

Upvotes: 2

Views: 9604

Answers (2)

hwnd
hwnd

Reputation: 70732

You need to use a capturing group ( ) around what you want to capture.

To just match and capture what is between your curly brackets.

String s  = "{one}{two}{three}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

Output

one
two
three

If you want three specific match groups...

String s  = "{one}{two}{three}";
Pattern p = Pattern.compile("\\{([^}]*)\\}\\{([^}]*)\\}\\{([^}]*)\\}");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1) + ", " + m.group(2) + ", " + m.group(3));
}

Output

one, two, three

Upvotes: 9

jlordo
jlordo

Reputation: 37813

If you want 3 groups, your pattern needs 3 groups.

"\\{([^}]*)\\}\\{([^}]*)\\}\\{([^}]*)\\}"
              ^^^^^^^^^^^^^

(The middle part is the same as the left and right).

Upvotes: 0

Related Questions