我的问题是我如何修改以下正则表达式以从此字符串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);
您只需将括号之间的值更改为{2,3}
。
preg_match_all('/('d{2,3})bhp'b,/', $str2b, $bhps);
这基本上提供了要匹配的前面字符定义的最小/最大数量。
'd{3}
说需要正好有 3 位数字。将{3}
更改为*
应该可以解决问题,并允许您检索bhp
之前的任意数量的连续数字。
preg_match_all('/('d*)bhp'b,/', $str2b, $bhps);
Regexpal 是一个优秀的在线正则表达式测试器。
preg_match_all('/('d{2,3})bhp'b,/', $str2b, $bhps);
还有一个额外的量词,可用于指定令牌可以重复的次数。语法为 {min,max},其中 min 为零或正整数表示最小匹配数,max 是等于或大于 min 的整数,表示最大匹配数。如果存在逗号但省略了 max,则最大匹配数是无限的。
来源: http://www.regular-expressions.info/repeat.html
Bt 如果您希望它也匹配1bhp
和160000bhp
例如,请改用以下内容:
preg_match_all('/('d+)bhp'b,/', $str2b, $bhps);
这将捕获bhp
左侧任意数量的数字