Регулярное выражение: добавить пробел, если буква находится рядом с числом

Я использую PHP и не очень хорошо с регулярным выражением. Мне нужен preg_replace, который может добавить пробел, если буква или цифра рядом.

Вот сценарии:

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

Благодарю.

Ответы на вопрос(3)

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

Получит первый переход.

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

получает второе.

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

Должен увести вас далеко :)

 14 июн. 2012 г., 00:41
Не будет работать с1a.
 John14 июн. 2012 г., 00:42
Неустранимая ошибка: вызов неопределенной функции preg_replace_all ()

например, так:

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

В зависимости от того, как вы определяете «букву» Вы можете настроить[a-z].

Lookarounds необходимы для правильной работы со строками, такими как:

0a1b2c3

Где решения без провала.

 John14 июн. 2012 г., 00:44
Отлично спасибо.
 19 мар. 2017 г., 15:43
Не работает, если число рядом с символом отрицательно.
 19 мар. 2017 г., 22:56
@SayanBhattacharyya есть отрицательные номера улиц? Если вы хотите, чтобы эта функция была тривиальной, добавить- где это необходимо. Просто замените все\dс[-\d].

Ваш ответ на вопрос