shell 正则表达式

Linux Shell环境下提供了两种正则表达式规则,一个是基本正则表达式(BRE),另一个是扩展正则表达式(ERE)。
下面是这两种表达式的语法列表,需要注意的是,如果没有明确指出的Meta字符,其将可同时用于BRE和ERE,否则将尽适用于指定的模式。
正则元字符模式含义用例
\通常用于关闭其后续字符的特殊意义,恢复其原意。\(...\),这里的括号仅仅表示括号。
.匹配任何单个字符。a.b,将匹配abb、acb等
*匹配它之前的0-n个的单个字符。a*b,将匹配ab、aab、aaab等。
^匹配紧接着的正则表达式,在行的起始处。^ab,将匹配abc、abd等,但是不匹配cab。
$匹配紧接着的正则表达式,在行的结尾处。ab$,将匹配ab、cab等,但是不匹配abc。
[...]方括号表达式,匹配其内部任何字符。其中-表示连续字符的范围,^符号置于方括号里第一个字符则有反向的含义,即匹配不在列表内(方括号)的任何字符。如果想让]和-表示其原意,需要将其放置在方括号的首字符位置,如[]ab]或[-ab],如这两个字符同时存在,则将]放置在首字符位置,-放置在最尾部,如[]ab-]。[a-bA-Z0-9!]表示所有的大小写字母,数字和感叹号。[^abc]表示a、b、c之外的所有字符。[Tt]om,可以匹配Tom和tom。
\{n,m\}区间表达式,匹配在它前面的单个字符重复出现的次数区间,\{n\}表示重复n次;\{n,\}表示至少重复n次;\{n,m\}表示重复n到m次。ab\{2\}表示abb;ab\{2,\}表示abb、abbb等。ab\{2,4\}表示abb、abbb和abbbb。
\(...\)将圆括号之间的模式存储在特殊“保留空间”。最多可以将9个独立的子模式存储在单个模式中。匹配于子模式的文本,可以通过转义序列\1到\9,被重复使用在相同模式里。\(ab\).*\1表示ab组合出现两次,两次之间可存在任何数目的任何字符,如abcdab、abab等。
{n,m}(ERE)其功能等同于上面的\{n,m\},只是不再写\转义符了。ab+匹配ab、abbb等,但是不匹配a。
+(ERE)和前面的星号相比,+匹配的是前面正则表达式的1-n个实例。 
?(ERE)匹配前面正则表达式的0个或1个。ab?仅匹配a或ab。
|(ERE)匹配于|符号前后的正则表达式。(ab|cd)匹配ab或cd。
[:alpha:]匹配字母字符。[[:alpha:]!]ab$匹配cab、dab和!ab。
[:alnum:]匹配字母和数字字符。[[:alnum:]]ab$匹配1ab、aab。
[:blank:]匹配空格(space)和Tab字符。[[:alnum:]]ab$匹配1ab、aab。
[:cntrl:]匹配控制字符。 
[:digit:]匹配数字字符。 
[:graph:]匹配非空格字符。 
[:lower:]匹配小写字母字符。 
[:upper:]匹配大写字母字符。 
[:punct:]匹配标点字符。 
[:space:]匹配空白(whitespace)字符。 
[:xdigit:]匹配十六进制数字。 
\w匹配任何字母和数字组成的字符,等同于[[:alnum:]_] 
\W匹配任何非字母和数字组成的字符,等同于[^[:alnum:]_] 
\<\>匹配单词的起始和结尾。\<read匹配readme,me\>匹配readme。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值