Java组数可变的正则表达式?

是否可以创建具有可变数量的组的正则表达式?

例如运行此之后…

Pattern p = Pattern.compile("ab([cd])*ef");

Matcher m = p.matcher("abcddcef");

m.matches();

…我想要一些类似的东西

  • m.group(1) = “c”
  • m.group(2) = “d”
  • m.group(3) = “d”
  • m.group(4)= “c”。

(背景:我正在解析一些数据行,“字段”之一正在重复。我想避免matcher.find这些字段的循环。)

回答:

根据文档,Java正则表达式不能做到这一点:

与组关联的捕获输入始终是该组最近匹配的子序列。如果由于量化而对组进行第二次评估,则如果第二次评估失败,则将保留先前捕获的值(如果有)。例如,将字符串“ aba”与表达式(a(b)?)+匹配,则将第二组设置为“ b”。在每次比赛开始时,所有捕获的输入都会被丢弃。

以上是 Java组数可变的正则表达式? 的全部内容, 来源链接: utcz.com/qa/405508.html

回到顶部