正则表达式 preg_match 表示字符串中间的数字
regex preg_match for digit in middle for a string
ddw_0_op1
ddw_1_op1
ddw_2_op1
ddw_3_op1
ddw_4_op1
在数组的这些字符串中,我如何提取或preg_match 只提取中间增加的数字。提前致谢
我会在下划线处断开字符串:
$parts = explode('_', $string);
$middle = $parts[1];
如果数字永远不会超过一位数字,您可以简单地使用 $str[4]
来获取字符串的第五个字符(您的数字)。但是,另一方面,如果数字无限期地连续出现,您可以使用以下任一正则表达式。
选项 1
(?<=_)\d+(?=_)
(?<=_)
正面回顾断言前面的是 _
\d+
匹配一位或多位数字
(?=_)
正面前瞻断言接下来是 _
选项 2
See regex in use here: 这种方法比前面的方法用的步骤少
_\K\d+(?=_)
_
字面匹配
\K
重置报告匹配的起点。任何先前消耗的字符不再包含在最终匹配中
\d+
匹配一位或多位数字
(?=_)
正面前瞻断言接下来是 _
使用preg_match
函数:
$str = "ddw_01_fdfd";
preg_match('/.+_([0-9]+)_.+/', $str, $matches);
echo $matches[1];
输出:
01
另一种方法是通过 _
:
分解字符串
$xpl = explode('_', $str);
$middleStr = $xpl[1];
explode
函数按字符串拆分字符串,在这种情况下,创建一个数组,该数组由 $str
中包含的所有子字符串除以 _
。
试试看 here.
ddw_0_op1
ddw_1_op1
ddw_2_op1
ddw_3_op1
ddw_4_op1
在数组的这些字符串中,我如何提取或preg_match 只提取中间增加的数字。提前致谢
我会在下划线处断开字符串:
$parts = explode('_', $string);
$middle = $parts[1];
如果数字永远不会超过一位数字,您可以简单地使用 $str[4]
来获取字符串的第五个字符(您的数字)。但是,另一方面,如果数字无限期地连续出现,您可以使用以下任一正则表达式。
选项 1
(?<=_)\d+(?=_)
(?<=_)
正面回顾断言前面的是_
\d+
匹配一位或多位数字(?=_)
正面前瞻断言接下来是_
选项 2
See regex in use here: 这种方法比前面的方法用的步骤少
_\K\d+(?=_)
_
字面匹配\K
重置报告匹配的起点。任何先前消耗的字符不再包含在最终匹配中\d+
匹配一位或多位数字(?=_)
正面前瞻断言接下来是_
使用preg_match
函数:
$str = "ddw_01_fdfd";
preg_match('/.+_([0-9]+)_.+/', $str, $matches);
echo $matches[1];
输出:
01
另一种方法是通过 _
:
$xpl = explode('_', $str);
$middleStr = $xpl[1];
explode
函数按字符串拆分字符串,在这种情况下,创建一个数组,该数组由 $str
中包含的所有子字符串除以 _
。
试试看 here.