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