我已经能够生成一个正则表达式来拉取字符串中括号之间的所有内容,但是我不清楚如何使它只发生一次并且只发生在第一组中。在JAVA:
我当前的模式= "\\(([^)]+)\\)"
非常感谢任何帮助。
答案 0 :(得分:2)
使用replaceFirst
代替replaceAll
或者,如果你必须使用replaceAll
,请让它消耗你的其余字符串并再次将它放回去
replaceAll("yourRegex(.*)","yourReplacement$1");
其中$1
表示来自第一组(.*)
的匹配。
答案 1 :(得分:1)
尝试:
String x= "Hie(Java)";
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
while(m.find()) {
System.out.println(m.group(1));
}
或
String str = "Hie(Java)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
为最后一个索引: 用
更新 String answer = str.substring(str.indexOf("(")+1,str.lastIndexOf(")"));