|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Bisyarin 2:463/544.222 12 Nov 2006 19:41:26 To : Artem Chuprina Subject : Regexp: модификатор m -------------------------------------------------------------------------------- 11 Nov 06 16:13, you wrote to me: AC> From: Artem Chuprina <ran+news@ran.pp.ru> AC> Artem Bisyarin -> All @ Fri, 10 Nov 2006 22:51:04 +0300: AB>> Что-то я не пойму. Почитав документацию, сложилось впечатление, AB>> что при использовании модификатора m можно использовать ^ и $ в AB>> регулярном выражении сколько угодно раз (поскольку ^$ может AB>> находить совпадения в любой части строки). Hо вот это не AB>> работает: AB>> print AB>> "first_string\nsecond_string\n"=~/(^first_string$)(^second_string AB>> $)/m; AB>> То есть, я ожидал захвата сразу двух строк, но этого не AB>> происходит. Hо, если вместо первого $ поставить "\n" то AB>> работает. По видимому, я не правильно пользуюсь якорем $. Вопрос AB>> - как же его правильно использовать, чтоб в приведённом выше AB>> примере захватить сразу две строки, используя только ^$(без AB>> явного указания символов новой строки в регексп-е)? AC> Почти правильно. Между парами скобок вставь .*. У тебя нечем AC> поматчить \n, который между строками. А если тебе важно, чтобы это AC> были именно соседние строки, то так на один \n и надо проверять. Я понял где меня заглючило. Мне на тот момент казалось, что при использовании модификатора "m" символы новой строки проигнорируются, а границы строк всё равно можно будет поматчить, но заблуждался. Вот это, в общем, самое то: "first_string\nsecond_string\n"=~/(^first_string$).*.(^second_string$)/sm; Спасибо за совет. Artem --- GoldED+/BSD 1.1.5 * Origin: ----> Default GoldED Origin <---- (2:463/544.222) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/392545575638.html, оценка из 5, голосов 10
|