1、正则表达式概述
常用的正则表达式引擎
POSIX基本正则表达式BRE引擎
POSIX扩展正则表达式BRE引擎
正则表达式: 是一类字符所书写出的模式(pattern)
元字符: 不表示字符本身的意义,用于额外功能性描述
基本正则表达式和扩展正则表达式
2、基本正则表达式
基本正则表达式的元字符:grep -E
字符匹配:
.: 任意单个字符
[]: 指定范围内的任意单个字符
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
[[:alpha:]]
[[:alnum:]]
[[:space:]]
[[:punct:]]
[^]: 指定范围外的任意单个字符 #非#
次数匹配:用来指定匹配其前面的字符的次数
*: 任意次
例子: x*y,xxy,xy,y
.*: 匹配任意长度的任意字符
\?: 0次或1次
x\?y,xy,y,xxy
贪婪模式:尽可能的长的去匹配字符;
\{m\}: 匹配m次
\{m,n\}:
\{m,\}: 至少m次
\{0,n\}: 至多n次
锚定:
^:开头
$:结尾
^$: 空白行
\<: 定位词首
\b: 分别代替词首词尾
\>: 定位词尾
分组:
\(\)
\(ab\)*xy
引用:
\1: 后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配到的内容
\2:
...
\(a.b\)*xy\1: #a6bxya6b
He like his lover.
She love her liker.
He love his lover.
She like her liker.
grep ‘\(l..e\).*\1r‘ test.txt
3、扩展正则表达式
扩展正则表达式的元字符:
egrep:使用扩展正则表达式来构建模式,相当于grep -E
字符匹配:
.: 任意单个字符
[]: 指定范围内的任意单个字符
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
[[:alpha:]]
[[:alnum:]]
[[:space:]]
[[:punct:]]
[^]: 指定范围外的任意单个字符 #非#
次数匹配:
*: 匹配其前面的字符任意次
?: 匹配其前面的0或1次
+: 匹配其前面的字符至少1次
{m}: 匹配其前面的字符m次
{m,n}:至少m次,至多n次
{m,}: 至少m次
{0,n}:至多n次
锚定:
^:行首
$:行尾
^$: 空白行
\<,\b: 词首
\>, \b: 词尾
分组:
(): 分组
|: 或者,ac|bc
特殊字符
[:alnum :] 文字数字 匹配任意字母字符0-9 a-z A-Z
[:alpha:] 文字 匹配任意字母,大写或小写
[:digit:] 数字 0-9
[:graph:] 非空字符( 非空格控制字符)
[:lower:] 小写字符
[:upper:] 大写字符
[:cntrl:] 控制字符
[:print:] 非空字符( 包括空格)
[:punct:] 标点符号
[:blank:] 空格和TAB字符
[:xdigit:] 16 进制数字
[:space:] 所有空白字符( 新行、空格、制表符)
原文地址:http://blog.51cto.com/redone/2093477