ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux正则表达式

2022-04-21 15:33:58  阅读:180  来源: 互联网

标签:字符 匹配 正则表达式 cat 空白 锚定 Linux


正则表达式

REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符) 不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配 符功能是用来处理文件名,而正则表达式是处理文本内容中字符

 

正则表达式分为两类

  基本正则表达式

  扩展正则表达式

1、基本正则表达式元字符

1.1字符匹配

常用
.     匹配任意单个字符,可以是一个汉字 []    匹配指定范围内的任意单个字符,示例:[abcd] [0-9] [a-z] [a-zA-Z] [^]     匹配指定范围外的任意单个字符,示例:[^abcd] [:alnum:] 字母和数字 [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z [:lower:] 小写字母,示例:[[:lower:]],相当于[a-z] [:upper:] 大写字母 [:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围 广

拓展 [:cntrl:] 不可打印的控制字符(退格、删除、警铃...) [:digit:] 十进制数字 [:xdigit:]十六进制数字 [:graph:] 可打印的非空白字符 [:print:] 可打印字符 [:punct:] 标点符号
[:blank:] 空白字符(空格和制表符)

\w   #匹配单词构成部分,等价于[_[:alnum:]] \W   #匹配非单词构成部分,等价于[^_[:alnum:]] \S #匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \s #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符

1.2匹配次数

  用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*               #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.*              #任意长度的任意字符
\?              #匹配其前面的字符出现0次或1次,即:可有可无
\+              #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
\{n\}           #匹配前面的字符n次
\{m,n\}         #匹配前面的字符至少m次,至多n次
\{,n\}          #匹配前面的字符至多n次,<=n
\{n,\}          #匹配前面的字符至少n次        

1.3位置锚定

  位置锚定可以用于定位出现的位置

^                #行首锚定, 用于模式的最左侧
$               #行尾锚定,用于模式的最右侧
^PATTERN$       #用于模式匹配整行
^$            #空行
^[[:space:]]*$     #空白行
\< 或 \b         #词首锚定,用于单词模式的左侧
\> 或 \b           #词尾锚定,用于单词模式的右侧
\<PATTERN\>        #匹配整个单词

#注意: 单词是由字母,数字,下划线组成

1.4分组其他

\(string1\(string2\)\)
\1 :string1\(string2\)
\2 :string2



a\|b       #a或b  
C\|cat     #C或cat  
\(C\|c\)at   #Cat或cat

 

2、扩展正则表达式原子符

  2.1字符匹配

.                   任意单个字符
[abcd]               指定范围的字符
[^abcd]               不在指定范围的字符
[:alnum:]             字母和数字
[:alpha:]             代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:]             小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:]             大写字母
[:blank:]             空白字符(空格和制表符)
[:space:]             水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:]             不可打印的控制字符(退格、删除、警铃...)
[:digit:]             十进制数字
[:xdigit:]            十六进制数字
[:graph:]             可打印的非空白字符
[:print:]             可打印字符
[:punct:]             标点符号

2.2次数匹配

*           匹配前面字符任意次
?           0或1次
+           1次或多次
{n}         匹配n次
{m,n}        至少m,至多n次

2.3位置锚定

^             行首
$             行尾
\<, \b         语首
\>, \b         语尾

2.4

分组其他

()            分组
后向引用:\1, \2, ...
|              或者
a|b            #a或b
C|cat           #C或cat
(C|c)at         #Cat或cat

 

grep -E 配合扩展正则表达式使用,对文本内容过滤筛选显示

[15:19:09 root@centos8 ~]#ifconfig ens160 | grep netmask | grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | head -n1

192.168.1.85

[15:19:20 root@centos8 ~]#

 

标签:字符,匹配,正则表达式,cat,空白,锚定,Linux
来源: https://www.cnblogs.com/lyj1023/p/16130099.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有