正则表达式(Regular Expression)是用于对字符串操作的一种逻辑公式,用事先定义好的一些特殊符号以及这些特定字符的组合,组成一个规则模式,这个模式用来表达对字符串的逻辑过滤。正则表达式有两种一种是基本的正则表达式另一种是扩展正则表达式。
一.基本正则表达式使用的元字符及其意义
1. ”.“ :表示匹配任意单个字符
2. ”*“:表示重复匹配其前出现的字符任意次—>例如 a*b 则匹配 b ab aab aaab等
3.”?“:表示重复匹配其前出现的字符0次或1次—>例如 a?b 则匹配 b ab
4.”^“:表示匹配行首,例如^a 则表示匹配以a开头的行
5.”$”:表示匹配行尾,例如b$则表示匹配以b结尾的行
这些元字符通过特定的组合用于表示一些特定的意义
例如:”.*“则表示匹配任意长度的任意字符 ——>a.*b
”^$“则表示匹配空白行,用于显示文件中的空白行
6.“\<”:锚定符表示锚定词首 \<a.* 表示以a开头后面跟了任意字符的单词
7.”\>”:锚定符表示锚定词尾 b\> 表示锚定以b结尾的单词
词首和词尾锚定可以一起使用表示精确锚定一个单词 –> \<a.*b\>表示以a开头以b结尾中间跟了任意字符的单词
8.“\{m,n\}”精确次数匹配,表示匹配其前出现的字符至少m次至多n次,a\{2,5\}表示匹配a至少2次至多5次 如aa、aaa、aaaa、aaaaa
”\{m,\}“表示至少匹配m次
”\{0,n\}“表示至多匹配n次
”\{m\}“表示只能匹配m次
9.”\(pattern\)“:表示分组把pattern作为一个整体 \(ab\) 则表示ab作为一个整体,它还有一个特殊的用法即前向引用,例如\(ab\).*\1表示其前为ab其后也为ab中间跟了任意字符
---> abab、adcab、abccab….
二. grep简介
grep (Global search Regular Expression and Printting)叫全局搜索正则表达式和打印,用来搜索匹配文本行。grep支持正则表达式来进行模式匹配。
grep:支持基本的正则表达式
egrep:支持扩展正则表达式
fgrep:不支持正则表达式,搜索字符串的速度快
1.grep名利的用法
grep [options] ‘pattern’ FILE
--color=auto 表示用高亮颜色来显示匹配到的字符串
-o 只显示匹配到的字符或字符串
-v 显示未匹配到的行
-i 匹配文本是忽略字符的大小写
-A n :表示显示匹配到的行以及其下n行
-B n:表示显示匹配到的行和其上n行
-C n:表示显示匹配到的行和其上n行及其下n行
-E=egrep 表示至此扩展正则表达式
三.Linux中一些常用的字符集
1.[0-9] 表示0-9中任意一个数字
2.[a-b] 表示小写字母a-b中的任意一个字母
3.[A-B] 表示大写字母A-B中的任意一个字母,例如[a-bA-B]表示所有大小写字母中的任意一个字母
4.”^”表示取反的意思,例如[^0-9]表示出了数字其他所有字符,[^a-b]表示出了所有小写字母以外的其他字符,[^A-B]表示出了所有大写字母以外的其他所有字符
字符集合的其他特殊表示方法
[:digit:] 相当于0-9 使用[[:digit:]] —> [0-9]
[:lower:] 相当于a-z 使用[[:lower:]] –> [a-z]
[:upper:] 相当于A-Z
[:punct:] 所有的标点符号
[:alpha:] 所有的小写和大写字母 a-bA-B
[:alnum:] 所有的字母和数字
[:space:] 表示空格
原文:http://joyshao.blog.51cto.com/2948586/1368946