我的问题是如何修改以下正则表达式以从该字符串中获取数字160bhp,但也从字符串中获取数字90bhp,?
目前,它只需要 3 个数字并忽略 2。我正在尝试 | 没有运气。
preg_match_all('/(\d{3})bhp\b,/', $str2b, $bhps);
我猜您可能想将其概括为匹配 bhp 之前的一位或多位数字(没有上限)?如果是这种情况,请使用:
preg_match_all('/(\d+)bhp\b,/', $str2b, $bhps);
更进一步,是否允许零个或多个空格字符,例如“200 bhp”?如果是这样,请使用:
preg_match_all('/(\d+)\s*bhp\b,/', $str2b, $bhps);
最后,它是否需要不区分大小写,例如允许 300BHP?如果是这样,i请在最后一个斜杠后面加上:
preg_match_all('/(\d+)\s*bhp\b,/i', $str2b, $bhps);
preg_match_all('/(\d{2,3})bhp\b,/', $str2b, $bhps);
还有一个额外的量词,允许您指定一个标记可以重复多少次。语法为 {min,max},其中 min 为零或正整数,表示最小匹配数,max 是等于或大于 min 的整数,表示最大匹配数。如果存在逗号但省略了 max,则最大匹配数是无限的。
Bt 如果您还希望它也匹配1bhp,160000bhp例如,请改用它:
preg_match_all('/(\d+)bhp\b,/', $str2b, $bhps);
这将捕获左侧的任意数量的数字bhp
您只需将括号之间的值更改为{2,3}.
preg_match_all('/(\d{2,3})bhp\b,/', $str2b, $bhps);
这基本上提供了要匹配的前面字符定义的最小/最大数量。
\d{3}是说需要正好是3位数字。更改{3}to*应该可以解决问题,并允许您检索 . 之前的任意数量的连续数字bhp。
preg_match_all('/(\d*)bhp\b,/', $str2b, $bhps);
regexpal是一个优秀的在线正则表达式测试器。