[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
JetSuit
Всем привет , есть текст в одну строку вида - "Слово№1:слово№2 Слово№3:Слово№4 Слово№5:Слово№6 и т.д"
Задача в том чтобы отделить слова которые стоят перед ":" и после.
Как это лучше реализовать, помогите .




Спустя 23 минуты, 43 секунды (8.10.2010 - 11:54) DedMorozzz написал(а):
$a = "Слово№1:слово№2 Слово№3:Слово№4 Слово№5:Слово№6";
$a = preg_replace('#([А-я0-9№]+?):#u','!$1!:',$a);
$a = preg_replace('#: ([А-я0-9№]+)#u',':+$1+',$a);

echo $a;//!Слово№1!:+слово№2+ !Слово№3!:+Слово№4+ !Слово№5!:+Слово№6+

В квадратных скобках перечисли символы, которые могут быть в слове. Или просто укажи - все видимые символы.
ЗЫ: Тут - ": ([А-я", после двоеточия убери пробел. Форум в смайл преобразовывает

Спустя 33 минуты, 21 секунда (8.10.2010 - 12:27) JetSuit написал(а):
Спасибо сейчас попробую )

Спустя 39 секунд (8.10.2010 - 12:28) linker написал(а):
DedMorozzz
К сожалению так не будет работать.
Если грубо и нет дополнительных условий, то
$a = "Слово№1:слово№2 Слово№3:Слово№4 Слово№5:Слово№6";
$t = explode(' ', $a);
foreach($t as $v)
{
list($after, $before) = explode(':', $v);
echo 'До ' . $after . ' После ' . $before . '<br>';
}

Спустя 1 минута, 53 секунды (8.10.2010 - 12:30) DedMorozzz написал(а):
linker
таки будет. Результат работы распечатал.

Мона так ещё. О чём выше и сказал:
<?php

$a = "Слово№1:слово№2 Слово№3:Слово№4 Слово№5:Слово№6";
$a = preg_replace('#(\S+?):#u','!$1!:',$a);
$a = preg_replace('#:(\S+)#u',':+$1+',$a);

echo $a;//!Слово№1!:+слово№2+ !Слово№3!:+Слово№4+ !Слово№5!:+Слово№6+
т.е. под словом все видимые символы подразумеваются. В данном случае - лучше использовать именно краткую запись. Но это скорее исключение, чем правило.

Спустя 2 минуты, 13 секунд (8.10.2010 - 12:32) waldicom написал(а):
Оффтоп для дедмороза
Цитата
ЗЫ: Тут - ": ([А-я", после двоеточия убери пробел. Форум в смайл преобразовывает

Чтобы не преобразовывал, нужно убрать галку "Включить смайлики?" при отправке или редактировании сообщения

Спустя 1 минута, 40 секунд (8.10.2010 - 12:34) DedMorozzz написал(а):
waldicom, хм, а веть и вправду. Помниться с месяц назад задавался таким вопросом и не нашел такой кнопки... Походу так смотрел smile.gif

Спустя 5 часов, 17 минут, 32 секунды (8.10.2010 - 17:51) arvitaly написал(а):
Цитата
таки будет. Результат работы распечатал.

Какая то ересь а не код

Спустя 3 минуты, 28 секунд (8.10.2010 - 17:55) DedMorozzz написал(а):
arvitaly, забыл добавить "Потому что: ... "
Кстати о птичках, я тестировал такую версию:
<?php

$a = "Слово№1 :слово№2 Слово№3:Слово№4 Слово№5:Слово№6";
$a = preg_replace('#(\S+?)( ?:)#u','!$1!$2',$a);
$a = preg_replace('#:(\S+)#u',':+$1+',$a);

echo $a;//!Слово№1!:+слово№2+ !Слово№3!:+Слово№4+ !Слово№5!:+Слово№6+
Но учитывая потребности ТС сократил и упростил оной. (в смысле тестил с вероятностью пробела и автоподстановка в замене).

Спустя 29 минут, 37 секунд (8.10.2010 - 18:24) arvitaly написал(а):
Потому что не выполняет своей задачи
Цитата
Задача в том чтобы отделить слова которые стоят перед ":" и после.


Решением будет либо 2 массива, либо как у линкера распечатка

Спустя 6 минут, 1 секунда (8.10.2010 - 18:30) DedMorozzz написал(а):
Смотря что вкладывать в понятие "отделить". Если было бы разобрать в 2 массива - то задача звучала бы "выбрать", как минимум.
Отделить и выбрать в 2 массива - не одно и то же.

Спустя 34 минуты, 36 секунд (8.10.2010 - 19:05) arvitaly написал(а):
Цитата
Смотря что вкладывать в понятие "отделить". Если было бы разобрать в 2 массива - то задача звучала бы "выбрать", как минимум.
Отделить и выбрать в 2 массива - не одно и то же.

Но у вас (кстати я сейчас запустил ваш код - он не сработал) то вообще просто к исходной строке добавляются дополнительные разделители: абсолютно непонятно зачем. Видимо чтобы следующим вопросом ТС было, как разделить
Цитата
//!Слово№1!:+слово№2+ !Слово№3!:+Слово№4+ !Слово№5!:+Слово№6+


на....

Спустя 1 час, 49 минут, 21 секунда (8.10.2010 - 20:54) DedMorozzz написал(а):
arvitaly, насчёт не сработало - сохрани в утф-8, без бом. И тогда сработает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.