几个星期以来,我一直在使用 php 中的正则表达式。
现在我的问题是:有什么办法可以让 RegEx 对 |
贪婪?
例如主题:012345abcdefghijklm
模式: /(abcde|abcdefghi)/
将提取 abcde
,尽管 abcdefghi
是更贪婪的匹配。
我发现的唯一方法是按可能匹配的最高长度对 RegEx 进行排序
谢谢
最佳答案
除了重新排序元素或添加可选的非捕获组之外,别无他法。
正则表达式引擎非常渴望。由于 交替元字符的工作方式 (|) , the first possible match exits the alternation clause 。
重新排序可能的选择 ( /(abcdefghi|abcde)/
) 或使用可选的非捕获组 ( /(abcde(?:fghi)?)/
)。