[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】BAT批处理中支持这样的正则表达式吗?

本帖最后由 xiaolijian916 于 2021-7-19 19:19 编辑

需求是从输入的字符串中判断内容格式:
必须是单个字母(a-q)加上单个数字(1-3)组成(最多两位数)。

比如输入:A1,B2,Q2,则满足第一个条件执行第一个代码块。
如输入:A11,BBB222等不符合正则表达式进入第二个代码块。

如下写法是根据正则表达式定义的,但是匹配始终走的第二代码块,问题出在哪儿了哇。
  1. set /P INP= ^> 请输入命令(P):
  2. echo; %INP% | findstr /i  /r "^[A-Q]{1}[1-3]{1}$" >nul 2>&1 && (
  3. ECHO 匹配正确:%INP%
  4. goto dospause1
  5. ) || (
  6. ECHO 匹配不正确:%INP%
  7. goto dospause2
  8. )
复制代码

回复 21# qixiaobin0715


    写成多组,受教了。

TOP

本帖最后由 qixiaobin0715 于 2021-7-19 19:58 编辑

回复 13# xiaolijian916
简单的区间量词可进行模拟,比如模拟正则表达式^[A-Q]{0,2}[1-9]{1}$,可以这样:
  1. findstr /r "^[1-9]$ ^[A-Q][1-9]$ ^[A-Q][A-Q][1-9]$"
复制代码
1

评分人数

TOP

回复 19# newswan


    原来如此,不过对方需求是不安装三方工具完成功能。

TOP

回复 17# xiaolijian916


安装 msys2 很多都有了
https://www.msys2.org/

TOP

回复 15# newswan


    这里需求刚好简单的英文+数字字符。顺便了解bat里正则支持情况

TOP

回复 9# newswan


    这些命令需要安装三方工具吧。

TOP

回复 10# qixiaobin0715


    这倒是代码可读性维护性好些。

TOP

回复 13# xiaolijian916


    只支持 * ,连 ? 都不支持,所以很少用 findstr ,通常都 grep

TOP

回复 11# newswan


    我本机测试调用ps1命令比bat命令慢几十毫秒忽略不计了。

TOP

本帖最后由 xiaolijian916 于 2021-7-19 19:21 编辑

回复 12# newswan


    假如英文或数字字符个数不确定就傻眼了

TOP

回复 7# xiaolijian916


    不是无能为力,是很费力,一个一个加呗
  1. [A-Q][A-Q][1-9]
复制代码

TOP

总结下给以后来的朋友提供参考:
发现[echo;%INP%]与[echo:%INP%]写法都能正常执行
xiaolijian916 发表于 2021-7-19 18:58



    调用 powershell 很慢,进入 powershell 都要很多时间

TOP

回复 5# xiaolijian916

组合命令、管道命令及重定向命令混合使用时,逻辑要清楚,优先级别不一样。
使用判断语句更易理解。
两者到底哪个效率高,我现在也没搞清楚。

TOP

回复 7# xiaolijian916


    正则表达式 用 awk grep sed 比较好些

TOP

返回列表