我正在使用 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]
.
需要使用 Lookarounds 才能使其与以下字符串一起正常工作:
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);
获得第二个。