REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意思,而表示控制或通配的功能,类似通配符,但和通配符不同,通配符是对文件名进行处理,而正则表达则是处理文本中的内容。
正则表达式命令支持:vim、sed、less、grep、awk等
正则表达式分为两类:基本正则表达式(BRE)、扩展正则表达式(ERE)
正则表达式的元字符分类:字符匹配、匹配次数、位置锚定、分组
基本正则表达式
字符匹配
. 代表任意单个字符
[abc] 匹配指定abc范围内任意单个字符
[^abc]匹配abc范围外的任意单个字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
匹配次数
* 匹配前面的字符任意次
.* 任意长度的任意字符
\? 匹配前面的字符0或者1次
\+ 匹配前面的字符至少1次
\{n} 匹配前面的字符n次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次,无下限
\{n,\}匹配前面的字符至少n次,无上限
位置锚定
^ 行首锚定
$行尾锚定
^pattern$ 匹配整行 ^$空行
^[[:sapce:]]*$ 空白行
\< 或 \B 词首锚定
\> 或 \b 词尾锚定
\<PATTERN\>匹配整个单词
分组其他
分组
将多个字符捆绑在一起,当做一个整体处理
后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为\1,\2,\3,...
\1代表从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
或者
或者 \|
a\|b a或者b
C\|cat C或者cat
\(C\|c\)at Cat或者cat
扩展正则表达式
主要去去除基础表达式中的\
字符匹配
和基本表达式相同
匹配次数
* 匹配前面的字符任意次
? 匹配前面的字符0或者1次
+ 匹配前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
位置锚定
^ 行首锚定
$行尾锚定
^pattern$ 匹配整行 ^$空行
^[[:sapce:]]*$ 空白行
\< 或 \B 词首锚定
\> 或 \b 词尾锚定
\<PATTERN\>匹配整个单词
分组其他
()分组 应用 \1 \2 \3
| 或者 (C|c)at cat或者Cat