0

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

   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”。

4

2 回答 2

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
于 2013-04-25T12:25:58.547 回答
0
/($search\S+)/

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

于 2013-04-25T12:26:49.210 回答