|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitry Smolin 2:5020/949 28 Sep 2002 03:10:30 To : All Subject : Литерал в регекспе --------------------------------------------------------------------------------
Once, 27 Sep 2002 19:56, Andrey Sapozhnikov wrote to Dmitry Smolin:
DS>>> Как конец строки $ понимается только в конце регекса.
AC>> Hе только. Чай, не греп.
DS>> Hу хорошо, только в "возможном" конце регекса. :) (что-нибудь вроде
DS>> /\d+$|\w+\s+\d+/) Или есть еще какие-то случаи, в которых $
DS>> понимается как конец строки, не находясь при этом в конце выражения?
AS> Мало того, "концов" может быть много. См. опцию m для регулярных
AS> выражений в perldoc perlop.
Hет, ну что вы (Андрей, Артем, Юрий) прям, в один голос. :) Знаю я про /m,
знаю. Только ведь другое это совсем. /m разрешает совпадение ^|$ с
началом|концом строки в любом месте скаляра (если там есть перевод строки) а не
только в его начале или конце.
Пример:
my $str = <<'EOL';
123
456
789
EOL
$str =~ /(\d+)$/; # совпадение - 789
$str =~ /(\d+)$/m; # совпадение - 123
$str =~ /(\d+)$(\d+)/m; # совпадения _не будет_
$str =~ /(\d+)$^(\d+)/m; # и так - тоже не будет
Впрочем, еще один пример (помимо конструкции выбора) я таки придумал:
$str =~ /(\d+)$(?=\n\d)/m;
Я где-то не прав?
Take care.
--- skanking to the rhythm of the music by my side
* Origin: Play your skank music - yeah, play it all night (2:5020/949)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/208523d94e967.html, оценка из 5, голосов 10
|