如何在 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