I\'m trying to extract a string from round brackets.
Let\'s say, I have John Doe (123456789)
and I want to output the string 123456789
only.
String str="John Doe (123456789)";
System.out.println(str.substring(str.indexOf("(")+1,str.indexOf(")")));
Here I'm performing string operations. I'm not that much familiar with regex.
In Java, you need to use
String pattern = "\\(([^()]+)\\)";
Then, the value you need is in .group(1)
.
String str = "John Doe (123456789)";
String rx = "\\(([^()]+)\\)";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
See IDEONE demo
this works for me :
@Test
public void myTest() {
String test = "test (mytest)";
Pattern p = Pattern.compile("\\((.*?)\\)");
Matcher m = p.matcher(test);
while(m.find()) {
assertEquals("mytest", m.group(1));
}
}
You need to escape brackets in your regexp:
String in = "John Doe (123456789)";
Pattern p = Pattern.compile("\\((\\d*)\\)");
Matcher m = p.matcher(in);
while (m.find()) {
System.out.println(m.group(1));
}