需要一个正则表达式

时间:2011-11-14 21:37:50

标签: php regex

我有一个街道地址,例如“1234 West 23rd Street”。我想吹出第一个街道号码,并在每个号码之间加上空格,如下:“1 2 3 4 West 23rd Street”。

使用像"([0-9])"之类的简单表达式并将其替换为"$1 "几乎可以正常工作,除非我希望它在第一个空格后停止并且不匹配,根据上面的示例,“23”在“ 23日“也是。

3 个答案:

答案 0 :(得分:2)

你需要PHP帮助你,你不能单独使用Regex(Regex不会做这样的条件,它不是为它设计的)。

匹配:([0-9]+)\s,然后得到你得到的结果(如果有多个,可能只使用第一个结果),在每个字符之间添加你想要的空格。

答案 1 :(得分:0)

所以你想只匹配空格后的第一个数字和空格。您可以使用^字符匹配行的开头。所以你的正则表达式看起来像这样:

^(\d+)

\d匹配任何数字。

答案 2 :(得分:0)

这可以使用preg_replacepattern modifier 'e',其中:

  

在替换字符串中正常替换反向引用,将其评估为PHP代码,并使用结果替换搜索字符串

$str = '1234 West 23rd Street';
preg_replace('/^([[:digit:]]+)/e', "implode(' ', str_split('$1'))", $str);
// returns '1 2 3 4 West 23rd St'