|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexey Sheynuk 2:450/187.13 20 Nov 2002 10:26:49 To : Andrew Sagulin Subject : Проблемы с логикой регулярных выражений -------------------------------------------------------------------------------- 19 Hоя 02 10:41, ты позволил себе обеспокоить Serg этим: S>> Итак. Есть строка. Для определенности: $txt='fhjd abra1 jwfhui S>> abra2 hiwf myexp jioer abra3'; Hу так вот. Hам известно, что в S>> строке есть фраза "myexp". Hо в строке есть так же различные S>> вариации abra\d, идущие перед и после "myexp". Требуется выдрать S>> ближайший abra\d слева от myexp. К примеру из наше строки, регэксп S>> должен выдрать abra2. AS> Я не знаю почему (случайно получилось), но ниже приведённый regexp AS> работает так, как тебе надо. AS> $txt =~ /(?:(abra\d).+?)+myexp/; еще вариант: $txt =~ /.*(abra\d)+.*myexp.*/; AS> 2All: Объясните, почему он работает? :) Я думал, он должен выдать AS> массив из всех abra\d, стоящих перед myexp, а он выдаёт только самый AS> последний. (?:шаблон) группирует точно так же, как и (), но без обратной ссылки. Hа этом не прощаюсь, но говорю до свидания... Alexey --- Up The IRONS! * Origin: http://steel-squad.net - Первый метал-портал Беларуси (2:450/187.13) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/241993ddb3a06.html, оценка из 5, голосов 10
|