正则表达式
正则表达式分类
正则表达式:REGEXP,REGular EXPression
正则表达式分两类
- Basic REGEXP(基本正则表达式)
- Extended REGEXP(扩展正则表达式)
常用正则表达式
元字符
//元字符
. //任意单个字符
[] //匹配指定范围内的任意单个字符
[^] //匹配指定范围外的任意单个字符
# . 任意单个字符,
[root@localhost curry]# ls | grep "^.$"
a
b
c
d
e
f
g
h
i
#[] 匹配指定范围的任意单个字符 ,中括号里的d-h是指匹配那个范围的所有值
[root@localhost curry]# ls | grep "^[abcd-h]$"
a
b
c
d
e
f
g
h
#[^] 匹配指定范围外的任意单个字符,相当于取反且^必须要在中括号的最前面才会生效注意!
[root@localhost curry]# ls | grep "^[^abcd-h]$"
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
[root@localhost curry]#
匹配次数(贪婪模式)
* //匹配其前面的任意单个字符任意次
.* //任意长度的任意字符
\? //匹配其前面的任意单个字符1次或0次
\+ //匹配其前面的任意单个字符至少1次
\{m,n\} //匹配其前面的任意单个字符至少m次,至多n次
# * 匹配其前面任意单个字符任意次,abc后面的c在*号前面以可以匹配0到正无穷次。
[root@localhost curry]# ls | grep "^abc*$"
abc
abcc
abccc
abccccccc
[root@localhost curry]#
# .* 任意长度的任意字符,这里目录下的所有文件都被匹配到了,简而言之就是匹配任意的字符。
[root@localhost curry]# ls | grep "^.*$"
a
abc
abcc
abccc
abccccccc
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
# \? 匹配其前面的任意单个字符1次或0次,单用?也是一样的效果.
[root@localhost curry]# ls | grep "^abc\?$"
abc
[root@localhost curry]# ls | grep "^abcc\?$"
abc
abcc
[root@localhost curry]#
# \+ 匹配其前面的任意单个字符至少1次
[root@localhost curry]# ls | grep "^abc\+$"
abc
abcc
abccc
abccccccc
[root@localhost curry]#
# \{m,n\} 匹配前面任意字符最少m次,最多n次。
[root@localhost curry]# ls | grep "^abc\{1,2\}$"
abc
abcc
[root@localhost curry]#
位置锚定
^ //锚定行首,此字符后面的任意单个字符必须出现在行首
$ //锚定行尾,此字符前面的任意单个字符必须出现在行尾
^$ //空白行
\<或\b //锚定词首,其后面的任意单个字符必须作为单词首部出现
\>或\b //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
# \<或 \b 固定词首,后面匹配到的所有字符都是以符号前面的字符为首
[root@localhost curry]# ls | grep "^a\b$"
a
# \>或\b 固定词尾,后面匹配到的所有字符都是以符号前面的字符结尾。
[root@localhost curry]# ls | grep "^cba\b$"
cba
[root@localhost curry]#
分组
\1,\2,\3,....
例:(ab)*
//后向引用
\1 //引用第一个左括号以及与之对应的右括号所包括的所有内容
\2 //引用第二个左括号以及与之对应的右括号所包括的所有内容
//或者
| //or 默认匹配|的整个左侧或者整个右侧的内容
//例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at