是否可以创建具有可变数量的组的正则表达式?
例如运行此之后…
Pattern p = Pattern.compile("ab([cd])*ef"); Matcher m = p.matcher("abcddcef"); m.matches();
…我想要一些类似的东西
(背景:我正在解析一些数据行,“字段”之一正在重复。我想避免matcher.find这些字段的循环。)
matcher.find
根据文档,Java正则表达式不能做到这一点:
与组关联的捕获输入始终是该组最近匹配的子序列。如果由于量化而对组进行第二次评估,则如果第二次评估失败,则将保留先前捕获的值(如果有)。例如,将字符串“ aba”与表达式(a(b)?)+匹配,则将第二组设置为“ b”。在每次比赛开始时,所有捕获的输入都会被丢弃。