正则表达式

正则表达式

一、正则表达式的分类

正则表达式:REGEXP,REGular EXPression。

正则表达式分为两类:

  • Basic REGEXP(基本正则表达式)
  • Extended REGEXP(扩展正则表达式)

二、基本正则表达式

//元字符
    .           //任意单个字符
    []          //匹配指定范围内的任意单个字符
    [^]         //匹配指定范围外的任意单个字符
//匹配次数
    *           //匹配其前面的任意单个字符任意次
    .*          //任意长度的任意字符
    \?          //匹配其前面的任意单个字符1次或0次
    \+          //匹配其前面的任意单个字符至少1次
    \{m,n\}     //匹配其前面的任意单个字符至少m次,至多n次
//位置锚定
    ^           //锚定行首,此字符后面的任意单个字符必须出现在行首
    $           //锚定行尾,此字符前面的任意单个字符必须出现在行尾
    ^$          //空白行
    \<或\b       //锚定词首,其后面的任意单个字符必须作为单词首部出现
    \>或\b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
/分组
    \(\)
    例:\(ab\)*
//后向引用
        \1      //引用第一个左括号以及与之对应的右括号所包括的所有内容
        \2      //引用第二个左括号以及与之对应的右括号所包括的所有内容

三、实例

//过滤任意单个字符
[root@localhost sia]# ls
a  ab  abc  abcd  b  c  d
[root@localhost sia]# ls |grep '^.$'
a
b
c
d
 
// 匹配指定范围内的任意单个字符
[root@localhost sia]# ls |grep '^[ab]$'
a
b
[root@localhost sia]# ls |grep '^[a-d]$'
a
b
c
d
 
//匹配指定范围外的任意单个字符
[root@localhost sia]# ls |grep '^[^a]$'
b
c
d
 
//匹配其前面的任意单个字符任意次
[root@localhost sia]# ls |grep '^ab*$'
a
ab
abb
abbbbb
abbbbbbbbbb
 
 
 
//匹配任意长度的任意字符
[root@localhost sia]# ls |grep '^a.*b$'
ab
abb
abbbbb
abbbbbbbbbb
acb
accccccccccccccccccccccccb
 
//匹配其前面的任意单个字符1次或0次
[root@localhost sia]# ls |grep '^a\?b$'
ab
b
[root@localhost sia]# 
 
//匹配其前面的任意单个字符至少1次
[root@localhost sia]# ls |grep '^ac\+b$'
acb
accccccccccccccccccccccccb
 
//匹配其前面的任意单个字符至少m次,至多n次
[root@localhost sia]# ls |grep '^ab\{2,5\}$'
abb
abbbbb
 
//以a开头
[root@localhost sia]# ls |grep '^a'
a
ab
abb
abbbbb
abbbbbbbbbb
abc
abcd
acb
accccccccccccccccccccccccb
 
//以c结尾
[root@localhost sia]# ls |grep 'c$'
abc
c

扩展正则表达式

在Linux中,正则表达式可以分为”基本正则表达式”和”扩展正则表达式”。

认识了”基本正则表达式”之后我们来认识一下”扩展正则表达式”。

.   表示任意单个字符。
*  表示前面的字符连续出现任意次,包括0次。
.* 表示任意长度的任意字符,与通配符中的*的意思相同。
\  表示转义符,当与正则表达式中的符号结合时表示符号本身。
[  ]表示匹配指定范围内的任意单个字符。
[^  ]表示匹配指定范围外的任意单个字符。
 
[[:alpha:]]  表示任意大小写字母。
[[:lower:]]  表示任意小写字母。
[[:upper:]]  表示任意大写字母。
[[:digit:]]  表示0到9之间的任意单个数字(包括0和9)。
[[:alnum:]]  表示任意数字或字母。
[[:space:]]  表示任意空白字符,包括"空格"、"tab键"等。
[[:punct:]]  表示任意标点符号。
[^[:alpha:]]  表示单个非字母字符。
[^[:lower:]]  表示单个非小写字母字符。
[^[:upper:]]  表示单个非大写字母字符。
[^[:digit:]]  表示单个非数字字符。
[^[:alnum:]]  表示单个非数字非字母字符。
[^[:space:]]  表示单个非空白字符。
[^[:punct:]]  表示单个非标点符号字符。
[0-9]与[[:digit:]]等效。
[a-z]与[[:lower:]]等效。
[A-Z]与[[:upper:]]等效。
[a-zA-Z]与[[:alpha:]]等效。
[a-zA-Z0-9]与[[:alnum:]]等效。
[^0-9]与[^[:digit:]]等效。
[^a-z]与[^[:lower:]]等效。
[^A-Z]与[^[:upper:]]等效。
[^a-zA-Z]与[^[:alpha:]]等效。
[^a-zA-Z0-9]与[^[:alnum:]]等效。
 
^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。
$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。
^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。
^abc$:表示abc独占一行时,会被匹配到。
\<或者\b :匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。
\B:匹配非单词边界,与\b正好相反。

注:后者与前者相较并无过大悬殊,故没有实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值