首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl与句子中的确切值匹配

Perl与句子中的确切值匹配
EN

Stack Overflow用户
提问于 2015-06-21 05:17:36
回答 1查看 464关注 0票数 0

如果在句子中找到了精确的匹配值,我想打印出来。

代码语言:javascript
运行
复制
if (index($sentence, $value ) != -1) { $logger->debug("DEBUG: $value found"); }

我试过把^$值放进去,但它不起作用。

实际上,它是有效的,但是在要匹配的单词是句子中一个单词的子串的场景中失败了。例如:如果值是abc,脚本也会考虑单词BabcDabcabcf,因为它在任何地方都能找到abc

例如:句子是“我很高兴Babc”。脚本将在找到abc时考虑它。我希望只有当它找到准确的单词abc时,它才会进入诊断打印,这个词应该在“我很高兴的abc”中找到。

EN

Stack Overflow用户

回答已采纳

发布于 2015-06-21 05:34:37

如果您想要一个准确的单词匹配,index不是使用的合适工具。但是,您可能需要一个正则表达式,因为它是Perl、TMTOWTDI --实现它的方法不止一种。

代码语言:javascript
运行
复制
#!/usr/bin/env perl
use strict;
use warnings;

my $value = "abc";
my @sentences = ("I am happy Babc", "I am happy abc");

print "Index method\n";
for my $sentence (@sentences)
{
    print "Found [$value] in [$sentence]\n" if (index($sentence, $value) != -1);
}

print "Regex method\n";
my $rx = qr/\b\Q$value\E\b/;
for my $sentence (@sentences)
{
    print "Found [$value] in [$sentence]\n" if ($sentence =~ $rx);
}

当运行时,这会产生:

代码语言:javascript
运行
复制
Index method
Found [abc] in [I am happy Babc]
Found [abc] in [I am happy abc]
Regex method
Found [abc] in [I am happy abc]

这假设Perl的单词边界概念与您想要的匹配。除非你对一个词的构成有严格的要求(例如,请参阅博罗丁评论 ),否则它至少是适度的。

请注意,这在概念上类似于MCVE (如何创建一个最小、完整和可验证的示例?)或SSCCE (简短的,完整的,正确的例子) -两个名称和相同想法的链接。由于几个原因,代码略大于最小值,但不太大(将其压缩到最小会降低代码的可读性)。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30961505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档