我正在匹配一個字符串形式A < => B!C < => D!E < => F ...並且希望對字母進行檢查。基本上我想根據我定義的散列來判斷這些字母是否在類中。我不得不做以下的正則表達式,然後通過匹配的字符串循環的理念:在Perl中的正則表達式匹配計數
$a =~ /(.)<=>(.)/g;
但我想不出來告訴變量有多少$ 1,$ 2相匹配。我怎麼知道有多少人?另外,有沒有更好的方法來做到這一點?我正在使用Perl 5.8.8。
我正在匹配一個字符串形式A < => B!C < => D!E < => F ...並且希望對字母進行檢查。基本上我想根據我定義的散列來判斷這些字母是否在類中。我不得不做以下的正則表達式,然後通過匹配的字符串循環的理念:在Perl中的正則表達式匹配計數
$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
是的,但我的循環是什麼邊界?我可以把字符串的長度和分開,但我希望有一個更一般的解決方案。 – Kat
如果您使用適當類型的循環,則不需要邊界,如工具答案所示。 – Amber