Windows批处理文件正则表达式

时间:2017-01-04 04:27:48

标签: regex batch-file findstr

我需要在.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] *"

1 个答案:

答案 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?