加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式提取在parantheses值java

发布时间:2020-12-14 05:37:08 所属栏目:百科 来源:网络整理
导读:我需要提取看起来像这样的字符串的值: nameClass (val1)(val2) 具有: nameClassval1val2 问题是它也必须适用于此: nameClass 和 nameClass (val1)(val2)(val1)...(valn) 我试图创建正则表达式,但它只适用于 nameClass (val1)(val2) 变体和看起来像这样(在
我需要提取看起来像这样的字符串的值:

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");
  }
}

解决方法

您可以使用此代码:

String s = "nameClass(val1)(val2)(val3)";
Pattern p = Pattern.compile("^(w+) *(.*)$");
Matcher m = p.matcher(s);
String ps = "";
if (m.matches())
{
  ps = m.group(2);
  System.out.printf("Outside parantheses:<%s>n",m.group(1));
}
Pattern p1 = Pattern.compile("(([^)]*))");
Matcher m1 = p1.matcher(ps);
while (m1.find())
{
  System.out.printf("Inside parentheses:<%s>%n",m1.group(1));
}

OUTPUT:

Outside parantheses:<nameClass>
Inside parentheses:<val1>
Inside parentheses:<val2>
Inside parentheses:<val3>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读