获取两个字符之间的数字

问题描述 投票:0回答:2

我试图在这样的字符串中找到两个下划线(_)之间的数字:

234534_45_92374
3433_9458_034857
zx_8458_047346daf

这个的正则表达式是什么?

php regex preg-match text-extraction
2个回答
6
投票
preg_match('/_(\d+)_/', $str, $matches);
$number = (int) $matches[1];

0
投票

由于您的示例字符串显示的格式一致,因此您不需要包含匹配尾随下划线的验证。

使用

preg_match()
,匹配文字下划线,然后忘记您匹配过它(使用
\K
),然后匹配一个或多个数字。匹配将是一个字符串——如果您需要整数类型,则将字符串转换为
int

如果你确实希望将数字转换为整数,PHP 提供了更直接的函数:

sscanf()
。默默地消耗一个或多个非下划线字符,然后是下划线,然后捕获一位或多位数字并使用
%d
指示该值必须是
int
类型变量。

代码:(演示

preg_match('/_\K\d+/', $test, $match);
var_export($match[0]);

或者

sscanf($test, '%*[^_]_%d', $integer);
var_export($integer);
© www.soinside.com 2019 - 2024. All rights reserved.