我需要在.bat文件中实现以下要求。请有人帮忙。
变量中有一个字符串ABCD-1234 TEST SENTENCE
,例如 str 。现在我想检查字符串是否以格式[A-Z]*-[0-9] *
开头。
我怎样才能做到这一点?我使用FINDSTR
尝试了各种正则表达式,但无法获得所需的结果。
示例:
set str=ABCD-1234 TEST SENTENCE
echo %str% | findstr /r "^[A-Z]*-[0-9] *"
答案 0 :(得分:2)
我假设您正在寻找以1个或更多大写字母开头的字符串,后跟短划线,后跟1个或更多个数字,后跟空格。
如果字符串可能包含&
,<
,>
等有害字符,那么您确实应该使用延迟扩展。
FINDSTR正则表达式完全不标准。例如,[A-Z]
没有正确表示FINDSTR的大写字母,它还包括大多数小写字母,以及一些非英文字符。您必须明确列出所有大写字母。数字也是如此。
除非使用/C:"search"
选项,否则空格将被解释为搜索字符串分隔符。
setlocal enableDelayedExpansion
echo(!str!|findstr /rc:"^[ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]*-[0123456789][0123456789]* "
您应该查看What are the undocumented features and limitations of the Windows FINDSTR command?