正则表达式

正则表达式

正则表达式分类:

正则表达式:REGEXP,REGular EXPression。
正则表达式分为两类:

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

。基本正则表达式

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

//示例:

 .
[root@localhost ~]# ls
abbbhc  abc  ac  afshfo  ajdfsc  anaconda-ks.cfg  sh
[root@localhost ~]# ls |grep "a.c"
abc

 []
[root@localhost zz]# ls
a  c  e  g  i  k  m  o  q  s  u  w  y
b  d  f  h  j  l  n  p  r  t  v  x  z
[root@localhost zz]# ls |grep "[abc]"
a
b
c

[^]
[root@localhost zz]# ls
a  c  e  g  i  k  m  o  q  s  u  w  y
b  d  f  h  j  l  n  p  r  t  v  x  z
[root@localhost zz]# ls |grep "[^a-x]"
y
z

*
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae
[root@localhost zz]# ls |grep "a*"
aaaaaab
aaab
aab
aacc
aae

.*
[root@localhost zz]# ls 
aaaaaab  aaab  aab  aacc  aae  blodk
[root@localhost zz]# ls |grep "^a.*b"
aaaaaab
aaab
aab

\?
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae
[root@localhost zz]# ls |grep "a\?b"
aaaaaab
aaab
aab

\+
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aa
[root@localhost zz]# ls |grep "a\+c"
aacc

\{m,n\} 
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae
[root@localhost zz]# ls |grep "a\{3,5\}"
aaaaaab
aaab

^
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae  blodk
[root@localhost zz]# ls |grep "^b"
blodk

$
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae  blodk
[root@localhost zz]# ls |grep "^a.*e$"
aae

\<和\>
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae  blodk
[root@localhost zz]# ls |grep "\<a.*e\>"
aae

\b
[root@localhost zz]# ls
aaaaaab  aaab  aab  aacc  aae  blodk
[root@localhost zz]# ls |grep "\ba.*e\b"
aae

\(\)
    例:\(ab\)*
    //后向引用
        \1      //引用第一个括号所包括的所有内容
        \2      //引用第二个括号所包括的所有内容
[root@localhost zz]# echo "1 2 3"|sed 's#1\(.*\) \(.*\)#1 \2\1#g'   //第一个.*代表2第二个.*代表3,使用'\'转义将\2也就是3放在前面\1也就是2放在后面,实现将1 2 3打印出来的效果是1 3 2
1 3 2
[root@localhost zz]# 

。扩展正则表达式

sed和grep等默认使用的就是基本正则表达式,所以很多地方需要用到 ’ \ ’ 转义扩展正则不要使用转义
sed使用扩展正则使用sed -r
grep使用扩展正则使用grep -E 或egrep

//字符匹配
    .       //匹配任意单个字符
    []      //匹配指定范围内的任意单个字符
    [^]     //匹配指定范围外的任意单个字符
//次数匹配
    *       //匹配其前面的任意单个字符任意次
    ?       //匹配其前面的任意单个字符1次或0次
    +       //匹配其前面的任意单个字符至少1次
    {m,n}   //匹配其前面的任意单个字符至少m次,至多n次

//位置锚定
    ^       //锚定行首,此字符后面的任意单个字符必须出现在行首
    $       //锚定行尾,此字符前面的任意单个字符必须出现在行尾
    ^$      //空白行
    \<或\b       //锚定词首,其后面的任意单个字符必须作为单词首部出现
    \>或\b       //锚定词尾,其前面的任意单个字符必须作为单词尾部出现
//分组
    ()      //分组
    \1,\2,\3,....
   例:(ab)*
    //后向引用
        \1      //引用第一个左括号以及与之对应的右括号所包括的所有内容
        \2      //引用第二个左括号以及与之对应的右括号所包括的所有内容
//或者
    |       //or 默认匹配|的整个左侧或者整个右侧的内容
    //例:C|cat表示C或者cat,要想表示Cat或者cat则需要使用分组,如(C|c)at
[root@localhost zz]# ls
cat  Cat
[root@localhost zz]# ls|egrep "(C|c)at" 
cat
Cat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值