查看原文
其他

正则表达式(3)-扩展正则表达式

Cloud研习社 Cloud研习社 2023-06-06


每周二、四、六定期更新!


字符匹配



. 匹配任意单个字符
[]    匹配括号内的任意单个字符
[^]    匹配不包含括号内的单个字符的字符


这里的字符匹配和基本正则表达式里的是一样的,我们不在做演示,请自行练习。


次数匹配



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


看到了吧,相比于基本的正则表达式,原来的反斜线'\\'都去掉了。看上去更简洁了


# 查找含有连续的m的行,m最少2个,最多4个
[root@studyclub jason]# grep -E "m{2,4}" passwd
hommme
homme
hommmmmmmmme

# 查找ho开头并且紧跟若干个m的字符串的行
[root@studyclub jason]# grep -E "hom+" passwd
home
hommme
homme
hommmmmmmmme
jason:x:1000:1000::/home/jason:/bin/bash
james:x:1001:1002::/home/james:/bin/bash
eric:x:1002:1002::/home/eric:/bin/bash
simon:x:1003:1002::/home/simon:/bin/bash
test:x:1004:1004::/home/test:/bin/bash



位置定位



^ 行首
$    行尾
\<或\b 匹配词首,用于单词匹配的最左侧
\>或\b 匹配词尾,用于单词匹配的最右侧


这个和基本正则表达式也是一致的,我们不再赘述。


分组



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


实例演示:


# 我们在之前使用的passwd文件中加入一行:
homehomehomehomehomehome

# 查找连续出现至少2次,最多5次home的行
[root@studyclub jason]# grep -E "(home){2,5}" passwd
homehomehomehomehomehome


下一次推文我们开始学习文本处理三剑客。


手应知:

    尝鲜Rocky Linux

《Linux基础及进阶》:

   057 - Shell基础(9)-条件判断2   058 - Shell基础(10)-条件判断3    059 - Shell基础(11)-关于shell语句中小括号()和大括号{}的作用    060 - 正则表达式(1)-基本正则表达式1    061 - 正则表达式(2)-基本正则表达式2


看完本文有收获?请分享给更多人


推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

微信号|bjdream-1


Cloud研习社 · 




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存