php – 正则表达式,贪心|

几个星期我在
PHP中使用正则表达式.

现在我的问题是:有没有办法让RegEx贪得无厌?

例如主题:012345abcdefghijklm

模式:/(abcde | abcdefghi)/将提取abcde,虽然abcdefghi是比较贪婪的.

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

谢谢

最佳答案 除了重新排序元素或添加可选的非捕获组之外别无他法.

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

要么重新排序可能的选择(/(abcdefghi | abcde)/)还是使用可选的非捕获组(/(abcde(?:fghi)?)/).

点赞