我需要提取如下所示的字符串的值:
nameClass (val1)(val2)
具有:
nameClass
val1
val2
问题是它也必须适用于此:
nameClass
和
nameClass (val1)(val2)(val1)...(valn)
我试图创建正则表达式,但它只适合
nameClass (val1)(val2)
变体,看起来像这样(经过Viorel Moraru改进后):
String pattern = "((?:[a-z]+[A-Z][a-z]+))(([ |(]+)([-|+]?\\d+)([ |(|)]+)([-|+]?\\d+)([ |)]+))*";
如何使模式适用于所有人
nameClass
和
nameClass (val1)(val2)(val1)...(valn)
?
Java 代码:
String txt = "inputTestdata(12)(-13)";
String patern = "((?:[a-z]+[A-Z][a-z]+))([ |(]+)([-|+]?\\d+)([ |(|)]+)([-|+]?\\d+)([ |)]+)";
Pattern p = Pattern.compile(patern);
Matcher m = p.matcher(txt);
if (m.find())
{
for (int i = 1; i < m.groupCount(); i ++)
{
System.out.print(m.group(i) + "\n");
}
}