我试图在这样的字符串中找到两个下划线(_)之间的数字:
234534_45_92374 3433_9458_034857 zx_8458_047346daf
这个正则表达式是什么?
j2datikz1#
preg_match('/_(\d+)_/', $str, $matches); $number = (int) $matches[1];
0ejtzxu12#
由于示例字符串的格式是一致的,因此不需要包括匹配尾随下划线的验证。使用preg_match(),匹配文本下划线,然后忘记您匹配了它(使用\K),然后匹配一个或多个数字。匹配将是一个字符串--如果需要整数类型,则将字符串转换为int。如果你真的想把数字转换成整数,PHP提供了一个更直接的函数:sscanf()。先静默地使用一个或多个非下划线字符,然后是下划线,然后捕获一个或多个数字,并使用%d指定值必须是int类型的变量。代码:(Demo)
preg_match()
\K
int
sscanf()
%d
preg_match('/_\K\d+/', $test, $match); var_export($match[0]);
或
sscanf($test, '%*[^_]_%d', $integer); var_export($integer);
2条答案
按热度按时间j2datikz1#
0ejtzxu12#
由于示例字符串的格式是一致的,因此不需要包括匹配尾随下划线的验证。
使用
preg_match()
,匹配文本下划线,然后忘记您匹配了它(使用\K
),然后匹配一个或多个数字。匹配将是一个字符串--如果需要整数类型,则将字符串转换为int
。如果你真的想把数字转换成整数,PHP提供了一个更直接的函数:
sscanf()
。先静默地使用一个或多个非下划线字符,然后是下划线,然后捕获一个或多个数字,并使用%d
指定值必须是int
类型的变量。代码:(Demo)
或