如何在 PHP 中使用正则表达式将标题数字与字符串分开?
How to separate heading digits from a string with regex in PHP?
我有一个形式为
的字符串
$str = '0.5An55.5Tik';
并希望将标题编号分隔为
$number = '0.5';
$str = 'An55.5Tik'
我想到了
$array = preg_split('/(^[0-9.]+)(.*?)/i',$str);
但是正则表达式不起作用。
您可以使用
$results = preg_split('~^\d*\.?\d+\K~', $s);
参见regex demo。
图案详情
^
- 字符串开头
\d*
- 0+ 位
\.?
- 一个可选的 .
\d+
- 1+ 位数
\K
- 匹配重置运算符,丢弃到目前为止匹配的所有文本。
您还可以通过匹配将值分组:
preg_match('~^(\d*\.?\d+)(.*)~', $s, $m)
见another demo and a PHP demo:
$s = '0.5An55.5Tik';
if (preg_match('/^(\d*\.?\d+)(.*)/', $s, $m)) {
echo $m[1] . "\n" . $m[2];
}
在这里,(\d*\.?\d+)
会将数字放入第 1 组,(.*)
会将字符串的其余部分放入第 2 组。
输出:
0.5
An55.5Tik
我有一个形式为
的字符串$str = '0.5An55.5Tik';
并希望将标题编号分隔为
$number = '0.5';
$str = 'An55.5Tik'
我想到了
$array = preg_split('/(^[0-9.]+)(.*?)/i',$str);
但是正则表达式不起作用。
您可以使用
$results = preg_split('~^\d*\.?\d+\K~', $s);
参见regex demo。
图案详情
^
- 字符串开头\d*
- 0+ 位\.?
- 一个可选的.
\d+
- 1+ 位数\K
- 匹配重置运算符,丢弃到目前为止匹配的所有文本。
您还可以通过匹配将值分组:
preg_match('~^(\d*\.?\d+)(.*)~', $s, $m)
见another demo and a PHP demo:
$s = '0.5An55.5Tik';
if (preg_match('/^(\d*\.?\d+)(.*)/', $s, $m)) {
echo $m[1] . "\n" . $m[2];
}
在这里,(\d*\.?\d+)
会将数字放入第 1 组,(.*)
会将字符串的其余部分放入第 2 组。
输出:
0.5
An55.5Tik