在perl中写一个正则表达式,用于a的序列,后跟相同数量的b

时间:2013-10-25 19:51:41

标签: regex perl

我被要求在perl中写一个正则表达式,用于a的序列,然后是相同数量的b 正则表达式也让我很困惑。请帮忙

4 个答案:

答案 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的表达式中。