我有一个非常简单的问题。在批处理文件中,我有以下内容:
echo %Axx% | >nul findstr /r /c:"^A[0-9]{6}" || ( echo "true" )
pause >nul
%Axx%
的格式为A123456
。但它并没有回应真实的"。
我没有使用正确的正则表达式,还是其他的东西?任何帮助表示赞赏。
答案 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%
替换为||
的原因。如果我错了并且您想要倒置行为,请保留&&
。