Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1494281
  • 博文数量: 226
  • 博客积分: 3997
  • 博客等级: 少校
  • 技术积分: 2369
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-19 17:26
个人简介

Never save something for a special occasion. Every day in your life is a special occasion.

文章分类

全部博文(226)

文章存档

2018年(5)

2017年(11)

2016年(1)

2015年(17)

2014年(14)

2013年(30)

2012年(5)

2011年(52)

2010年(107)

分类:

2010-08-01 18:39:08

dos→findstr正则表达式
 
findstr /?
 
帮助文档,正则表达式 片断
.  任意字符
*  表示重复次数为任意。注意,不是通配任意个数字符
[] 集合中任意一个
[^]排除集合中任意一个 // 注:os-xp 情况不同。
-  区间
^  行首
$  行尾
\<... 词首
...\> 词尾

示例
1.findstr . file.txt 或 findstr "." file.txt
从文件file.txt中查找任意字符,不包括空字符或空行
 
2.findstr .* file.txt 或 findstr ".*" file.txt
任意字符,包括空行和空字符
 
3.findstr "[set]" file.txt
集[set]中任意字符
集还可以表示为区间
[0-9]、[a-zA-Z]、[a-fl-z] 等
 
4.findstr "M[abc][hig]Y" file.txt
匹配 MahY , MbiY, MahY等
 
5. ^和$符号的应用
^ 表示行首,"^step"仅匹配 "step hello world"中的第一个单词
$ 表示行尾,"step$"仅匹配 "hello world step"中最后一个单词
 
9.finstr "[^0-9]" file.txt
查找一非数字字符,如果是纯数字的字符串或者行便过滤掉。
例如 2323423423 不匹配,345hh888 匹配。
 
10.findstr "[^a-z]" file.txt
同上
例如 sdlfjlkjlksjdklfjlskdf 不匹配,sdfksjdkf99999 匹配
 
注:附录 os-xp findstr测试
 
11.*号的作用
前面已经说过了 ".*"表示搜索的条件是任意字符,*号在findstr正则表达式中的作用不是任何字符,而是表示左侧字符或者表达式的重复次数为零次或者多次。
 
12.findstr "^[0-9]*$" file.txt
这个是匹配找到的纯数字,例如 234234234234,如果是2133234kkjl234就被过滤掉了。
Findstr "^[a-z]*$" file.txt
这个是匹配找到的纯字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被过滤掉了
如果在搜索条件里没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第一个字符也只有这一个字符,因为有行首和行尾的限制,"^[0-9]$"第一个字符如果是数字就匹配,如果不是就过滤掉,如果字符串是 9 就匹配,如果是98或者9j之类的就不可以了。
 
13. "\<…\>"这个表达式的作用
这个表示精确查找一个字符串,\表示字的结束位置
echo hello world computer|findstr "\"
精确查找单词,成功
echo hello worldcomputer|findstr "\"
精确查找单词,失败
echo hello worldcomputer|findstr ".*computer\>"
词尾匹配,成功
 
 
 

 
附录
os-xp findstr测试
 
C:\>echo ba | findstr "[^ab]"
ba
C:\>echo ba | findstr "[^ab]"
ba
C:\>echo ba| findstr "[^ab]"
 
结论:
XP上findstr的正则表达式 [^abc] 表示排除整行内容(含空格)为abc的行。
注意,这里不是指 “行中不包含集合[abc]中任意字符”。
 
 
阅读(1481) | 评论(0) | 转发(0) |
0

上一篇:scanf错误

下一篇:FINDSTR正则表达式小结

给主人留下些什么吧!~~