正则表达式是开发者为了处理大量的字符串和文本而定义的一套规则和方法,使用正则表达式能够提升效率,快速获取想要的内容.linux
正则表达式经常使用于linux三剑客grep,sed,awk,用来处理文本数据,也适用于普通命令.正则表达式
三剑客中使用正则表达式处理文本时,是以行为单位的.spa
正则表达式及扩展的正则表达式及其含义,以下表:blog
######字符匹配(仅仅匹配单个字符) | |
. | 匹配任意单个字符(通配符的 ? 表明单个字符) |
[abc] | 匹配集合内任意单个字符 |
[^abc] | 匹配集合外的任意单个字符(非,正则表达式不支持!,!会被当作一个字符) |
.* | 匹配任意长度的任意字符,即匹配全部内容 |
######匹配次数(仅仅是次数,不是表示字符) | |
* | 匹配前一个字符任意次(连续出现多少次的意思,前面的字符能够没有,开发 匹配0次,即空,则匹配了全部内容)字符串 |
\? | 匹配前一个字符0次或1次(至多1次,前面的字符无关紧要),反斜线是转义 |
\+ | 匹配前面的字符至少1次(1次或屡次),反斜线是转义 |
a\{m\} | 匹配前一个字符a,m次(具体的次数),反斜线是转义 |
a\{m,n\} | 匹配前一个字符a至少m次,至多n次,反斜线是转义 |
a\{0,n\} | 匹配前一个字符a至多n次,能够没有,0能够省略不写,反斜线是转义 |
a\{1,n\} | 匹配前一个字符a至少1次,至多n次,反斜线是转义 |
a\{m,\} | 匹配前一个字符a至少m次,多则不限制,反斜线是转义 |
######位置锚定 | |
^ | 行首锚定 |
$ | 行尾锚定 |
^PATTERN$ | 模式匹配整行(具体的字符串匹配整行) |
^$ | 匹配 空行 |
^[[:space:]]*$ | 匹配空白(空白能够没有)或空行 |
\< 或 \b | 词首锚定(单词模式的左侧,单词能够是字符串或者数字,不能是特殊符号) |
\> 或 \b | 词尾锚定(单词模式的右侧,单词能够是字符串或者数字,不能是特殊符号) |
\<PATTERN>\ | 匹配整个单词 |
######分组及引用 | |
\(\) | 将一个或者多个字符捆绑在一块儿,当作一个总体来处理,如\(xy\)*匹配前面table 的xy任意次class |
\(ab\+\(xy\)*\) | \1: ab+\(xy\)* |
\2: xy |
###基本的正则表达式: ^ #<===用法 ^keyword,匹配以keyword开头的行 $ #<===用法 keyword$,匹配以keyword结尾的行 ^$ #<===匹配空行 . #<===表示任意单个字符 \ #<===转义字符,还原字符本来的意思 * #<===匹配前一个字符0次或屡次(前一个字符0次时,匹配全部内容) .* #<===匹配全部内容 ^.* #<===匹配以任意多个字符开头的内容 .*$ #<===匹配以任意多个字符结尾的内容 [abc] #<===匹配集合内任意单个字符 [^abc] #<===匹配集合外的任意单个字符 ###扩展的正则表达式(使用egrep无需加\转义): \+ #<===匹配前一个字符1次或1次以上(至少1次) \[:/\]+ #<===匹配[]内:/(或其余特殊符号)的字符1次或1次以上(至少1次) \? #<===匹配前一个字符0次或1次 | #<===同时过滤多个字符串,使用到的分隔符(在通配符中表示管道) \(\) #<===括号中的内容被当作一个总体,能够被后面的 \n 引用(n为数字) \n #<===引用 () 中的内容(n为数字) a\{m,n\} #<===匹配前一个子符a至少m次,至多n次 a\{n,\} #<===匹配前一个字符a至少n次,多则不限 a\{n\} #<===匹配前一个字符n次 a\{,m\} #<===匹配前一个字符至多m次,能够没有