Linux之正则表明式

 

 

正则表明式与通配符的区分:

  • 最常应用正则表明式的指令是grep(egrep卡塔 尔(阿拉伯语:قطر‎,sed,awk。
  • 正则表明式和通配符有本质差距,正则表明式用来找:【文件】内容,文本,字符串。日常唯有三徘徊花帮忙。通配符用来找:文件名。普通命令都支持

 

正则表明式的归类

POSIX标准将正则表明式的分为了二种

  • 主干正则表明式(BRE,basic regular expression卡塔 尔(英语:State of Qatar)
  • 高级效用:扩张正则表明式(ERE,extended regular expression卡塔 尔(英语:State of Qatar)

BRE和ERE的界别仅仅是元字符的两样

  • BRE(底蕴正则表明式卡塔尔国只分明的元字符有^$.[]*  其余字符识别为平时字符:()
  • ERE(扩张正则表达式卡塔尔则增多了(卡塔尔{}?+|等
  • 唯有在用反斜杠“”实行转义的意况下,字符(卡塔 尔(阿拉伯语:قطر‎{}才会在BRE被视作元字符处理,而BRE中,任何元符号前面加上反斜杠反而会使其被当作普通字符来管理。

 

基础正则表明式

字符 描述
^ ^word: 搜索以word开头的内容
$ word$: 搜索以word结尾的内容
^$ 表示空行,不是空格
 . 代表且只能代表任意一个字符(不匹配空行)
  转义字符,让有特殊含义的字符脱掉马甲,现出原形,如.只表示小数点
 * 重复之前的字符或文本0个或多个,之前的文本或字符连续0次或多次
.* 任意多个字符
^.* 以任意多个字符串开头,.*尽可能多,有多少算多少,贪婪性
[^abc] 匹配不包含^后的任意字符a或b或c,是对[abc]的取反,且与^含义不同
a{n,m} 重复前面a字符n到m次(如果用egrep或sed -r可去掉斜线)

 

图片 1

图片 2

图片 3

图片 4

图片 5

 

a{n,} 重复前面a字符至少n次,如果用egrep或sed -r可去掉斜线
a{n} 重复前面a字符n次,如果用egrep或sed -r可去掉斜线
--- ---

扩张正则表明式ERE

特殊字符 含义与例子
+ 重复前一个字符一次或一次以上,前一个字符连续一个或多个,把连续的文本/字符取出
? 重复前面一个字符0次或1次(.是有且只有1个)
管道符| 表示或者同时过滤多个字符
() 分组过滤被括起来的东西表示一个整体(一个字符)

 

图片 6

图片 7

管道符|

图片 8

(): 分组过滤被括起来的事物表示三个完整(二个字符卡塔尔国

图片 9

 

最初的公文匹配程序,使用POSIX定义的着力正则表达式(BRE卡塔尔国来同盟文本。

  • grep -E 强制让grep间接认知正则符号,无需再开展转义
  • egrep 等效grep -E 天生就能够认知正则符号
  • 小编们一贯备份能够因此cp 文件名{,.bak}的情势开展,防止再打一遍文件名
  • sed -r :让sed帮助正则

 

中央正则和增添正则区别

基础正则BRE 扩展正则ERE
? ?
+ +
{} {}
( ) ()
 

style="font-size: 15px;">所谓底子正则实际上正是得供给转义字符合作表明的正则,而扩张正则正是让命令扩大它的权柄让他从来就认识正则表明符号(egrep,sed -r,awk直接支持卡塔尔国

 

增加补充表达

1 一些预约义的:

正则表达式 描述 示例
[:alnum:] [a-zA-Z0-9]匹配任意一个字母或数字字符 [[:alnum:]]+
[:alpha:] 匹配任意一个字母字符(包括大小写字母) [[:alpha:]]{4}
[:blank:] 空格与制表符(横向纵向) [[:blank:]]*
[:digit:] 匹配任意一个数字字符 [[:digit:]]?
[:lower:] 匹配小写字母 [[:lower:]]{5,}
[:upper:] 匹配大写字母 ([[:upper:]]+)?
[:punct:] 匹配标点符号 [[:punct:]]
[:space:] 匹配一个包括换行符,回车等在内的所有空白符 [[:space:]]+
[:graph:] 匹配任何一个可以看得见的且可以打印的字符 [[:graph:]]
[:xdigit:] 任何一个十六进制数 [[:xdigit:]]+
[:cntrl:] 任何一个控制字符(ASCII字符集中的前32个字符) [[:cntrl:]]
[:print:] 任何一个可以打印的字符 [[:print:]]

2 元字符

style="font-size: 15px;">元字符是生机勃勃种Perl风格的正则表明式,独有生机勃勃部分文本管理工科具扶植它,实际不是有所的文本管理工科具都协理

正则表达式 描述 示例
b 单词边界 bcoolb匹配cool,不匹配coolant
B 非单词边界 coolB匹配coolant不匹配cool
d 单个数字字符 bdb匹配b2b,不匹配bcb
D 单个非数字字符 bDb匹配bcb不匹配b2b
w 单个单词字符(字母,数字与_) w匹配1或a,不匹配&
W 单个非单词字符 W匹配&,不匹配1或a
n 换行符 n匹配一个新行
s 单个空白字符 xsx匹配xx,不匹配xx
S 单个非空白字符 xSx匹配xkx,不匹配xx
r 回车 r匹配回车
t 横向制表符 t匹配一个横向制表符
v 垂直制表符 v匹配一个垂直制表符
f 换页符 f匹配一个换页符

 

参照博客:

本文由澳门威斯尼人平台登录发布于 操作系统,转载请注明出处:Linux之正则表明式

相关阅读