regex - 奇怪的正则表达式行为,在完整的正则表达式中捕获过于贪婪,但在单独测试时正确
问题描述
我有这个正则表达式来从文档中提取参考信息:
(?=(((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
我对这种行为感到困惑,想知道为什么会发生这种情况以及我可以做些什么来让它按预期工作。
解决方案
推荐阅读
- javascript - 我无法从 js selenium 以无头模式启动 ms edge
- javascript - 如何在 javascript 中为 IF 语句添加更多案例
- unit-testing - Spock 单元测试使用 spring 数据导致 Optional 中的错误
- html - 为什么符号“&”在我的 scss 代码中不起作用?
- java - org.apache.openjpa.persistence.PersistenceException:使用分布式事务时无法设置自动提交模式
- javascript - 无法在javascript中获取子元素的文本
- php - 在网格中显示带有子项和产品编号的 Woocommerce 产品类别
- google-apps-script - 范围选择器 Google Sheet Apps 脚本
- sql-server - 如何在 SQL Server 2012 中使用 GROUP BY
- r - R 记者到官员和移民