微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 正则表达式在第一次找到子模式时停止

让我们考虑接下来的两个例子.

preg_match('/^(\pL+)(?:bcd|cd|d)$/u', 'abcd', $matches);
preg_match('/^(\pL+)(?:d|cd|bcd)$/u', 'abcd', $matches);

两个示例都将’abc’作为$matches [1]返回.

为什么正则表达式不会在非匹配组中首先找到子模式?可以在’bcd’停止并获得’a’作为$matches [1]?

解决方法:

是的,通过使量词非贪婪:

preg_match('/^(\pL+?)(?:bcd|cd|d)$/u', 'abcd', $matches);
preg_match('/^(\pL+?)(?:d|cd|bcd)$/u', 'abcd', $matches);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐