簡體   English   中英

Perl中的正則表達式匹配計數

[英]Regular expression match count in Perl

我正在匹配A <=> B!C <=> D!E <=> F ...形式的字符串,並希望對字母進行檢查。 基本上我想根據我定義的哈希來判斷字母是否在類中。 我有想法做以下正則表達式然后循環匹配的字符串:

$a =~ /(.)<=>(.)/g;

但我無法弄清楚有多少$ 1,$ 2變量匹配。 我怎么知道有多少? 另外,有更好的方法嗎? 我使用的是Perl 5.8.8。

您需要'countof'運算符來計算匹配數:

my $count = () = $string =~ /(.)<=>(.)/g;

用數組替換空列表將保留匹配:

my @matches = $string =~ /(.)<=>(.)/g;

這提供了獲得$count另一種方法:

my $count = @matches;   # scalar @matches works too

使用while循環

use warnings;
use strict;

my %letters = map { $_ => 1 } qw(A C F);
my $s = 'A<=>B!C<=>D!E<=>F';
while ($s =~ /(.)<=>(.)/g) {
    print "$1\n" if exists $letters{$1};
    print "$2\n" if exists $letters{$2};    
}

__END__

A
C
F

創建一個變量並在每次循環時遞增它?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM