• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[码海拾贝之Perl]在字符串数组中查找特定的字符串是否存在

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言

检索一个字符串是否存在于一个数组中, 最主要的想法应该就是对数组进行循环, 逐个推断数组的每一个元素值和给定的值是否相等。

(在Java语言还能够把数组转成 List , 在 list 中直接有 contains 方法能够使用)

看一段简单的代码:

my @arr2 = qw(str1 str2 str3 str4);
foreach(@arr2)
{
	if($_ eq "str2")
    {
    	print "str2 exist in Array!\n";
    	last;
    }
}

这段代码看起来挺简洁,也不难理解。 可是在Perl 在还有第二种方法。仅仅须要一行代码就能达成这种效果。 就是使用 grep 函数


grep 简单介绍

grep 的全称是 Global Regular Expression Print, 翻译一下是全局正則表達式版本号。


假设使用过Linux命令的话对这个词应该不陌生。


看一个常见的linux 命令

ps -ef | grep java
ps -ef 是查看全部的进程

加上 grep java 的意思是 搜索系统进程中包括 java 名字的进程。

也就是说在linux 中, grep 能使用正則表達式搜索文本。 并把匹配的行打印出来。



触类旁通, 在Perl 中  grep 函数的作用也相似


Perl grep 函数

在Perl 中 , grep 函数的调用方式有两种:

方式1. grep BLOCK LIST

方式2. grep EXPT, LIST

BLOCK: 表示一个Code 块, 通经常使用 {}表示;

EXPR 表示一个表达式。 一般是正則表達式

LIST: 要匹配的列表

grep函数对列表里的每一个元素进行BLOCK或EXPR匹配,它遍历列表。并暂时设置元素为$_。

在列表上下文里,grep返回匹配命中的全部元素,结果也是个列表。

在标量上下文里,grep返回匹配命中的元素个数。


比較一下以下的代码:

my @arr3 = qw(str1 str2 str3 str4 str11);
my $str = "str1";
my $result =grep /^$str/, @arr3;
my @result2 =grep /^$str/, @arr3;
print "grep result=$result \n";            # 返回个数
print "grep result2=@result2 \n";       # 返回元素

这里在数组中匹配以str1 开头的字符串元素

(提示 在正则表达是中:^-- 表示开头  , $ 表示结尾 )

所以要精确匹配到某个字符串, 使用例如以下方式:

my $result =grep /^$str$/, @arr3;

到此 , 标题所给出的议题也就达成了。



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
perl-cgi-form发布时间:2022-07-22
下一篇:
perl下使用非root用户安装模块发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap