Количество совпадений
У wikipedia есть лозунг - “все есть статья”. Чем больше работаешь с perl, тем больше понимаешь, что неофициальный лозунг языка может звучать “все есть регулярное выражение”. Вот пример как подсчитать количество найденных вхождений в выражение. Скажем сколько букв “о” в традиционном “hello world”
#!/usr/bin/perl $text = 'hello world'; $text =~ s/[^o]//igs; print length($text)."\n"; # 2
Зацените красоту кода.
November 8th, 2007 at 7:05 pm
Забавно, сразу бы до этого не додумался
February 7th, 2009 at 9:12 pm
#!/usr/bin/perl
$text = ‘hello world’;
while ($text =~ /[o]/ig)
{
$i++;
}
print “$i\n”;
# 2
February 7th, 2009 at 9:16 pm
#!/usr/bin/perl
$text = ‘hello world’;
$i++ while $text =~ /o/ig;
print “$i\n”;
November 3rd, 2009 at 11:52 am
извращенцы
perl -le ‘$str = “hello world”; print $str=~ s|o||g;’
если оригинальная строка не должна модифицироваться, делаем так:
$str=~ s|o|o|g;’
ну и еще вариант, схожий с предложенным выше:
perl -le ‘print length join “”, “hello world”=~/o/g;’
November 3rd, 2009 at 11:56 am
И тут Остапа понесло © :))
вариант для “Краткость, сестра таланта.”:
perl -le ‘print scalar @{["hello world"=~/o/g]}’