在Perl中有一种方法可以在给定的字符串中获得大量的斜杠,理想情况是在一行中吗?例如,如果字符串是abc\\\,它将返回3.
我知道如何在多行上完成它,但我正在寻找一种允许我内联的解决方案,例如在if语句条件下.
谢谢!
在列表上下文中匹配
如果未使用"/ 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)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |