名词解释
正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。
在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。
定义:元字符是这样一类字符,它们表达的是不同于字面本身的含义
基本正则表达式元字符
表达式 | 含义 |
---|---|
^ | 行首定位符 |
$ | 行尾定位符 |
. | 匹配单个字符 |
* | 匹配前导符0到多次 |
.* | 匹配任意多个字符 |
[ ] | 匹配指定范围内的一个字符 |
[ - ] | 匹配指定范围内的一个字符,连续的范围 |
[^] | 匹配不在指定范围内的字符 |
\ | 用来转义元字符,褪去特殊含义 |
\< | 词首定位符 |
\> | 词尾定位符 |
( ) | \(..\) 匹配稍后使用的字符的标签 |
x\{m\} | 字符x重复出现m次 |
x\{m,\} | 字符x重复出现m次以上 |
x\{m,n\} | 字符x重复出现m次到n次 |
拓展正则表达元式字符
表达式 | 含义 |
---|---|
+ | 匹配1~n个前导字符 |
? | 匹配0~1个前导字符 |
a|b | 匹配a或b |
( ) | 组字符 |
示例 1:
// 查找匹配
#找到love开头的行
[root@localhost ~]# egrep "^love" file
#找到love结尾的行
[root@localhost ~]# egrep "love$" file
#找到l开头,一个任意字符,ve结尾
[root@localhost ~]# egrep "l.ve" file
#l开始,零个或多个o,ve结尾
[root@localhost ~]# egrep "lo*ve" file
#大L 或者小L 开头的 ove
[root@localhost ~]# egrep "[Ll]ove" file
#love最后一个小写字母
[root@localhost ~]# egrep "love[a-z]" file
#love最后一个(不是字母或者数字),而是符号
[root@localhost ~]# egrep "love[^a-zA-Z0-9]" file
示例 2:
// 查找匹配
#找到所有行
[root@localhost ~]# egrep ".*" file
#找到空行
[root@localhost ~]# egrep "^$" file
#开头一个大写,最后2个任意字符
[root@localhost ~]# egrep "^[A-Z]..$" file
#一个大写开头,0到多个小写或空格,3,最后是0-5的一个数字
[root@localhost ~]# egrep "^[A-Z][a-z ]*3[0-5]" file
#0到多个小写字母,最后一个点
[root@localhost ~]# egrep "[a-z]*\." file
#0到多个空格开头,一个大写,一个小写,再一个小写结尾
[root@localhost ~]# egrep "^ [A-Z][a-z]*[a-z$]" file
#0到多个字母开头,非逗号,0到多个英文结尾
[root@localhost ~]# egrep "[A-Za-z]*[^,][A-Za-z]*" file
#找到 fourth 单词
[root@localhost ~]# egrep "\<fourth\>" file
#找到f开头th结尾的单词
[root@localhost ~]# egrep "\<f.*th\>" file
#找到5两次2三次和一个点
[root@localhost ~]# egrep "5{2}2{3}\." file
#找到0到多个 ,空格或tab的行
[root@localhost ~]# egrep "[ \t]*" file
#找到以#号开头的行
[root@localhost ~]# egrep "^#" file
#找到有0到多个,空格或者tab开头的行,的注释行
[root@localhost ~]# egrep "^[ \t]*#" file
#过滤掉空行与\#注释的行
[root@localhost ~]# egrep -v "^$|#" file
网友评论