窗口批处理文件正则表达式



我有一个以下要求,需要在.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 个或多个大写字母开头的字符串,后跟破折号,后跟 1 个或多个数字,后跟一个空格。

如果字符串可能包含&<>等有害字符,那么您确实应该使用延迟扩展。

FINDSTR正则表达式是完全非标准的。例如,[A-Z]不能正确表示 FINDSTR 的大写字母,它还包括大多数小写字母以及一些非英语字符。必须显式列出所有大写字母。数字也是如此。

除非使用 /C:"search" 选项,否则空格被解释为搜索字符串分隔符。

setlocal enableDelayedExpansion
echo(!str!|findstr /rc:"^[ABCDEFGHIJKLMNOPQRSTUVWXYZ][ABCDEFGHIJKLMNOPQRSTUVWXYZ]*-[0123456789][0123456789]* "

您应该看看Windows FINDSTR命令的未记录的功能和限制是什么?

最新更新