我有以下字符串:01SOMECOMPANY
我想以01 SOMECOMPANY
. 我如何使用正则表达式来做到这一点?
问问题
153 次
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 回答