如何使用正则表达式只获取`(`和`)`之间的字符?

时间:2013-12-05 10:13:56

标签: java regex

我有这样的情景:

A= add(1a,2b,3c,4d)现在我只想要括号内的值。我怎么能这样做?任何人都可以帮助我。

我试过用这个:

replaceAll("\\d","");它删除了所有整数,但我想用逗号括起括号内的字符。

例如:a,b,c,d

4 个答案:

答案 0 :(得分:3)

([0-9()]|.*(?=\())

[0-9()]这将匹配数字和括号

.*(?=\()这将匹配开始括号之前的任何内容

中间的|表现得像OR,例如匹配(THIS | THIS)

如果您使用替换,则此A= add(1a,2b,3c,4d)将变为a,b,c,d

在此处测试并选择顶部http://gskinner.com/RegExr/

的替换标签

答案 1 :(得分:2)

您可以使用此正则表达式:

\\((.*?)\\)

如果您想在没有,的情况下提取字符,可以使用String#split

您的解决方案无法正常工作,因为您正在做一些无关紧要的事情。您正在使用""替换所有数字,这意味着您要删除它们。

另一种解决方案:

String myStr = str.split("\\(|\\)")[1];

如果您的字符串为A= add(1a,2b,3c,4d),则在正则表达式之后,您将获得1a,2b,3c,4d。如果您不想int,请使用replaceAll

答案 2 :(得分:1)

\(([^\)]*)\)将返回第一组"a,b,c,d"

答案 3 :(得分:1)

您需要的模式是:"\\((.*)\\)"

下面的代码演示了如何使用此模式查找输入字符串中括在括号中的所有项目:

String example = "A= add(a,b,c,d)";
Pattern pattern = Pattern.compile("\\((.*)\\)");    
Matcher matcher = pattern.matcher(example);

while (matcher.find()) {
  System.out.println(matcher.group(1));
}

打印:

a,b,c,d