linux-正则表达式

Posted chen1262567640

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux-正则表达式相关的知识,希望对你有一定的参考价值。

正则表达式是linux工具用来过滤文本的模式模板

正则表达利用通配符来代表数据流中的一个或多个字符  常用于sed gawk grep等程序中

正则表达式分为基本正则表达式(BRE)和扩展正则表达式(ERE)  sed只支持BRE,gawk支持ERE

 

 

BRE模式:

正则表达式区分大小写  

正则表达式不用写出完整的单词,自动匹配剩余部分  

可以在正则表达式中使用空格和数字  

如果在正则表达式中定义了空格,那么就必须出现在数据流中,甚至可以匹配多个空格

正则表达式识别的特殊字符包括  .*[]^$0+\+?|()  (不能在文本模式中单独使用这些字符,需要做转义\处理)  尽管/不是正则表达式的特殊字符,但是在正则表达式也要做转义处理

^(脱字符)    定义从数据流中由换行符决定的新文本行的行首开始的模式。  要使用脱字符,必须将他放在正则表达式中指定的模式前面  如果将脱字符列在正则表达式的模式的最后,编辑器会将他当作普通字符匹配。

$(美元符)    定义了行尾锚点  这个字符加在文本模式之后来指明数据行必须以该模式结尾

组合锚点      行首锚点和行尾锚点一起使用(可以删除空白行)

.(点字符)      点字符用来匹配除换行符之外任意的单字符(必须匹配一个字符,不能没有)

*              在字符后面放置*表示该字符将会在匹配模式的文本中出现0次或多次  常配合点字符使用

[](字符组)    字符组中的某个字符出现子数据流中,那他就匹配了该模式    方括号中应该含有你要在该组中包含的任何字符  一个字符组只能匹配一个字符,不能匹配多个字符

[^](排除字符串)   反转匹配,匹配字符组中不含有的字符  []+^(字符组+脱字符)

[-](使用区间)    指定区间的第一个字符,单破折号,最后一个字符,即可表示从第一个到最后一个字符之间的所有字符(只能表示文本中的一个字符)  可以在单个字符组中指定多个不连续的区间

特殊字符组:

[[:alpha:]]p            匹配任意字母字符,不管式大写还是小写

[[:alnum:]]            匹配任意字母数字字符0-9,A-Z,a-a

[[:blank:]]            匹配空白符或指标符

[[:digit:]]             匹配0-9之间的数字

[[:lower:]]            匹配小写字母a-z

[[:print:]]            匹配任意可打印字符

[[:punct:]]            匹配任意标点符号

[[:space:]]            匹配任意空百符:空格,制表符,NL,FF,VT,CR

[[:upper:]]            匹配任意大写字母A-Z

 

 

ERE模式(扩展正则表达式)

?            ?表示前面的字符出现0次或1次,仅限于此

+            +表示前面的字符可以出现1次或多次,但至少出现1次

            为重复的正则表达式指定一个上限

  n            正则表达式正好出现n次

  m,n           正则表达式至少出现m次,至多n次

|             管道符号允许在检查数据流时,用逻辑或的方式指定正则表达式引擎要用的两个或多个模式,如果其中一个模式匹配了数据流文本,文本就通过了,如果没有模式匹配,数据流文本匹配就不成立

()           把正则表达式的模式用()聚合起来就可以把()内部的正则表达式模式当成标准字符(单个)。

以上是关于linux-正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Linux正则表达式教程:Grep Regex示例

Linux正则表达式及grep命令

linux-正则表达式

linux正则表达式

linux 中 ^[^abc] 正则表达式啥意思

Linux 基础正则表达式