以下两者之间的区别是什么:

(.+?)

(.*?)

当我在我的php preg_matchregex中使用它时?

推荐答案

它们被称为量词.

* 0个或更多前面的表达式

+一个或多个上述表达式

默认情况下,量词是贪婪的,这意味着它匹配尽可能多的字符.

一个量词后的?改变了行为,使这个量词"ungreedy",这意味着它将尽可能少地匹配.

Example greedy/ungreedy

例如字符串"abab"

a.*b将匹配"abab"(preg_match_all将返回一个匹配,即"abab")

a.*?b只会匹配开始的"ab"(preg_match_all将返回两个匹配,"ab")

您可以在线测试您的正则表达式,例如在Regexr,see the greedy example here

Php相关问答推荐

Laravel迁移返回SQL错误,但SQL有效且工作正常

一列必须指定多个变量的Laravel查询

将带有值的属性添加到WooCommerce产品,保留现有属性

向在添加到购物车上动态创建的WooCommerce产品添加发货类别

Laravel POST方法返回状态:POST方法上不允许使用405方法

不包括WooCommerce中单独销售的产品

PHP Laravel Web应用启动时间&>15秒

使用ESI的Symfony Sulu清漆

根据发货类别在WooCommerce产品页面中显示快捷代码

表单提交返回空白页

在WooCommercestore 页面上显示库存产品属性的值

将自定义字段添加到管理产品中 WooCommerce 3.2+ 中的快速编辑

WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

通过添加计数器修改文本区域表单中的重复值

无法读取某些 WordPress 主机上的 cookie

Windows 身份验证在 IIS 中验证什么?我可以在我的情况下禁用匿名身份验证吗?

PHP for each 函数打印 td

使用 Eloquent 更新现有的外键值

php-http/discovery 插件 1.15.1 是否仍在使用自己的模块 destruct Contao 4.13 中的composer 安装?

构建 [Controller] 时目标 [Interface] 不可实例化