正则表达式就是处理字符串的方法,并且是以行为单位进行字符串处理的。通常在linux中,进行文字的"搜索/替换"工作。正则表达式只是一种处理字符串的标准表示方法,在linux中支持这种方法的工具有vi,sed,awk,grep等。
正则表达式的特殊字符:
Regular Expression字符 范例 含义
^(匹配行首) ^word 匹配以word开头的行
$(匹配行尾) word$ 匹配以word结尾的行
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
.(匹配任意一个字符) hel.o 匹配以hel开头,o结尾的长度为5的字符串
\(转义字符) \. 匹配字符.
*(匹配任意多个前一个字符) hello* 匹配hell,hello....hellooooo......
\{n,m\}(匹配n到m个前一个字符) hello\{1,3\} 匹配hello,helloo,hellooo。 特殊情况:\{n\}:匹配n个前一个字符。\{n,\}:匹配至少n个前一个字符
[](匹配字符集合中的一个) [a-zA-Z] 匹配a-z或A-Z中的一个字符
[^](匹配不是字符集合中的一个字符) [^a-zA-Z] 匹配不是a-z和A-Z的一个字符
另外有四个扩展的正则表达式特殊字符:
Regular Expression字符 范例 含义
+(匹配1个或以上个前一个字符) hello+ 匹配hello,helloo....
?(匹配0个或1个前一个字符) go?d 匹配gd或god
|(匹配数个字符串中的一个) god|good 匹配god或good
()(匹配用户组,一般与|合用) re(a|o|e)d 匹配read或reed或reod
需要说明的是()会进入子shell,并且(!)在正则表达式中不是特殊字符。
以常用的正则表达式程序工具grep来说,其全称是Global search Regular Expression and print out the line,即全局搜索正则表达式并打印出行。
其格式如下:grep -[option] '搜索字符串' 文件名
参数说明如下:
-a 在二进制文件中以,文本文件方式搜索数据
-c 只输出匹配的行的数量
-i 搜索时忽略大小写
-h 查询多文件时不显示文件名
-l 只列出符合匹配的文件名,而不输出匹配行
-n 显示所有匹配行并列出行号
-s 不显示不匹配或无匹配文本的错误信息
-v 显示不包含匹配文件的所有行
-w 匹配整词,忽略regular expression字符的特殊含义
-x 匹配整行,必须整行内容匹配
-r 递归搜索,不仅搜索该目录,还搜索子目录
-q 不输出任何结果,以退出状态表示搜索是否成功
-b 打印匹配行距文件首部的偏移量,以字节为单位
-o 与-b结合使用,打印匹配单词距文件首部的偏移量,也是以字节为单位
-E 支持扩展正则表达式,等价于egrep
-F 不支持正则表达式,按字面意思进行匹配,等价于fgrep
待续......
这里说明的挺详细:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html