Количество совпадений

У wikipedia есть лозунг - “все есть статья”. Чем больше работаешь с perl, тем больше понимаешь, что неофициальный лозунг языка может звучать “все есть регулярное выражение”. Вот пример как подсчитать количество найденных вхождений в выражение. Скажем сколько букв “о” в традиционном “hello world”

#!/usr/bin/perl

$text = 'hello world';
$text =~ s/[^o]//igs;
print length($text)."\n";
# 2

Зацените красоту кода.

5 Responses to “Количество совпадений”

  1. TermiT Says:

    Забавно, сразу бы до этого не додумался :)

  2. Александр Says:

    #!/usr/bin/perl

    $text = ‘hello world’;
    while ($text =~ /[o]/ig)
    {
    $i++;
    }
    print “$i\n”;
    # 2

  3. Краткость, сестра таланта. Says:

    #!/usr/bin/perl
    $text = ‘hello world’;
    $i++ while $text =~ /o/ig;
    print “$i\n”;

  4. albatros Says:

    извращенцы :)

    perl -le ‘$str = “hello world”; print $str=~ s|o||g;’

    если оригинальная строка не должна модифицироваться, делаем так:
    $str=~ s|o|o|g;’

    ну и еще вариант, схожий с предложенным выше:
    perl -le ‘print length join “”, “hello world”=~/o/g;’

  5. albatros Says:

    И тут Остапа понесло © :))
    вариант для “Краткость, сестра таланта.”:
    perl -le ‘print scalar @{["hello world"=~/o/g]}’

Leave a Reply