几个星期以来,我一直在使用 php 中的正则表达式。
现在我的问题是:有什么办法可以让 RegEx 对 | 贪婪?

例如主题:012345abcdefghijklm
模式: /(abcde|abcdefghi)/ 将提取 abcde ,尽管 abcdefghi 是更贪婪的匹配。

我发现的唯一方法是按可能匹配的最高长度对 RegEx 进行排序

谢谢

最佳答案

除了重新排序元素或添加可选的非捕获组之外,别无他法。

正则表达式引擎非常渴望。由于 交替元字符的工作方式 (|) the first possible match exits the alternation clause

重新排序可能的选择 ( /(abcdefghi|abcde)/ ) 或使用可选的非捕获组 ( /(abcde(?:fghi)?)/ )。

10-08 02:12