-1

我被要求在 perl 中为 a 的序列编写一个正则表达式,然后是相等数量的 b 的正则表达式,这也让我感到困惑。请帮忙

4

4 回答 4

1

这是一个粗略的方法。

my $str = 'cabccaabbccabb';

while ($str =~ m/(a+)(b+)/g and length $1 == length $2)
{
    print "match: $1, $2\n";
}
于 2013-10-25T20:02:09.587 回答
1

字符串 "aaabbbb" 是否应该匹配,因为它包含 "aaabbb" ?这个答案假设“否”。字符串“only”是否应该包含相等数量的 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";
}
于 2013-10-25T23:40:59.203 回答
1

假设 perl 的版本不太陈旧:

/(?<ABPAIR>a(?&ABPAIR)?b)/
于 2013-10-25T20:08:15.240 回答
0

您将无法使用单个正则表达式来做到这一点。您需要一个表达式来首先计算 a 的数量,然后将其合并到另一个匹配相同数量 b 的表达式中。

于 2013-10-25T19:58:14.340 回答