如何在perl中显示确切的搜索关键字

时间:2013-04-25 12:23:05

标签: regex perl

我正在使用正则表达式在目录中搜索关键字列表。这是我目前的代码:

   if (/$search/i) 
   {

        printf $out "%s\t%s\n",$File::Find::name,$1;       
   }

在上面的代码中,$1仅提供关键字词组。 但我想要整个关键字。

示例:我正在搜索“扫描”

当前输出:C:\ac\acfrd\file.sql SWEEP。 但该文件包含单词“SWEEP_ID”,我希望输出为“SWEEP_ID”,而不是“SWEEP”。

2 个答案:

答案 0 :(得分:5)

试试这个正则表达式:

/\b(\w*$search\w*)\b/i

它会将您的搜索字词和可选的相邻字符符号\w - 字母,数字等)捕获到$1中。捕获的字符序列由字边界\b - 标点符号,空格,字符串开头或结尾)包围。

上面的正则表达式允许在搜索词之前和之后添加其他单词符号。如果您只想在搜索字词之后允许其他符号(如示例所示),只需删除第一个\w*

/\b($search\w*)\b/i

如果您不想依赖Perl对"字符号"的定义,请将\w替换为您自己的字符类,例如(只允许字母和下划线):

/\b([_a-z]*$search[_a-z]*)\b/i

答案 1 :(得分:0)

/($search\S+)/

这可能有效,但您的问题并不清楚......