LINUX.ORG.RU

Вопрос про регулярные выражения в перле


0

0

Вопрос заключается в следующем: есть строка s = 'a xxxx c xxxxx a xxxx a xxxcvxxx'; а найти надо часть этой строки, которая начинается с последней 'a' - и до конца строки. s =~ /(a.*$)/; - так под образец подходит вся строка, а как правильно ?

anonymous

слушай, а обязательно использовать =~ ?
вот то, что сразу пришло в голову:
split(/ a /,$s);
$_[$#_] - то что нужно

если чё ещё в голову придет в ближайшее время - напишу

anonymous
()

еще можно
$s=~/(.*a)/;
print $';
#$'-все после совпадения ($'-до) etc....

или
$s=~s/(^.*a)//;
print $s;

Anonymous ★★★★★
()
Ответ на: комментарий от justme

2 justme:
круто...
слушай , а логику этого regexp'a объясни плиз!!!!

anonymous
()

2 justme: Вот это как раз то что было нужно, спасибо !

anonymous
()

Логика такая, что после последней буквы 'a' могут идти только буквы, отличные от 'a'. Ну и кончается всё, естественно, концом строки (долларом). Если всё ещё непонятно, то скажите, я попробую подробнее объяснить.

justme
()
Ответ на: комментарий от justme

нет я основу знаю...
что есть [^a] ? - признание a началом строки?

anonymous
()

[^a]* = не a любое число раз

Anonymous ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.