我的问题是如何修改以下正则表达式以从该字符串中获取数字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是一个优秀的在线正则表达式测试器。