|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 25 Nov 2002 19:43:59 To : Alexey Sheynuk Subject : Re: Проблемы с логикой регулярных выражений -------------------------------------------------------------------------------- Здравствуй, Alexey Sheynuk. 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>>>> Я не знаю почему (случайно получилось), но ниже приведённый AS>>>> regexp работает так, как тебе надо. $txt =~ AS>>>> /(?:(abra\d).+?)+myexp/; AS>>> еще вариант: AS>>> $txt =~ /.*(abra\d)+.*myexp.*/; AC>> Этот не сработает. Съест первое abra\d вместо последнего. AS> Странно, почему у меня работает? AS> Доктор, я что-то неправильно делаю??? AS> === Hачало файла === AS> #!/usr/bin/perl AS> $txt = 'fhjd abra1 jwfhui abra2 hiwf myexp jioer abra3'; AS> $txt =~ /.*(abra\d)+.*myexp.*/; AS> print "$1\n"; AS> === Конец файла === AS> === Результат === AS> abra2 AS> === /Результат === AS> Hа этом не прощаюсь, но говорю до свидания... Пардон, слона не заметил... Мнда, ларчик, похоже, гораздо проще открывался, и даже с /g можно сделать без напряга. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/144548ba179a2.html, оценка из 5, голосов 10
|