PHP正则表达式与字符串分开的数字

问题描述:

我有以下字符串:01SOMECOMPANY,我想以01 SOMECOMPANY结束。我如何使用正则表达式来做到这一点?PHP正则表达式与字符串分开的数字

+0

你尝试过什么呢? –

+0

你不需要regex在'index = 2'处插入一个空格。更好的解释和更多的用例会帮助你的事业。 – Artless

一个正则表达式可以是这个样子:

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

然后,您可以使用捕获组在更换表情,与他们之间的空间。

$1 $2 

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

+0

这两个工作,你可以在手册中找到这个:http://php.net/preg_replace - 请参阅*替换*参数。 – hakre

我用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 STR

更有效的解决方案将使用preg_replace官能团与后面参照:

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

这打印一个littl Ë不同的结果:

01 string44海峡

不知道,你是否需要 '串' 和 '44' 之间的空间。对于你的字符串'01SOMECOMPANY'它可以正常工作。

以下示例将向您解释。

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

结果:
01 SOMECOMPANY