前言:最近写了一个bat用于快速编译swf至目标目录,想利用FINDSTR命令通过匹配目标目录名称,匹配数量大概600多个,发现匹配耗时比较久,大概花费10余秒,因此还是放弃字符匹配,乖乖拼出全称来定位目录。感觉bat的运行效率是比较低的。

稍加搜索,看到一些帖子也印证了我的想法。bat不适合做太复杂的事。还是分享下FINDSTR命令的用法。

批处理运行效率讨论帖汇总

FINDSTR正则表达式小结

什么是正则表达式?
百度 http://baike.baidu.com/view/94238.htm?fr=ala0_1#4_5

findstr的正则表达式是用来定义字符串样式的
它的元字符有 .、*、[-]、\、\<、\>、^、$等。
参与运算的对象主要是字母、数字、符号、还有汉字。而且该运算具有特殊的规则。

findstr中正则表达式用法规则小结

● 行首行尾规则 
如"^rem"、"bat$" 表示从行首匹配rem、从行尾匹配bat。
○ 行首行尾可以是英文、数字,还可以是汉字。

● 字符集规则 
如 [}>]、[abc]、[123]、[a-zA-Z]、[0-9] 表示行中含有集里的任意字符即匹配。
注意,这是集合,不是串。如:"[news]"不能理解为查找含有news单词的行,只能是定位含有n e w s 4个字母之一的行。
○ 需要说明的是,该字符集里的集元素可以是字母和数字和一般的半角字符。
如可以是 : } { , . ] [等,但双引号"不被识别,不能是汉字(汉字不是ASCII码)。
○ "[.*]" 集合中出现的 .*,作为普通字符,没有特殊含意。
○ 可以组合使用,如 [aef1-3x-z]表示该字符集是aef和数字1-3和字母x-z等元素的并集.
○ "[ah][1-3]" 表示 2 个字符。

● 减法规则

[^abc] 参照帮助信息,本该理解为,匹配不含abc三个字母的行。但在xp系统下,却不被正确解释。
○ "[^echo.]" 实际表示在查找结果中去除为"echo."字符串的行。

● 通配符和重复符规则
即 .*
○ 通配符 . 代表任何一个字符,包括字母、数字、半角符号还有空格,但不包括空行。
○ 重复符 * 代表前面字母的重复(重复次数从0到多次)。如 .* [a-z]* [0-9]* [abc]* a*

● 单词前缀后缀定位规则 
"\<cal" 和="" "ed\="">"
该单词可以是英文单词和数字,该单词规则不适用于汉字。符号 \ 为转义符。
○ "\<cal"表示查找文本中,英文单词以cal为前缀的单词 如="" call="" called="" calling="" calculation<br="">○ "ed\>" 查找文本中,英文单词以ed为后缀的单词 如 called added changed
○ "\<call\>" 用来精确查找单词。这里用来精确查找单词call ,那么calling called 就不被匹配。
○ "\<3389\>" 表示精确查找3389 那么33898、233895就不被匹配。

● 关键字规则 "string"
该string可以是英文单词、汉字、数字、符号以及上面规则的组合.

能够正确解读汉字的只有行首行尾规则,和该规则。

● 转义符 \ 
把表达式中的特殊字符(元字符)转化为普通字符。但不能对双引号" 和大于号 > 转义。
常见写法
\.、\*、\\、\[、\]、\-、\\<   
如 "\.bat" 把通配符转化为普通的句点,这里表示匹配".bat"结尾的批处理文件名。也可以写成 "[.]bat"


示例1:

dir /a /b /s d:\ | findstr /i "\.bat$"
○ 查找行尾是".bat"字符串的行,并显示出来。
\是转义符号,使句点.不再是通配符,而是文件拓展名中的点。用于表达式 的 关键字查询,在这里是列举后缀是bat的批处理文件。

dir /a /b /s d:\ | findstr /i ".bat$"
○ 同效于 dir /a /b /s d:\ | findstr /i "bat$" 
// 不,有一字符之差

findstr /r /i /n Google d:\bat\wenben.txt | more
○ 使用 Strings 和 [Drive:][Path] FileName [...] 在命令字符串中,所有 findstr 命令行选项必须在 Strings 和 [Drive:][Path] FileName [...] 之前。

findstr /r /i /n /x /c:"Google news" d:\bat\htm\meinv.txt | more
○ /x 打印完全匹配的行.查找只有“Google news”单词的行。
如果是带空格的字符串 ,要用双引号引起来,而且要用参数/C:"string1 string2"

findstr . 2.txt 或 Findstr "." 2.txt
○ 从文件2.txt中查找任意字符,不包括空字符或空行。
空字符不是空格。.可以匹配空格
// F:>echo hi pz|findstr "...pz"
// hi pz
// F:>echo hi pz|findstr "....pz"
//

findstr /i /n [g-k] d:\bat\htm\meinv.txt | more
○ 表达式中[g-k],可以是字母a-z 或者数字0-9,不能是汉字。而且要顺序排列,由小到大。


示例2
下面的命令实现提取网页的特定行

Findstr /r /i /n %string% %htmfile%

%htmfile% 表示网页文件(文本文件)。
%string% 表示 关键字或字符串表达式。

"

FINDSTR正则表达式小结相关推荐

  1. [转]FINDSTR正则表达式小结

    前言:最近写了一个bat用于快速编译swf至目标目录,想利用FINDSTR命令通过匹配目标目录名称,匹配数量大概600多个,发现匹配耗时比较久,大概花费10余秒,因此还是放弃字符匹配,乖乖拼出全称来定 ...

  2. js php 正则差别,正则表达式(括号)、[中括号]、{大括号}的区别小结,正则表达式小结...

    正则表达式(括号).[中括号].{大括号}的区别小结,正则表达式小结 正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*) ...

  3. Python 正则表达式小结1

    [声明]:本文参考了白夜黑雨老师的网页讲解.如有侵权,请与我联系!!! Python 正则表达式小结1 1. 正则表达式验证 2. 特殊元字符及含义 3 匹配某种字符类型 4. 正则表达式举例 大收藏 ...

  4. javascript正则表达式小结

    总结了一下javascript正则表达式的内容.表格形式,一目了然.辅以Example图形解释. 一.元字符 二.反义字符 三.转义字符 四.重复匹配 五.分组/捕获 六.贪婪与惰性 七.修饰符 ex ...

  5. C# 正则表达式小结

    只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~ ...

  6. 正则表达式 小结 经典解决方案[1]

    目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子. 正则表达 ...

  7. 【转】C#正则表达式小结

    只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~ ...

  8. [转]C#正则表达式小结

    地址: http://www.cnblogs.com/maxianghui/archive/2006/05/11/397747.html 确实不错,感谢这位朋友 只能输入数字:"^[0-9] ...

  9. mysql查询操作及正则表达式小结

    怎么说呢,用markdown编辑好的文本,无法用在博客园中,不知道怎么处理. 一.排序 1.按多个列排序 使用逗号隔开,如果指定方向则紧挨着要排序的列名 对于多个列的排序,先按照前一个排序然后在前一个 ...

最新文章

  1. AttributeError: module ‘matplotlib’ has no attribute ‘artist’
  2. 【转载】Python 深入浅出支持向量机(SVM)算法
  3. 104. Maximum Depth of Binary Tree 二叉树的最大深度
  4. java实现的小程序_Java实现 微信小程序 + 消息推送
  5. oracle数据库查看size,[oracle] 查看oracle数据库表空间使用率,定位数据size较大对象...
  6. 要闻君说:微软拿下五角大楼超大云服务订单!恒大玩儿起了充电桩and新能源汽车?苹果公司要放弃自动驾驶业务?...
  7. python 渐变色柱形图_Python利用imshow制作自定义渐变填充柱状图(colorbar)
  8. 搭载骁龙865+量产一亿像素!小米MIX4今年无望了
  9. Java Web 开发详解
  10. 欧拉定理、费马小定理及其拓展应用
  11. 安卓自定义列表dialog
  12. Who is in me? -- Freeware on Windows
  13. 记一款价廉物美的小型DAC+耳放----Dr.DAC
  14. 应用内moniter
  15. Mac如何输入特殊符号
  16. 搭建深度学习后台服务器
  17. MATLAB DCT变换原理和源码
  18. 2022,程序员应该如何找工作
  19. 斗战神服务器正在维护6,斗战神什么时候服务器数据互通_斗战神1月6日、8日服务器数据互通公告_快吧游戏...
  20. %3c php 连接数据库,深究.htaccess的原理,和用户利用其恶意篡改服务器配值导致的深层安全问题...

热门文章

  1. 母婴产品如何做做品牌营销?母婴品牌如何在知乎上做营销?
  2. Comnnect oracle,vendor: Oracle CorporationJava home: /Library/Javalulu遭富商邀约
  3. create-react-app 结合百度地图和Echarts3.0迁徙图
  4. SSM足球运动员训练计划管理系统的设计与实现 毕业设计-附源码281444
  5. 【Python】逻辑回归变量的显著性分析
  6. 基于Python3多进程(多线程)+多协程的数据并发处理模版
  7. MYSQL查询语句2——子查询
  8. java display属性_显示和隐藏(display属性)none或block
  9. JDB附加调试线上JAVA程序
  10. 透明桌面便签(Desk Note)