正则表达式:
- 1、文本查找工具:grep、egrep、fgrep。egrep即grep -E 命令。该些查找工具可以查找到正则表达式所匹配的字符串,并将其所在的行显示出来。
grep [options] PATTERN file1,file2……,如果在PATTERN中使用了元字符的话,则PATTERN要用引号引起来。
grep
--color={auto|always}
-v :匹配到的PATTERN不显示,未匹配到的显示;
-i :字母不区分大小写;
-r:在指定路径下递归搜索每一个文件去匹配PATTERN;
-B #:匹配到的字符串的前#行也显示出来;
-A #:匹配到的字符串的后#行也显示出来;
-C #:匹配到的字符串的前后#行都显示出来;
-o :只显示匹配到的串本身而非串所在的行;
-E :支持扩展的正则表达式,即相当于egrep;
扩展正则表达式相对于正则表达式有如下几点改变:
1)次数匹配变成:{m,n}表示至少m次,至多n次;
2)分组引用变成:();
3)支持“|”来表示或者;
eg:
ab|cd表示或者的是ab和cd;
^ab|cd表示匹配到以ab开头的行和包含有cd的行;
^ab|^cd(即^(ab|cd))表示匹配到以ab开头的行和以cd开头的行;
4)支持“+”来表示次数匹配,匹配1到n次;
# man 7 regex:查找关于正则表达式说明的文档;
# export GREP_COLOR='01;32' :将使用grep搜索到的PATTERN显示为粗体(01)绿色(32),";"前表示字体的格式,“;”后表示字体的颜色。
^PATTERN :行首锚定符;
PATTERN$:行尾锚定符;
‘\<PATTERN’:词首锚定符;
‘PATTERN\>’:词尾锚定符;
‘\<PATTERN\>’:单词锚定符;
‘^$’:匹配空白行;
[:space:]:匹配空白字符;
[:alpha:]:表示字母范围匹配,必须与表示次数和做范围匹配的元字符结合使用;
.:匹配任意单个字符,但其不能匹配换行符;
*:匹配此前的字符0到任意次;
eg:
a*b 1)ab,aab,b,aaaaaab等都符合;
2)acb,cb,db,c,d等都不符合;
.*:匹配任意长度的任意字符,其工作在贪婪模式下,尽可能长的匹配符合模式的字符串;
?:匹配此前的字符0次或1次;
‘PATTERN\{m,n\}’:匹配此前的字符至少m次,至多n次;
eg:
1)匹配此前字符0-10次或者至多10次:PATTERN\{0,10\}
2) 匹配此前字符至少10次:PATTERN\{10,\}
3) 匹配此前字符10次:PATTERN\{10\}
[]:匹配指定范围内的任意单个字符;
eg:
1)匹配任意字母3-10次:
[[:alpha:]]\{3,10\}
2)匹配p或者q;
[pq]
[^]:匹配指定范围外的任意单个字符;
\.:表示匹配点本身;
\(\):
1)引用此前出现的内容,如果是第一个括号里的内容,则\1引用,如果第二个括号里的内容,则\2引用,依此类推;
2)做分组使用;
- 3、匹配有效IP地址的扩展正则表达式,分两种情况:
1)A、B、C三类IP地址中包含网络地址和广播地址的扩展正则表达式:
([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}
2)A、B、C三类IP地址中不包含网络地址和广播地址的扩展正则表达式:
([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])){2}(\.([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4]))