LINUX.ORG.RU

Книга с верблюдом.

echo 'q[Bla bla number=42 bla];' | perl -nle 'm/number=(\d+)/; print $1'

anonymous
()
my $str=q[Bla bla number=42 bla];
my ($number) = $str =~ /(\d+)/;

perldoc perlretut уже читали?

AITap ★★★★★
()

По соплям лупить каждого, кто хочет парсить нерегулярный язык регэкспами.

anonymous
()

Как с помощью регэкспа выдрать значение number? Т.е. 42?

/42/

i-rinat ★★★★★
()

Начал изучать regexp`ы

но ведь это самое начало!

ткните в хороший ман по регэкспам в перле

кэмелбук, соответствующая глава. Или perldoc perlre и дальше по SEE ALSO.

P.S.

my $text = qq(Bla bla number=32 bla string="hello world");
my ($num, $str) = $text =~ /(?=.*number=(\d+))(?=.*string="(.*)")/;
print "$num, $str";

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

$str=q[Bla bla number=42 bla];
$str=~/(?<=number=)\d\d/;
print $&;

#  42
anonymous
()

Как с помощью регэкспа выдрать значение number?

Сразу видно, что ты герой. Мой сын, первоклассник с такой задачей справится без подсказок.

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

пятизвездочный герой!!! Может это человек-отель? чи людина-отель, как правильно, поправьте, есличо.

anonymous
()

в твоем случае, очевидно, что-то вроде

my($num) = $str =~ /\bnumber\s*=\s*(\d+)\b/ or die '...';

для освоения регэкспов достаточно внимательно почитать perlretut и perlre — именно в таком порядке

chg ★★★★★
()

Оффтоп : Кто-то вообще использует заглядывания вперед и как писать коменты не отвечая на что либо =)

koi8-r
()
Ответ на: комментарий от koi8-r

Зачем там заглядывание вперед, если ключевое, опорное слово находится сзади? Изобрази, что ты имеешь в виду, дабы не быть голословным.

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

кстати, про «or die» я поторопился. для проверки нужен defined, иначе чистый незамутненный 0 не пройдет валидацию

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

да, снова поторопился, все было правильно )))
Первый операнд or — scalar от пустого списка, а не $num

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

Кому то пригодились когда или где нибудь эти заглядывания вперед, не могу понять смысл существования этого фунционала

koi8-r
()
$ echo 'q[Bla bla number=42 bla]' |\
sed -rn 's/.*number=([0-9]+).*/\1/p'
42
emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.