我被要求在perl中写一个正则表达式,用于a的序列,然后是相同数量的b 正则表达式也让我很困惑。请帮忙
答案 0 :(得分:1)
这是一个粗略的方法。
my $str = 'cabccaabbccabb';
while ($str =~ m/(a+)(b+)/g and length $1 == length $2)
{
print "match: $1, $2\n";
}
答案 1 :(得分:1)
假设perl的版本不太破旧:
/(?<ABPAIR>a(?&ABPAIR)?b)/
答案 2 :(得分:1)
字符串“aaabbbb”是否匹配,因为它包含“aaabbb”?这个答案假定为“否”。字符串“仅”包含相同数量的a和b吗?或者在任何字符串中匹配a和b?这个答案假定后者(同样,这个表达式不被认为是“常规”,但它是perl):
$str = "cdaaaabbbbef";
if ( $str =~ /(?>(a+)(?{$a_cnt = length($^N)})(b+))(?{$b_cnt = length($^N)})(??{ ( $a_cnt == $b_cnt ) ? qr(.?) : qr(^.)})/ ) {
print "Matches! [$1][$2]\n";
}
答案 3 :(得分:0)
您将无法使用单个正则表达式执行此操作。你需要一个表达式来首先计算a的数量,然后将其合并到另一个匹配相同数量的b的表达式中。