首页 > 解决方案 > 奇怪的正则表达式行为,在完整的正则表达式中捕获过于贪婪,但在单独测试时正确

问题描述

我有这个正则表达式来从文档中提取参考信息:

(?=(((Ard.|Lorr.) *?:|;) *([^;:]{0,100}) (\([0-9/, -]{0,10}/[0-9/, -]{0,10}\)), *([^;]{0,250}?),* *(([0-3]?[0-9]\.)?[01]?[0-9]\.[0-9]{2,4}), *([^;]{0,150}?) *(;|\) ?\.) ( ?ibid\., *(([0-3]?[0-9]\.)?[01]?[0-9]\.[0-9]{2,4}), *([^;]{0,50}) *(;|\) ?\.))*))

我的问题是最后一部分:

( ?ibid\., *(([0-3]?[0-9]\.)?[01]?[0-9]\.[0-9]{2,4}), *([^;]{0,50}) *(;|\) ?\.))

这部分在单独测试时完全符合预期:https ://regex101.com/r/8vAsLz/1

但是,当与其他部分一起使用时,仅ibid匹配最后一个引用,如下所示:https ://regex101.com/r/1AsOtl/1

我对这种行为感到困惑,想知道为什么会发生这种情况以及我可以做些什么来让它按预期工作。

标签: regexregex-lookaroundsregex-group

解决方案


推荐阅读