[英]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.