Windows 批处理文件正则表达式

Windows Batch File Regular Expression

我有以下要求需要在 .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 个或多个数字,再后跟 space。

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

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

除非使用 /C:"search" 选项,否则 space 被解释为搜索字符串定界符。

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

你应该看看What are the undocumented features and limitations of the Windows FINDSTR command?