Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с регулярным выражением 
:(
    Опции темы
dm9
Дата 14.1.2005, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Использую PCRE.

Как можно описать такую штуку: "любая строка, внутри которой не содержится подстрока 'qweqweqwe'"?

smile

PM MAIL ICQ   Вверх
Mal Hack
Дата 14.1.2005, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



(^qweqweqwe)
PM ICQ   Вверх
dm9
Дата 14.1.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Хм.

А можешь написать ф-цию для замены на "!" подстрок "12<что-то>34" строки "12qwe34 12rty34 12uio34". Условие замены - <что-то> не содержит строку "qwe" и не содержит пробелов.

То есть надо получить "12qwe34 ! !"
Добавлено @ 23:37
Точнее, не ф-цию, а рег. выражение.
PM MAIL ICQ   Вверх
Mal Hack
Дата 14.1.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код

<?php

$str = "12qwe34 12rty34 12uio34";
$str = preg_replace( "#(\d+[^qwe^\s]+?\d+)#U" , "!" , $str );
print $str;

?>

PM ICQ   Вверх
dm9
Дата 15.1.2005, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Mal Hack, твоё выражение не заменит строку 12ewq34.

Мне надо именно строку qwe, а не три символа q, w, e.
PM MAIL ICQ   Вверх
Mal Hack
Дата 15.1.2005, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код

<?php

function repl( $full , $str )
 {
  if( $str != "qwe" )
   {  return "!";  }
  else
   {  return $full;  }
 }

$str = "12qwe34 12rty34 12ewq34";

$str = preg_replace( "#\d+([^\d]+)\d+#e" , "repl( \"\\0\" , \"\\1\" )" , $str );

print $str;

?>

PM ICQ   Вверх
dm9
Дата 15.1.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Понял, спасибо.
PM MAIL ICQ   Вверх
Mal Hack
Дата 15.1.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Стоп. Наврал...
"#\d+([^\d]+)\d+#e"
Надо:
"#\d+([^\d^\s]+)\d+#e"

Это сообщение отредактировал(а) Mal Hack - 15.1.2005, 00:26
PM ICQ   Вверх
dm9
Дата 15.1.2005, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Не важно, я понял. Я думал, можно без ф-ции обойтись как-то.
PM MAIL ICQ   Вверх
Mal Hack
Дата 15.1.2005, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Вот так... "#\d+(\w+?)\d+#e"
Сорри smile
Че-то глючу уже...

PM ICQ   Вверх
dm9
Дата 15.1.2005, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



В смысле, без доп. ф-ции repl.

Это сообщение отредактировал(а) dm9 - 15.1.2005, 00:29
PM MAIL ICQ   Вверх
Mal Hack
Дата 15.1.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(dm9 @ 15.1.2005, 00:28)
В смысле, без доп. ф-ции repl.

не получится, т.к. ^ отрицание не применимо к (), а только к классам [], а это - набор, а не последовательность.
PM ICQ   Вверх
Secandr
Дата 15.1.2005, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



а что если просто проверять есть ли эта строка?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
dm9
Дата 15.1.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Не понимаю. Если применительно к вышеуказанному примеру, какой предложишь код?
PM MAIL ICQ   Вверх
Secandr
Дата 15.1.2005, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Цитата(dm9 @ 15.1.2005, 00:22)
Как можно описать такую штуку: "любая строка, внутри которой не содержится подстрока 'qweqweqwe'"?

Код

foreach($string as $v){
if (stripos($v,'qweqweqwe')===false){print $v."\n";}
}



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0735 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.