Cmd findstr文件夹名称是否与正则表达式匹配

时间:2018-02-01 08:32:18

标签: batch-file command-line cmd command-prompt

我有一个非常简单的问题。在批处理文件中,我有以下内容:

echo %Axx% | >nul findstr /r /c:"^A[0-9]{6}" || ( echo "true" ) pause >nul

%Axx%的格式为A123456。但它并没有回应真实的"。 我没有使用正确的正则表达式,还是其他的东西?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

findstr的正则表达式功能非常有限。

尝试“^ A [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]”

findstr /b /r /c:"A[0-9][0-9][0-9][0-9][0-9][0-9]"

答案 1 :(得分:1)

&arrayNum[0][0]表达式中没有计数{} - 在命令提示符窗口中键入findstr并查看非常有限的可能性。

要匹配一定数量的字符或表达式,您需要重复相应的搜索表达式,如下所示:

findstr /?

如果要完全匹配整个字符串,则需要附加echo(%Axx%| > nul findstr /R /C:"^A[0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]$" && echo true > nul pause 。此外,您必须删除管道符号$前面的 SPACE ,因为它也会以其他方式回显。

我在搜索表达式中使用|而不是[0123456789],因为前者仅匹配数字,但后者可能匹配某些特殊字符,例如[0-9]²另外,取决于当前的代码页。

请注意,³/B与搜索字符串中的第一个字符相同,因此请勿同时说明这两个字符。

最后,我相信你确实希望在^与搜索字符串匹配时回显true。这就是我将%Axx%替换为||的原因。如果我错了并且您想要倒置行为,请保留&&