0

我有以下字符串:01SOMECOMPANY我想以01 SOMECOMPANY. 我如何使用正则表达式来做到这一点?

4

4 回答 4

2

正则表达式将是“/^([0-9]+)(.+)/”,替换为“\1 \2”或“$1 $2”。不记得 PHP 是使用 \1 还是 $1 来引用正则表达式中的第一个匹配项。

于 2013-04-17T19:20:58.497 回答
0

正则表达式可能看起来像这样:

  (\d+)([a-zA-Z]+)

然后,您可以在替换表达式中使用捕获组,它们之间有一个空格。

  $1 $2
于 2013-04-17T19:21:41.280 回答
0

我使用preg_split函数来分隔字符串的组成部分。然后加入元素,使用空格作为分隔符:

<?php
$str = '01string44str';
$elements = preg_split('/(\d+)/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$output = implode(" ", $elements);
print $output;

这打印:

01 弦 44 弦

更有效的解决方案是使用带有反向引用的preg_replace函数:

<?php
$str = '01string44str';
$output = preg_replace('/(\d+)/', '$1 ', $str);
print $output;

这会打印出一些不同的结果:

01 字符串 44 字符串

不确定,“字符串”和“44”之间是否需要一个空格。但是,对于您的字符串 '01SOMECOMPANY',它可以正常工作。

于 2013-04-17T19:26:17.743 回答
0

下面的例子将为您解释。

$string = "01SOMECOMPANY";
preg_match('/^([0-9]*)(.*)/i', $string, $matches);
echo $matches[1]." ".$matches[2];

结果:
01 SOMECOMPANY

于 2013-04-17T19:29:07.880 回答