regex 获取两个字符之间的数字

mspsb9vt  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(109)

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

234534_45_92374
3433_9458_034857
zx_8458_047346daf

这个正则表达式是什么?

j2datikz

j2datikz1#

preg_match('/_(\d+)_/', $str, $matches);
$number = (int) $matches[1];
0ejtzxu1

0ejtzxu12#

由于示例字符串的格式是一致的,因此不需要包括匹配尾随下划线的验证。
使用preg_match(),匹配文本下划线,然后忘记您匹配了它(使用\K),然后匹配一个或多个数字。匹配将是一个字符串--如果需要整数类型,则将字符串转换为int
如果你真的想把数字转换成整数,PHP提供了一个更直接的函数:sscanf()。先静默地使用一个或多个非下划线字符,然后是下划线,然后捕获一个或多个数字,并使用%d指定值必须是int类型的变量。
代码:(Demo

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

sscanf($test, '%*[^_]_%d', $integer);
var_export($integer);

相关问题