在Perl中获取字符串中的尾部斜杠数

baa*_*a2w 0 regex perl

在Perl中有一种方法可以在给定的字符串中获得大量的斜杠,理想情况是在一行中吗?例如,如果字符串是abc\\\,它将返回3.

我知道如何在多行上完成它,但我正在寻找一种允许我内联的解决方案,例如在if语句条件下.

谢谢!

cho*_*oba 5

perlop:

在列表上下文中匹配

如果未使用"/ g"选项,则列表上下文中的"m //"将返回一个列表,该列表由模式中括号匹配的子表达式组成,即($ 1,$ 2,$ 3 ...)

我们可以通过强制列表上下文(...)[0],它将返回它的第一个元素,即$1.

$string = 'abc\\\\\\';
print "yes\n" if 3 == length(($string =~ /(\\+)$/)[0]);
Run Code Online (Sandbox Code Playgroud)

或者,以防止警告

print "yes\n" if 3 == (length(($string =~ /(\\+)$/)[0]) // 0); # 5.10+
Run Code Online (Sandbox Code Playgroud)

但是,如果你知道如何做到这一点的多条线路,只是包装您的解决方案,你就大功告成了:

print "yes\n" if 3 == do {
    my $count = 0;
    my $char = q();
    $count++ while '\\' eq ($char = chop $string);
    $string .= $char . ('\\' x $count);
    $count
};
Run Code Online (Sandbox Code Playgroud)