正则表达式:如果字母与数字相邻,则添加空格


Regex: Add space if letter is adjacent to a number

我使用的是PHP,但不太擅长正则表达式。我需要一个可以在字母或数字相邻时添加空格的preg_replace。

这些是方案:

mystreet12 -> mystreet 12
mystreet 38B -> mystreet 38 B
mystreet16c -> mystreet 16 c
my street8 -> my street 8

谢谢。

您可以使用环顾来匹配这样的位置,如下所示:

preg_replace('/(?<=[a-z])(?='d)|(?<='d)(?=[a-z])/i', ' ', $str);

根据您定义"字母"的方式,您可能需要调整[a-z]

需要环顾四周才能使其与以下字符串正常工作:

0a1b2c3

没有解决方案会失败的地方。

像这样:

preg_replace("/([a-z]+)([0-9]+)/i","''1 ''2", $subject);

应该让你走得更远:)

使用 POSIX 类实现可移植性:

preg_replace("/([[:alpha:]])([[:digit:]])/", "''1 ''2", $subject);

获取第一个转换。

preg_replace("/([[:digit:]])([[:alpha:]])/", "''1 ''2", $subject);

获取第二个。