|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexey Mahotkin 2:5020/400 29 Apr 2004 23:23:13 To : "Dmitry Y. Labutin" Subject : Re: Регулярное выражение -------------------------------------------------------------------------------- >>>>> "DYL" == Dmitry Y Labutin <dmitry@incub.ru> writes: DYL> Приветствую. Подскажите, как написать регулярное выражение, которое DYL> бы выделяло строки содержащие подстроку "qwe", но не содержащие DYL> подстроку "ewq". Т.е. как одним регэкспом записать это: if ($str =~ DYL> /qwe/ && $str !~ /ewq/) { что-то там; DYL> } AC> Можно. Через negative look-ahead. Что-то типа /(?!^.*ewq).*qwe/ DYL> А как быть, если переменная многострочная? DYL> $q = "qwerty\nytrewq\n"; if ($q =~ /(?!^.*ewq).*qwe/) { print "1"; DYL> } DYL> Как сделать, чтобы "1" не печаталось? а зачем тебе вообще такое понадобилось? negative lookahead недостаточно. он выделяет, например, строки "ewq qwe" и "ewqwe". явно формулировка условия по-человечески и есть лучшее представление. Разве что если только ты не пытаешься поглубже изучить регексы, да и то их вычислительную мощность сильно преувеличивают. --alexm --- ifmail v.2.15dev5.3 * Origin: tyranny (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3865f73bd09b.html, оценка из 5, голосов 10
|