带正则表达式的命令行 findstr

Command Line findstr with a regular expression

我需要搜索目录和子目录中的所有文件以匹配 reg exp 中的任何数字。基本上在我们的代码中,我们有基于特定项目编号的代码块。我需要按项目编号找到这些块。这个正则表达式可以满足我的需要,但我无法在命令行中使用它

([^0-9]|^)(56|14|2)([^0-9]|$)

我在 https://www.freeformatter.com/regex-tester.html 上针对这个字符串 "If session.projid = 56 and then again 14 or something else"

进行了测试

我正在命令行尝试这个

findstr /s /R /C:"([^0-9]|^)(56|14|2)([^0-9]|$)" *.*

但是没有结果,我知道应该有。在此先感谢您对此提供的任何帮助。

参见these docs

FINDSTR does not support alternation with the pipe character (|) multiple Regular Expressions can be separated with spaces, just the same as separating multiple words (assuming you have not specified a literal search with /C) but this might not be useful if the regex itself contains spaces.

在您的情况下,您可以对每个数字使用 \< / \> 字边界,并且您可以在 space:

之后指定所有备选方案
findstr /s /r "\<56\> \<14\> \<2\>" *.*