Linux之正则表明式,linux正则表达式

 

 

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

  • 最常应用正则表明式的一声令下是grep(egrep),sed,awk。
  • 正则表明式和通配符有本质差别,正则表明式用来找:【文件】内容,文本,字符串。一般唯有三刀客援救。通配符用来找:文件名。普通命令都匡助

 

第九节 正则表明式

标签(空格分隔):Linux实战教学笔记

—更加多材料点本身查看


 

Linux之正则表明式,正则表明式。 

正则表达式的分类

POSIX规范将正则表明式的分成了三种

  • 中央正则表明式(BRE,basic regular expression)
  • 高级功用:扩充正则表明式(ERE,extended regular expression)

BRE和ERE的区分仅仅是元字符的两样

  • BRE(基础正则表明式)只肯定的元字符有^$.[]*
     其余字符识别为一般字符:\(\)
  • ERE(增加正则表明式)则添加了(){}?+|等
  • 除非在用反斜杠“\”举行转义的状态下,字符(){}才会在BRE被视作元字符处理,而BRE中,任何元符号前边加上反斜杠反而会使其被当作普通字符来处理。

 

第②章 什么是正则表明式

  1. 正则表明式就是为着处理多量的公文|字符串而定义的一套规则和章程
  2. 由此定义的那么些特殊符号的协助,系统管理员就可以飞快过滤,替换或输出需求的字符串。Linux正则表明式一般以行为单位拍卖。

简单说

  • 为处理大量文件|字符串而定义的一套规则和办法
  • 以行为单位出来,四次拍卖一行

正则表明式是一种描述一组字符串的方式,类似数字表明式,通过各类操作符组成更小的表明式

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

正则表明式与通配符的界别:

基本功正则表达式

字符 描述
^ ^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可去掉斜线

第②章 为啥采纳正则表明式

linux运转工作,大批量过滤日志工作,化繁为简。
简单,高效。
正则表达式高级工具;三刀客都帮衬

  • 最常应用正则表达式的命令是grep(egrep),sed,awk。
  • 正则表明式和通配符有本质分歧,正则表明式用来找:【文件】内容,文本,字符串。一般唯有三杀手帮助。通配符用来找:文件名。普通命令都援救
  • 最常应用正则表明式的吩咐是grep(egrep),sed,awk。
  • 正则表明式和通配符有本质差异,正则表明式用来找:【文件】内容,文本,字符串。一般唯有三杀手协理。通配符用来找:文件名。普通命令都支持

增添正则表明式ERE

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

 

澳门金沙国际 6

澳门金沙国际 7

管道符|

澳门金沙国际 8

(): 分组过滤被括起来的东西表示二个完全(多少个字符)

澳门金沙国际 9

 

最早的文件匹配程序,使用POSIX定义的核心正则表明式(BRE)来合作文本。

  • grep -E 强制让grep直接认识正则符号,不要求再展开转义
  • egrep 等效grep -E 天生就能认得正则符号
  • 咱俩一直备份可以通过cp 文件名{,.bak}的花样举行,幸免再打五次文件名
  • sed -r :让sed协理正则

 

第③章 不难混淆视听的两个注意事项

  • 正则表明式应用越发广阔,存在于各样语言中,php perl grep sed awk
    援救。ls * 通配符
  • 但明天学的是Linux中的正则表达式,最常应用正则表明式的吩咐是grep(egrep),sed,awk。
  • 正则表明式和通配符有本质差别

正则表明式用来找:【文件】内容,文本,字符串。一般唯有三杀手协理
通配符用来找:文件名,普通命令都支持

 

 

大旨正则和增添正则不相同

基础正则BRE 扩展正则ERE
\? ?
\+ +
\{\} {}
\( \ ) ()
\  
所谓基础正则实际上就是得需要转义字符配合表达的正则,而扩展正则就是让命令扩展它的权限让他直接就认识正则表达符号(egrep,sed -r,awk直接支持)

 

第5章 正则表达式使用注意事项

  1. linux正则表明式以行为单位拍卖字符串

  2. 造福差别过滤出来的字符串,一定合营grep/egrep命令学习。

澳门金沙国际 10

  1. 留神字符集,exportLC_All=C:无论曾几何时,做何事都要注意字符集
    澳门金沙国际 11

正则表达式的归类

POSIX规范将正则表达式的分为了二种

  • 大旨正则表明式(BRE,basic regular
    expression)
  • 尖端效率:扩大正则表明式(ERE,extended regular expression)

BRE和ERE的分别仅仅是元字符的不比

  • BRE(基础正则表达式)只认同的元字符有^$.[]*
     其他字符识别为常见字符:\(\)
  • ERE(伸张正则表达式)则添加了(){}?+|等
  • 只有在用反斜杠“\”举行转义的景色下,字符(){}才会在BRE被当作元字符处理,而BRE中,任何元符号前边加上反斜杠反而会使其被看成普通字符来处理。

 

正则表明式的归类

POSIX规范将正则表明式的分为了两种

  • 主干正则表明式(BRE,basic regular
    expression)
  • 高级功效:增添正则表明式(ERE,extended regular expression)

BRE和ERE的分化仅仅是元字符的不比

  • BRE(基础正则表明式)只肯定的元字符有^$.[]*
     其余字符识别为常见字符:\(\)
  • ERE(扩张正则表明式)则添加了(){}?+|等
  • 唯有在用反斜杠“\”进行转义的意况下,字符(){}才会在BRE被当作元字符处理,而BRE中,任何元符号前边加上反斜杠反而会使其被看成普通字符来处理。

 

补给表达

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 元字符

元字符是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持
正则表达式 描述 示例
\b 单词边界 \bcool\b匹配cool,不匹配coolant
\B 非单词边界 cool\B匹配coolant不匹配cool
\d 单个数字字符 b\db匹配b2b,不匹配bcb
\D 单个非数字字符 b\Db匹配bcb不匹配b2b
\w 单个单词字符(字母,数字与_) \w匹配1或a,不匹配&
\W 单个非单词字符 \W匹配&,不匹配1或a
\n 换行符 \n匹配一个新行
\s 单个空白字符 x\sx匹配xx,不匹配xx
\S 单个非空白字符 x\S\x匹配xkx,不匹配xx
\r 回车 \r匹配回车
\t 横向制表符 \t匹配一个横向制表符
\v 垂直制表符 \v匹配一个垂直制表符
\f 换页符 \f匹配一个换页符

 

参照博客:

正则表明式与通配符的差别:
最常应用正则表明式的指令是grep(egrep),sed,awk。
正则表达式和通配符…

第⑤章 正则表明式的归类

POSIX规范将正则表达式的分成了二种

  • 基本正则表明式(BRE,basic regular expression)
  • 高档功用:增添正则表达式(ERE,extended regular expression)

基本功正则表明式

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

 

澳门金沙国际 12

澳门金沙国际 13

澳门金沙国际 14

澳门金沙国际 15

澳门金沙国际 16

 

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

基础正则表明式

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

 

澳门金沙国际 17

澳门金沙国际 18

澳门金沙国际 19

澳门金沙国际 20

澳门金沙国际 21

 

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

5.1 BRE和ERE的差异仅仅是元字符的两样:

  • BRE(基础正则表明式)只认可的元字符有^$.[]*其他字符识别为普通字符:\(\)
  • ERE(扩充正则表明式)则添加了(){}?+|等
  • 唯有在用反斜杠“”举办转义的地方下,字符(){}才会在BRE被作为元字符处理,而ERE中,任何元符号前边加上反斜杠反而会使其被看做普通字符来处理。

扩张正则表明式ERE

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

 

澳门金沙国际 22

澳门金沙国际 23

管道符|

澳门金沙国际 24

():
分组过滤被括起来的事物表示贰个完好(一个字符)

澳门金沙国际 25

 

最早的公文匹配程序,使用POSIX定义的中坚正则表明式(BRE)来协作文本。

  • grep -E 强制让grep直接认识正则符号,不须要再展开转义
  • egrep 等效grep -E
    天生就能认得正则符号
  • 咱俩一贯备份可以通过cp 文件名{,.bak}的款型开展,防止再打三遍文件名
  • sed -r :让sed支持正则

 

推而广之正则表明式ERE

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

 

澳门金沙国际 26

澳门金沙国际 27

管道符|

澳门金沙国际 28

():
分组过滤被括起来的事物表示多少个整机(三个字符)

澳门金沙国际 29

 

最早的公文匹配程序,使用POSIX定义的中央正则表达式(BRE)来合作文本。

  • grep -E 强制让grep直接认识正则符号,不需要再举行转义
  • egrep 等效grep -E
    天生就能认得正则符号
  • 大家经常备份可以透过cp 文件名{,.bak}的方式展开,防止再打一遍文件名
  • sed -r :让sed协理正则

 

第⑥章 如何区分通配符和正则表明式

  1. 不须要考虑的论断方法:在三刀客awk,sed,grep,egrep都以正则,其余都以通配符
  2. 区分通配符和正则表明式最简便的章程:

(1)文件目录名===>通配符
(2)文件内容(字符串,文本【文件】内容)===>正则表明式

  1. 通配符和正则表明式都有“*”,“?”,“【】”,不过通配符的那些标记都能本身代表专擅字符,而正则表明式的这几个标记只可以表示这一个标记前边的字符

着力正则和扩充正则差异

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

style=”font-size: 15px;”>所谓基础正则实际上就是得要求转义字符合作表明的正则,而增添正则就是让命令增加它的权能让他直接就认识正则表明符号(egrep,sed
-r,awk直接协助)

 

基本正则和壮大正则分裂

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

style=”font-size: 15px;”>所谓基础正则实际上就是得必要转义字符同盟表明的正则,而恢宏正则就是让命令扩张它的权位让他直接就认识正则表明符号(egrep,sed
-r,awk间接援助)

 

第10章 基本正则表明式

补偿表明

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 单词边界 \bcool\b匹配cool,不匹配coolant
\B 非单词边界 cool\B匹配coolant不匹配cool
\d 单个数字字符 b\db匹配b2b,不匹配bcb
\D 单个非数字字符 b\Db匹配bcb不匹配b2b
\w 单个单词字符(字母,数字与_) \w匹配1或a,不匹配&
\W 单个非单词字符 \W匹配&,不匹配1或a
\n 换行符 \n匹配一个新行
\s 单个空白字符 x\sx匹配xx,不匹配xx
\S 单个非空白字符 x\S\x匹配xkx,不匹配xx
\r 回车 \r匹配回车
\t 横向制表符 \t匹配一个横向制表符
\v 垂直制表符 \v匹配一个垂直制表符
\f 换页符 \f匹配一个换页符

 

参照博客:

填补表明

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 单词边界 \bcool\b匹配cool,不匹配coolant
\B 非单词边界 cool\B匹配coolant不匹配cool
\d 单个数字字符 b\db匹配b2b,不匹配bcb
\D 单个非数字字符 b\Db匹配bcb不匹配b2b
\w 单个单词字符(字母,数字与_) \w匹配1或a,不匹配&
\W 单个非单词字符 \W匹配&,不匹配1或a
\n 换行符 \n匹配一个新行
\s 单个空白字符 x\sx匹配xx,不匹配xx
\S 单个非空白字符 x\S\x匹配xkx,不匹配xx
\r 回车 \r匹配回车
\t 横向制表符 \t匹配一个横向制表符
\v 垂直制表符 \v匹配一个垂直制表符
\f 换页符 \f匹配一个换页符

 

参照博客:

7.1 基础正则表明式

字符 描述
^ ^word搜索以word开头的内容

澳门金沙国际 30

$ word$搜索以word结尾的内容

澳门金沙国际 31

^$ 表示空行,不是空格

澳门金沙国际 32

. 代表且只能代表任意一个字符(不匹配空行)

澳门金沙国际 33

\ 转义字符,让有特殊含义的字符脱掉马甲,现出原形,如\.只表示小数点

澳门金沙国际 34

* 重复之前的字符或文本0个或多个,之前的文本或字符连续0次或多次

澳门金沙国际 35

.* 任意多个字符

澳门金沙国际 36

^.* 以任意多个字符串开头,.*尽可能多,有多少算多少,贪婪性

澳门金沙国际 37

括号表达式
[abc][0-9][\.,/] 匹配字符集合内的任意一个字符a或b或c:[a-z]匹配所有小写字母;表示一个整体,内藏无限可能;[abc]找a或b或c可以写成[a-c]

澳门金沙国际 38

[^abc] 匹配不包含^后的任意字符a或b或c,是对[abc]的取反,且与^含义不同

澳门金沙国际 39

a\{n,m\} 重复前面a字符n到m次(如果用egrep或sed -r可去掉斜线)

澳门金沙国际 40

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

第10章 增加正则表明式ERE

特殊字符 含义与例子
+ 重复前一个字符一次或一次以上,前一个字符连续一个或多个,把连续的文本/字符取出

澳门金沙国际 41

重复前面一个字符0次或1次(.是有且只有1个)

澳门金沙国际 42

管道符 表示或者同时过滤多个字符

澳门金沙国际 43

() 分组过滤被括起来的东西表示一个整体(一个字符),后向引用

澳门金沙国际 44

第柒章 正则小结

  • 基本功正则:BRE
    |^|$|.|澳门金沙国际,|.|[abc]|[^abc]|
    |—|—|

  • 壮大正则:ERE
    |+|||?|()|{}|a{n,m}|a{n,}|a{n}|
    |—|—|

  • 转义字符\:将字符的意趣改变(不协助正则符号的,转变字符含义为正则,援助正则的变通为常见字符含义)

注意:

  • grep暗许不支持正则,由此正则表明式的号子对于grep来说就同一普通字符含义,因而,想让grep直接处理正则符号必须通过转义字符\{\}来处理。
  • grep -E 强制让grep直接认识正则符号,不要求再拓展转义
  • egrep 等效grep -E 天生就能认识正则符号
  • 大家平素备份能够经过cp
    文件名{,.bak}的方式进行,幸免再打三遍文件名
    sed -r :让sed匡助正则

第八章 基本正则和壮大正则分歧

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

所谓基础正则实际上就是得须求转义字符合作表达的正则,而恢宏正则就是让命令增加它的权力让她直接就认识正则表明符号(egrep,sed
-r,awk间接帮忙)

第31章 补充表明

11.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:]]

11.2 元字符

元字符是一种Perl风格的正则表明式,唯有一对文本处理工具援救它,并不是装有的文本处理工具都协理

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

第壹2章 正则表明式计算

  • egrep/grep 明白一下正则,不难看看效果,结果
  • egrep/grep -o 参数看正则到底匹配了怎样
  • 多练就好,同盟grep,egrep,sed -r,awk更为强大

第壹3章 参考资料

点作者查看:正则表明式二十8分钟入门教程

相关文章