一.正则表达式
1.概念
REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,
2.作用
正则表达式是处理文本内容中字符
正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql 等
主要用来匹配字符串(命令结果,文本内容),
通配符匹配文件(而且是已存在的文件)
3.分类
- 基本正则表达式
- 扩展正则表达式
二.基本正则表达式
-
常见元字符
. 匹配任意单个字符,可以是一个汉字 [] 匹配指定范围内的任意单个字符,示例:[zhou] [0-9] [] [a-zA-Z] [^] 匹配指定范围外的任意单个字符,示例:[^zhou] [^a.z] a.z [:alnum:] 字母和数字 [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z [:lower:] 小写字母,示例:[[:lower:]],相当于[a-z] [:upper:] 大写字母 [:blank:] 空白字符(空格和制表符) [:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围 广 [:cntrl:] 不可打印的控制字符(退格、删除、警铃...) [:digit:] 十进制数字 [:xdigit:]十六进制数字 [:graph:] 可打印的非空白字符 [:print:] 可打印字符 [:punct:] 标点符号 \w #匹配单词构成部分,等价于[_[:alnum:]] \W #匹配非单词构成部分,等价于[^_[:alnum:]] \S #匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \s #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 -
表示次数
* #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.* #任意长度的任意字符
\? #匹配其前面的字符出现0次或1次,即:可有可无
\+ #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
\{n\} #匹配前面的字符n次
\{m,n\} #匹配前面的字符至少m次,至多n次
\{,n\} #匹配前面的字符至多n次,<=n
\{n,\} #匹配前面的字符至少n次
-
位置锚定
^ #行首锚定, 用于模式的最左侧 $ #行尾锚定,用于模式的最右侧 ^PATTERN$ #用于模式匹配整行 (单独一行 只有root) ^$ #空行 ^[[:space:]]*$ #空白行 \< 或 \b #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部) \> 或 \b #词尾锚定,用于单词模式的右侧 \<PATTERN\> #匹配整个单词 -
分组或其他
分组:() 将多个字符捆绑在一起,当作一个整体处理,如:(root)+
后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名
方式为: \1, \2, \3, …
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
或者: /|
三.扩展正则表达式
1.支持的工具
egrep ,awk
2.特殊字符
+:重复一个或者一个以上的前一个字符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKdqKQTm-1636965559924)(C:/Users/25982/AppData/Roaming/Typora/typora-user-images/image-20211115163552460.png)]](https://i-blog.csdnimg.cn/blog_migrate/6d2622cbb860a54bb10e399e63866f5a.png)
?:零个或者一个的前一个字符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2U5MvDkp-1636965559926)(C:/Users/25982/AppData/Roaming/Typora/typora-user-images/image-20211115163653162.png)]](https://i-blog.csdnimg.cn/blog_migrate/20e0b97b9087d2ecbf27eecf2272f3ba.png)
|:使用或者(or)的方式找出多个字符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQ5AkFtz-1636965559928)(C:/Users/25982/AppData/Roaming/Typora/typora-user-images/image-20211115163729600.png)]](https://i-blog.csdnimg.cn/blog_migrate/79a2eb90a4ff21259bbc5cab7d9ae808.png)
():查找组字符串
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vR9LNu2b-1636965559929)(C:/Users/25982/AppData/Roaming/Typora/typora-user-images/image-20211115163807946.png)]](https://i-blog.csdnimg.cn/blog_migrate/7d2f06fd7608e27819b9228244e93edf.png)
()+:辨别多个重复的组

本文详细介绍了Shell正则表达式的概念、作用,涵盖基本正则表达式和扩展特性,包括元字符、重复、位置锚定和分组。此外,还重点讲解了扩展正则表达式在工具如egrep和awk中的应用,以及特殊字符的使用技巧。
121

被折叠的 条评论
为什么被折叠?



