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

5

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

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

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

Благодарю.

Ваш Ответ

3   ответа
2

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

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

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

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

6

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

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

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

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

0a1b2c3

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

Отлично спасибо. John
Не работает, если число рядом с символом отрицательно.
@SayanBhattacharyya есть отрицательные номера улиц? Если вы хотите, чтобы эта функция была тривиальной, добавить- где это необходимо. Просто замените все\dс[-\d].
3

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

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

Неустранимая ошибка: вызов неопределенной функции preg_replace_all () John
Не будет работать с1a.

Похожие вопросы