如何在 Perl 中使用 grep 检查字符串是不是存在 [重复]

Posted

技术标签:

【中文标题】如何在 Perl 中使用 grep 检查字符串是不是存在 [重复]【英文标题】:How to check string is present or not using grep in Perl [duplicate]如何在 Perl 中使用 grep 检查字符串是否存在 [重复] 【发布时间】:2020-01-05 08:30:00 【问题描述】:

我需要在 if 条件下使用 grep 来查找字符串中是否存在值。我尝试了一些代码,但这是不正确的

这适用于运行 Perl 的窗口。

$string ="This is a test string";
$val ="test";
if( grep /$val/i, $string)
print "found";
else
print "not found";

我希望找到输出

【问题讨论】:

我需要使用 grep 而不是索引来查找它 你为什么特别想使用grep来达到这个目的? @GMB 因为我需要检查具有多个值的字符串。我会简单点,假设我有一个数组 @val=("demo","test","gone"); .所以我需要检查字符串中是否存在这些值,还需要知道它与哪个值匹配。 【参考方案1】:

grep 在过滤列表时很有用。字符串不是 Perl 中的列表,您应该只是匹配项或 index。

if (-1 != index $string, $val) 

if ($string =~ /$val/i) 

您的语法错误。将ifelse 一起使用时,大括号不是可选的。

if (grep /$val/i, $string) 
    print "found";
 else 
    print "not found";

【讨论】:

如果我有多个字符串值要匹配怎么办。例如,$val 是一个数组。如何检查数组值是否与字符串匹配 @Sahal,这就是 grep 有用的地方。 @ikegami 你能展示一些演示代码吗? @Sahal,根据documentation,其中一种用法是grep EXPR, LIST,而“LIST”表示“在列表上下文中返回零个或多个标量的表达式”。 @a就是这样的表达方式。

以上是关于如何在 Perl 中使用 grep 检查字符串是不是存在 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Perl 中检查多个变量是不是为空

如何在 Perl 中使用 POE::Component::IRC::State 检查用户是不是通过 NickServ 的身份验证?

如何检查 Perl 标量变量是不是已初始化?

如何检查我是不是在 Perl 中下载了整个文件?

如何检查 Net::Telnet 会话是不是仍在 Perl 中?

如何 grep/perl/awk 重叠正则表达式