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?
我有以下要求需要在 .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?