猿问

具有可变数量的组的正则表达式?

具有可变数量的组的正则表达式?

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

例如运行之后......

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这些字段的循环。)


正如@Tim Pietzcker在评论中指出的那样,perl6和.NET都有这个功能。


慕森王
浏览 714回答 3
3回答

Smart猫小萌

根据文档,Java正则表达式不能这样做:与组关联的捕获输入始终是该组最近匹配的子序列。如果由于量化而第二次评估组,则如果第二次评估失败,则将保留其先前捕获的值(如果有的话)。例如,将字符串“aba”与表达式(a(b)?)+匹配,将第二组设置为“b”。在每次比赛开始时丢弃所有捕获的输入。(重点补充)
随时随地看视频慕课网APP
我要回答