FINDSTR 中的正则表达式和文字表达式有什么区别?

FINDSTR 中的正则表达式和文字表达式有什么区别?

/R和有什么区别/C

FINDSTR [options] [/F:file] [/C:string] [/G:file]
        [/D:DirList] [/A:color] [/OFF[LINE]] [string(s)] [pathname(s)]

/C:string   Use string as a literal search string.
/R          Use string as a regular expression.

Q:\>dir
 Volume in drive Q is New Volume
 Volume Serial Number is 3AB5-2465

 Directory of Q:\

16-10-2014  09:34             3,072 keyspaceword.exe
16-10-2014  09:34             3,072 keyword.main1.xml
16-10-2014  09:34             3,072 keyword.main2.jpeg
16-10-2014  09:34             3,072 keyword.main3.exe
16-10-2014  09:34             3,072 keywordandmore.exe
16-10-2014  09:34             3,072 somethingkeyword.exe
24-09-2014  09:35    <SYMLINKD>     symlink1 [Q:\IIM\NOEXTNS]
               6 File(s)         18,432 bytes
               1 Dir(s)   7,180,222,464 bytes free

Q:\>dir | findstr /c:keyword
16-10-2014  09:34             3,072 keyword.main1.xml
16-10-2014  09:34             3,072 keyword.main2.jpeg
16-10-2014  09:34             3,072 keyword.main3.exe
16-10-2014  09:34             3,072 keywordandmore.exe
16-10-2014  09:34             3,072 somethingkeyword.exe

Q:\>dir | findstr /r /c:keyword
16-10-2014  09:34             3,072 keyword.main1.xml
16-10-2014  09:34             3,072 keyword.main2.jpeg
16-10-2014  09:34             3,072 keyword.main3.exe
16-10-2014  09:34             3,072 keywordandmore.exe
16-10-2014  09:34             3,072 somethingkeyword.exe

我以为我只会得到 3 个带有 /c:keyword 的文件(因为 keywordandmore.exe , somethingkeyword.exe )不是关键字的文字匹配,对吗?

有人能举个例子来说明一下两者的区别吗?我搜索过这里但我仍然不完全确定我的理解是否正确。


我认为我已经发现了差异,但我仍然无法解释为什么会发生这种情况? 那么我可能需要转义的其他元字符呢?

Q:\>dir | findstr /r /c:keyword.
16-10-2014  09:34             3,072 keyword.main1.xml
16-10-2014  09:34             3,072 keyword.main2.jpeg
16-10-2014  09:34             3,072 keyword.main3.exe
16-10-2014  09:34             3,072 keywordandmore.exe
16-10-2014  09:34             3,072 somethingkeyword.exe

Q:\>dir | findstr /c:keyword.
16-10-2014  09:34             3,072 keyword.main1.xml
16-10-2014  09:34             3,072 keyword.main2.jpeg
16-10-2014  09:34             3,072 keyword.main3.exe
16-10-2014  09:34             3,072 somethingkeyword.exe

答案1

在正则表达式中,.匹配任意字符。

因此,搜索模式与文件名keyword.匹配,这就是造成差异的原因。keywordakeywordandmore.exe

有关正则表达式的更多信息,请参阅这里

相关内容