Регулярное выражение php preg_replace

NickDev

Новичок
Как составить регулярное выражение на php preg_replace для решения такой проблемы: есть текст, в котором потерялись переходы на новую строку и в результате слова слиплись. необходимо слипшиеся слова разделить новой строкой '\n'.

Например есть текст:

Авто характеристикиКоробка передач: РучнаяПривод: ПереднийКоличество: 5Цвет: БелыйТопливо: Дизель

Его нужно преобразовать в:

Авто характеристики
Коробка передач: Ручная
Привод: Передний
Количество: 5
Цвет: Белый
Топливо: Дизель
 

riff

Новичок
Шито на живую нитку
PHP:
$text = 'Авто характеристикиКоробка передач: РучнаяПривод: ПереднийКоличество: 5Цвет: БелыйТопливо: Дизель';
$text = preg_replace('~[А-Я][^:А-Я]+:\s[А-Я0-9][^А-Я]*~u', "\n".'$0', $text);
echo "<pre>$text</pre>";
 

NickDev

Новичок
Шито на живую нитку
PHP:
$text = 'Авто характеристикиКоробка передач: РучнаяПривод: ПереднийКоличество: 5Цвет: БелыйТопливо: Дизель';
$text = preg_replace('~[А-Я][^:А-Я]+:\s[А-Я0-9][^А-Я]*~u', "\n".'$0', $text);
echo "<pre>$text</pre>";
немного не то, так как, например выражение:

"ТестПример Напряжение: 0.5VВес и аббревиатура (КА)"

заменяет на

"ТестПример
Напряжение: 0.5VВес и аббревиатура (КА)"

а нужно на

"Тест
Пример Напряжение: 0.5V
Вес и аббревиатура (КА)"
 

hell0w0rd

Продвинутый новичок
Оплачивай работу специалиста, раз не то. Тебе совет дали, при том, что ты даже не показал как попробовал. Бери регуляру и модифицируй.
 

riff

Новичок
Собственно ответ выше, от себя лишь хочу добавить:
Авто характеристикиКоробка передач: РучнаяПривод: ПереднийКоличество: 5Цвет: БелыйТопливо: Дизель
на 99% процентов был уверен, что это не окончательный вариант
ТестПример Напряжение: 0.5VВес и аббревиатура (КА)
у тебя практически нет шансов разрулить одной регуляркой твою кашу.
Короче, ищи однозначные зацепки в строках и разрывай по ним, возможно даже не за один проход.
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
у тебя практически нет шансов разрулить одной регуляркой твою кашу.
Кстати, ТС, если у тебя есть какая-то замудренная логика - всегда есть preg_replace_callback, где можно разрулить что хочешь ровно так, как ты этого хочешь.
 
Сверху