您的位置:首页 > 其它

详解正则表达式应用

2012-06-20 01:15 405 查看
正则表达式分为两类[/b]
basic reprxp 基本正则表达式;
extended reprxp 扩展正则表达式;
基本正则表达式和扩展正则表达式支持的元字符不一样
基本正则表达式[/b]
grep命令默认仅支持(basic reprxp)基本正则表达式,其全称为Galobl research Regular Expression and Printing(全局搜索正则表达式)根据我们所指定的匹配条件去逐行的搜索某一个文件的文本,并且将匹配到我们指定条件的的文本显示出来,有时候简写为regexp,里边包含了很多的元字符(表示的不是本身的意思,而是某种通配的或者是次数匹配的等等额外的其它意义),正则表达式是由元字符组成的式子,里面包含的不只是元字符。
grep[/b]的用法[/b] grep [options] ‘PATTERN’ file1......[/b]
grep[/b]的元字符:[/b]
[/b]. 匹配任意单个字符;
例:



* 匹配其前面的字符任意次;
例:编辑文本test,添加5行内容,分别为abc,abbc,a,ac,accccb;然
后查找包含ac、abc、abbc的行;



.* 匹配任意长度的任意字符,贪婪模式;
例如:grep “r.*t” /etc/passwd



[] 指定范围内的任意单个字符;
举例:编辑test文本,内容包括abc、abbc、a、ac、accccb、Abc、
AaCd、Cat、ccccat、1234567、23456、18976下面我们来查找
包含a、b或c任意字母范围内的行;



查找包含a或A的行;



查找包含cat或Cat的行;



[^] 表示取反;仍以test文本为例;
查找包含除a、b、c字母范围外的行;



其中grep命令仍可以用到文件名通配中的下列选项;
[:digit:] 表示所有数字;
[:lower:] 表示所有小写字母;
[:upper:] 表示所有大写字母;
[:space:] 表示所有的空白字符;
[:alpha:] 表示所有的字母;
[:alnum:] 表示所有的字母和数字;
[:punct:] 表示所有的标点符号;
[0-9]
例:编辑test文本文件,增添内容1abc24567、23sdcv2、3dc341bc,456.908!
然后查找含有数字的行:



也可以这样查询:



查找含有小写字母的行:



也可以这样查询:



查找含有大写字母的行:



也可以这样查询:



查找含有空白字符的行:



查找含有字母的行:



也可以这样查询:



查找含有字母和数字的行;



也可以这样查询:



查找含有标点符号的行:



查找不包含纯数字的行:



X\{m,n\} 表示X字母至少出现m次,至多出现n次;
例:



X\{m,\} 表示X字母至少出现m次;
例:



X\{0,n\} 表示X字母至多出现n次;
例:



X\{m\} 表示X字母精确出现m次;
例:



\? 匹配其前面的字符0次或1次;
例:ab\?c:可以匹配abc,abbc,ac



锚定符:[/b]
^ 行首锚定符;
例:



$ 行尾锚定符;
例:



^$ 锚定空白行;
例:



\< 锚定词首,也可以用\b代替,放在字符前面;
例:





\> 锚定词尾,也可以用\b代替,放在字符后面;
例:





分组和后向引用:[/b]
\(\) 对字符分组引用;
\1,\2 后向引用 \1表示引用第一组括号中匹配到字符;\2表示引用第二组括号
中匹配到字符;例:编辑test文本,在test中添加三行,分别为:He love his
lover.和She like her liker.和He love his liker.
查找文本中love或like并且同一句中有与其相应加r的句子;



grep[/b]选项[/b]:
-v 对结果取反;
例:编辑test文本,并向文本中添加如下内容:



然后找出test文本中非空白行;



-i 忽略字母大小写;
例:



-o 仅显示匹配到的字串;
例:



-q 不输出任何信息;
例:



-A n 匹配的行的下面多显示一行;
例:



-B n 匹配的行的上面多显示一行;
例:



-C n 匹配的行的上下各多显示一行;
例:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式 grep Egrep