正则表达式

正则表达式和通配符的区别

通配符: 是对文件名进行匹配,用来匹配文件名中的字符串

正则表达式:是对文本文件内容进行匹配,对文本文件内容的字符串进行匹配

字符匹配

.       任意一个字符除了\n,也可以是一个汉字或其他国家文字
[]      匹配指定范围的任意单个字符 例如 [bash]
[^]     匹配指定范围外的单个字符
[:digit:]
[:lower:]
[:upper:]
注意组合时候-放到最后面,否则会引起范围问题 [[:alnum:]._-]表示数字字母.下划线和-符号的任意其一

\s 匹配任何空白字符,包括空格,制表符,换页符等等,等价于[\f\r\t\v] 注意 unicode正则表达式会匹配全角空格, 
注意匹配的是一个符号不是一串,一串需要自己加匹配字符数量
\S\s相反
\w  匹配一个字母,数字,下划线,汉字,其他国家文字的字符等价于[_[:alnum:]其他国家文字],
注意匹配的不是一个完整的单词
\W\w取反

匹配次数(基本的正则表达式,扩展的不需要\)

* 		匹配前面的字符0次和任意多次
\? 		匹配前的字符0次或者1次
\+ 		匹配前面的字符1次或者1次以上
\{n\} 	匹配n次
\{n,m\} 匹配最少n,最多m次
\{n,\}	匹配前面的字符最少n次
\{,m\} 	匹配前面的字符最多m

位置锚定


^			行首锚定
$ 			行尾锚定
^PATTERN$ 	用于模式匹配整行
^$			用于匹配空行
^[[:space:]]*$ 匹配空白行
\< or \b 词首锚定  		======|
\> or \b 词尾锚定  		======|=====>> 这2个在扩展元字符里面依然需要加上\
\<PATTERN\> 匹配整个单词
注意:单词由数字 字母 下划线组成

分组

() 分组可以被后向引用 \1 \2 \3 注意: 这个引用的是匹配到的结果
| 或