正则表达式是linux工具用来过滤文本的模式模板
正则表达利用通配符来代表数据流中的一个或多个字符 常用于sed gawk grep等程序中
正则表达式分为基本正则表达式(BRE)和扩展正则表达式(ERE) sed只支持BRE,gawk支持ERE
BRE模式:
正则表达式区分大小写
正则表达式不用写出完整的单词,自动匹配剩余部分
可以在正则表达式中使用空格和数字
如果在正则表达式中定义了空格,那么就必须出现在数据流中,甚至可以匹配多个空格
正则表达式识别的特殊字符包括 .*[]^${}0++?|() (不能在文本模式中单独使用这些字符,需要做转义处理) 尽管/不是正则表达式的特殊字符,但是在正则表达式也要做转义处理
^(脱字符) 定义从数据流中由换行符决定的新文本行的行首开始的模式。 要使用脱字符,必须将他放在正则表达式中指定的模式前面 如果将脱字符列在正则表达式的模式的最后,编辑器会将他当作普通字符匹配。
$(美元符) 定义了行尾锚点 这个字符加在文本模式之后来指明数据行必须以该模式结尾
组合锚点 行首锚点和行尾锚点一起使用(可以删除空白行)
.(点字符) 点字符用来匹配除换行符之外任意的单字符(必须匹配一个字符,不能没有)
* 在字符后面放置*表示该字符将会在匹配模式的文本中出现0次或多次 常配合点字符使用
[](字符组) 字符组中的某个字符出现子数据流中,那他就匹配了该模式 方括号中应该含有你要在该组中包含的任何字符 一个字符组只能匹配一个字符,不能匹配多个字符
[^](排除字符串) 反转匹配,匹配字符组中不含有的字符 []+^(字符组+脱字符)
[-](使用区间) 指定区间的第一个字符,单破折号,最后一个字符,即可表示从第一个到最后一个字符之间的所有字符(只能表示文本中的一个字符) 可以在单个字符组中指定多个不连续的区间
特殊字符组:
[[:alpha:]]p 匹配任意字母字符,不管式大写还是小写
[[:alnum:]] 匹配任意字母数字字符0-9,A-Z,a-a
[[:blank:]] 匹配空白符或指标符
[[:digit:]] 匹配0-9之间的数字
[[:lower:]] 匹配小写字母a-z
[[:print:]] 匹配任意可打印字符
[[:punct:]] 匹配任意标点符号
[[:space:]] 匹配任意空百符:空格,制表符,NL,FF,VT,CR
[[:upper:]] 匹配任意大写字母A-Z
ERE模式(扩展正则表达式)
? ?表示前面的字符出现0次或1次,仅限于此
+ +表示前面的字符可以出现1次或多次,但至少出现1次
{} 为重复的正则表达式指定一个上限
{n} 正则表达式正好出现n次
{m,n} 正则表达式至少出现m次,至多n次
| 管道符号允许在检查数据流时,用逻辑或的方式指定正则表达式引擎要用的两个或多个模式,如果其中一个模式匹配了数据流文本,文本就通过了,如果没有模式匹配,数据流文本匹配就不成立
() 把正则表达式的模式用()聚合起来就可以把()内部的正则表达式模式当成标准字符(单个)。