4-19 Linux中的正则表达式 --- 字符匹配

2022-04-06  本文已影响0人  捌千里路雲和月

1、正则表达式和通配符有点像。区别在于通配符匹配的是文件名和目录名中的字符串,不能匹配文本中内容的字符串。而正则表达式匹配的是文本中的字符串。

2、正则表达式(REGEXP):由一类特殊字符及文本符号所编写的表达式,这种表达式的功能是匹配文本当中字符串。

3、正则表达式的特点:可以通过特殊字符及文本符号灵活组合各种过滤条件去匹配文本内容,从而达到自由度颇高的筛查方式。

4、正则表达式分两类:基本正则表达式(BRE)、扩展正则表达式(ERE),grep 加上 -E 参数就是使用 egrep。

5、元字符分类:元字符是指正则表达式中使用的特殊字符,这些特殊符号具有特定的功能。从功能上分类有:字符匹配、匹配次数、位置锚定、分组。



①、 .:匹配任意单个字符。

[root@localhost ~]# vim regexpTest.txt

abc
abbc
abbbc
a.c
a/c
aabcd
aabbcc
                                                                               
~                                                                                       
~                                                                                       
~                                                                                       
:wq    ## 保存退出

a.c:字符串中只要包含 a 与 c 之间有一位任意字符就会被过滤出来 a..c:字符串中只要包含 a 与 c 之间有两位任意字符就会被过滤出来
[root@localhost ~]# vim regexpTest.txt    ##  regexpTest.txt 添加新内容

abc
abbc
abbbc
a.c
a/c
aabcd
aabbcc
a我c    ## 新字符串                                                                        
~                                                                                                 
~                                                                                                 
~                                                                                                 
:wq        

a我c:字符串 a 与 c 之间包含汉字字符也会被过滤出来
[root@localhost ~]# vim regexpTest.txt     ##  regexpTest.txt 添加新内容 

abc
abbc
abbbc
a.c
a/c
aabcd
aabbcc
a我c
a    ## 新增的内容
ab    ## 新增的内容                                                                                           
~                                                                                                 
~                                                                                                 
~                                                                                                 
:wq    ## 保存退出                                  
只要字符串满足三位字符就会被过滤出来,(满三位标红) a 开头或 a 开头后面满足三位任意的字符 ..c:c 前面满足两位任意字符 \ 转义字符,转义之后是字符本身

②、 [ ]:匹配指定范围内的任意单个字符。

文件内容匹配中括号范围内的任意单个字符图解 文件内容匹配中括号范围内的任意单个字符图解

③、 [^]:排除匹配指定范围内的任意单个字符。


④、 [:alnum:]:过滤字母和数字,包含了大写字母、小写字母 和 10个数字(0-9)。

[root@localhost ~]# vim regexpTest.txt 

---------
loginTest
---------
sn:888888
---------                                                                                               
~                                                                                                 
~                                                                                                 
~                                                                                                 
:wq

[:alnum:]:过滤字母和数字
[root@localhost ~]# vim regexpTest.txt 

----------
登录测试:
Test
----------
测试密码:
888888
----------                                                                         
~                                                                                                 
~                                                                                                 
~                                                                                                 
:wq                        
[:alnum:] 也可以输出中文 过略 T 开头,第二位任意小写字母的内容 [:alnum:] 类似一个数据的集合

⑤、 [:alpha:]:任何英文大小写字符,即 A-Z,a-z。

[root@localhost ~]# vim regexpTest.txt 

------------
大写英文:                  
ABC                         
------------                
小写英文:                  
abc                         
------------                                                                            
~                                                                                       
~                                                                                       
~                                                                                       
:wq

[:alpha:] 可以过滤中文字符 [:alpha:] 匹配指定范围的内容

⑥、 [:lower:]:只过滤小写字母。

[:lower:]:只过滤小写字母

⑦、 [:upper:]:只过滤大写字母。

[:upper:]:只过滤大写字母

⑧、 [:blank:]:空白字符(空格和制表符)。

[root@localhost ~]# vim regexpTest.txt 

------------
空格(space):                              this's space.
------------
制表符(tab):            this's tab.
------------
                                                           
~                                                                                       
~                                                                                       
~                                                                                       
:wq                                                     
[:blank:]:空格和制表符

⑨、 [:space:]:水平和垂直的空白字符(比 [:blank:] 包含的范围广)。

[root@localhost ~]# vim regexpTest.txt 

----------
登录测试:              Test    ## <--- Test 前面有 2 个 tab
----------
测试密码:      888888    ## <--- Test 前面有 1 个 tab
----------  ## <--- 这里结尾有 1 个空格
                                                                                     
~                                                                                                 
~                                                                                                 
~                                                                                                 
:wq

[:space:] 过滤空白字符

⑩-①、 [:digit:]:十进制数字。

[:digit:] 显示所有的数字内容

⑩-③、 [:graph:]:可打印的非空白字符。

[:graph:]:可打印的非空白字符

⑩-④、 [:print:]:可打印字符。相当于 [:alnum:]、[:punct:] 和 space。

[:print:] 的效果

⑩-⑤、 [:punct:]:标点符号。

[root@localhost ~]# vim regexpTest.txt 

----------
登录测试:
Test
----------
测试密码:
888888
----------
符号测试
----------
` ~ ! @ # $ % ^ & * ( ) _ - + = \ | [ ] { } ; ' : " , . / < > ?
----------       
                                                                           
~                                                                                       
~                                                                                       
~                                                                                       
:wq                                                  
[:punct:]:标点符号
上一篇下一篇

猜你喜欢

热点阅读