正则表达

1.1 ^str 以什么字符串开头

正则表达式_第1张图片

1.2 str$ 以什么字符串结尾

正则表达式_第2张图片
过滤出来空白行,必须是空白行(多个空格都不行)
正则表达式_第3张图片

1.3 “.” 匹配单个字符

正则表达式_第4张图片

1.4 “*”表示之前的字符连续出现任意次数(包括0次)

正则表达式_第5张图片

正则表达式的贪婪性,匹配到最后一个不能匹配的字符

正则表达式_第6张图片

1.5 \

正则表达式_第7张图片

1.6 word \>查找以word字符串结束的单词,所在的行

正则表达式_第8张图片

1.7 \查找包括word这个单词的行

正则表达式_第9张图片

1.8 \b既能表示词首,也能表示词尾,匹配单词边界

正则表达式_第10张图片

1.9 \B 匹配“非单词边界”\B在前面就是不匹配以这个字符开头的行

正则表达式_第11张图片

1.10 x{M} 重复字符x,M次

正则表达式_第12张图片

1.11 x{M,} 重复字符x,最少M次

正则表达式_第13张图片

1.12 x{M,n} 重复字符x,最少M次,最多n次

正则表达式_第14张图片

1.13 ".*"匹配任意字符

正则表达式_第15张图片

1.14 [] 匹配一个指定范围的字符

正则表达式_第16张图片
正则表达式

1.15 [^ ] 匹配一个不存在这个范围内的字符

正则表达式_第17张图片

1.15.1 grep的应用

grep的宗旨:显示一切的匹配行,这句话的是理解这个选项的重中之重
正则表达式_第18张图片

1.15.2 awk的用法

注意格式的写法

[root@oldboy_50 tmp]# awk '/[^ab]/' 1.txt 
aabbcc
aaeebb
aaffgg
bbccee
abcc
综合用法:
[root@oldboy_50 tmp]# cat awk.txt 
aab bcc
cc bb
aaa aa
[root@oldboy_50 tmp]# awk '/[^a]/{print $2}' awk.txt 
bcc
bb
aa    这一行也匹配出来了,是因为“空格”也属于非a的字符,也匹配上了
[root@oldboy_50 tmp]# awk '/[^a ]/{print $2}' awk.txt  我们取非a和非“空格”的
bcc
bb

1.15.3 sed的用法

[root@oldboy_50 tmp]# sed -n  '/[^ab]/p' 1.txt 
aabbcc
aaeebb
aaffgg
bbccee
abcc
一般单纯的过滤字符串的时候我们配合-n和p使用,这样就能显示出我们想要行的结果

1.16 匹配连续字符串出现的次数
正则表达式_第19张图片
1.17 正则的引用
所在的位置就看左侧的"("所在的位置,在第一个就是\1,第二个就是\2,嵌套引用也是这个道理
正则表达式_第20张图片
1.18 \ 转义字符,专业人士称为“撬棍”
正则表达式_第21张图片

1.19 总结:

1.19.1 常用符号

.   表示任意单个字符。
*  表示前面的字符连续出现任意次,包括0次。
.* 表示任意长度的任意字符,与通配符中的*的意思相同。
\  表示转义符,当与正则表达式中的符号结合时表示符号本身。
[  ]表示匹配指定范围内的任意单个字符。
[^  ]表示匹配指定范围外的任意单个字符。

1.19.2 次数匹配相关

\?  表示匹配其前面的字符0或1次
\+  表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。
\{n\} 表示前面的字符连续出现n次,将会被匹配到。
\{x,y\} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。
\{,n\} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。
\{n,\}表示之前的字符连续出现至少n次,才会被匹配到。

1.19.3 位置边界匹配相关

^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。
$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。
^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。
^abc$:表示abc独占一行时,会被匹配到。
\<或者\b :匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。
\B:匹配非单词边界,与\b正好相反。

1.19.4 分组与后向引用

\( \) 表示分组,我们可以将其中的内容当做一个整体,分组可以嵌套。
\(ab\) 表示将ab当做一个整体去处理。
\1 表示引用整个表达式中第1个分组中的正则匹配到的结果。
\2 表示引用整个表达式中第2个分组中的正则匹配到的结果。

参考:朱哥博客http://www.zsythink.net/archives/tag/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/