加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何编写一个perl if语句来测试使用正则表达式找到字符串的次数

发布时间:2020-12-16 06:08:35 所属栏目:大数据 来源:网络整理
导读:我正在尝试编写一个包含if语句的perl脚本,我希望这个if语句检查在保存的字符串中是否通过正则表达式找到了一定数量的字符串.如果可能的话,我想在一行中做到这一点,想象如下: $saved_string = "This abc is my abc test abc";if( #something_to_denote_count
我正在尝试编写一个包含if语句的perl脚本,我希望这个if语句检查在保存的字符串中是否通过正则表达式找到了一定数量的字符串.如果可能的话,我想在一行中做到这一点,想象如下:

$saved_string = "This abc is my abc test abc";
if( #something_to_denote_counting ($saved_string =~ /abc/) == 3)
{
    print "abc was found in the saved string exactly 3 times";
}
else
{
    print "abc wasn't found exactly 3 times";
}

…但我不知道我需要做什么来if检查正则表达式匹配的次数.有人可以告诉我这是否可能?谢谢!

解决方法

if ( 3 == ( () = $saved_string =~ /abc/g ) ) {
    print "abc was found in the saved string exactly 3 times";
}

要获得计数,您需要在列表上下文中使用/ g.所以你可以这样做:

@matches = $saved_string =~ /abc/g;
if ( @matches == 3 ) {

但perl提供了一些帮助,使其更容易;列表赋值放置在标量上下文中(例如由==提供),返回赋值右侧的元素计数.这使代码如下:

while ( my ($key,$value) = each %hash ) {

所以你可以这样做:

if ( 3 == ( @matches = $saved_string =~ /abc/g ) ) {

但是甚至不需要使用数组;分配到一个空列表就足够了(并且只要你需要在列表上下文中执行代码但只获得结果计数,它就成了一个习惯用法).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读