南强小屋 Design By 杰米

正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。类似于生活中常见的寻人启示,通过描述一个人的特征来进行“搜索匹配”
如今正则已经被我们广泛应用,目前被集成到了各种文本编辑器/文本处理工具当中

应用场景**验证: **表单提交时,进行用户名密码验证。**查找: **从大量信息中快速提取指定内容。在一批url中,查找指定url替换: 将指定格式的文本,进行正则匹配查找,找到之后进行特定替换,(vim文本替换等)

在很多技术领域(比如,自然语言处理,数据存储等),正则表达式可以很方便的提取出我们想要的信息,所以这部分必不可少构成基本要素字符类数量限定符位置限定符特殊符号

1. 字符类:

字符 说明 举例 . 匹配任意的一个字符 abc. 可以匹配abcd、abc0等 [] 匹配 [] 内的任意一个字符 [012]a可以匹配0a、1a、2a - 在括号内表示字符范围 如[0-9]可以匹配任何一个数字 ^ 放在[]内前面表示匹配除括号中字符外的任意一个字符 [^ab]c可以匹配1c、dc,但是不能匹配ac、bc [[:xxx:]] grep工具预定义的一些命名字符类 [[:digit:]]可以匹配一个数字,[[:alpha:]]匹配一个字符,[[:lower:]]匹配任何一个小写字母等

应用:

grep使用--color选项将匹配的字符串以红色标注出来Linux下可以用echo $"" src="/UploadFiles/2021-04-02/2020041213454342.png">

注意:使用 . 默认为贪心匹配,和后面的正则匹配方式相关,后面再述。

linux下关于正则表达式grep的一点总结

2. 数量限定符:

字符 说明 举例 "" src="/UploadFiles/2021-04-02/2020041213454344.png">

linux下关于正则表达式grep的一点总结

3. 位置限定符:

字符 说明 举例 ^ 匹配行首位置,从行首开始匹配 ^world只匹配一行开头的world $ 匹配行末位置,从行末尾开始匹配 ;$匹配一行末尾的;号,^$匹配空行 < 匹配单词开始位置 < th匹配this,不匹配teach、ethernet \> 匹配单词末尾位置 p\>匹配sleep、leap等,不匹配parent、sleepy \b 匹配单词的开始位置、末尾位置 如 \borld匹配world、aorld,\borld\b只匹配orld \B 匹配非单词的开头、末尾位置 如 \Bat\B匹配battery,不匹配attend、hat等以字符串"at"开头、结尾的单词

注意:其中 \b 用来限定是目标串中是否有以指定字符串开头的单词,我们称之为词界。 \B 称之为非词界
应用:

linux下关于正则表达式grep的一点总结

4. 特殊符号:

字符 说明 举例 \ 转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符 <写成<匹配单词开头,.前面加上\写成\.. 的字面值 () 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符 ([0-9]{1,3}\.){3}[0-9]{3}匹配IP地址 | 连接两个子表达式,表示或的关系 n(o|either)匹配no或neither

应用:

( )将包含内容括起来作为一个整体,进而通过数量限定符限定。
linux下关于正则表达式grep的一点总结

| 用来级联多个条件,只要有任意一个匹配,即可匹配,表示或者关系,我们称之为析取符
linux下关于正则表达式grep的一点总结

正则表达式版本其他常用通用字符集及其替换

符号 等价于 匹配 \d [0-9] 数字字符 \D [^0-9] 非数字字符 \w [a-zA-Z0-9_] 数字字母下划线 \W [^\w] 非数字字母下划线 \s [_\r\t\n\f] 表格,换行等空白区域 \S [^\s] 非空白区域

于是, 我们现在可以用这些符号来简化我们正则表达式的编写了?试试

linux下关于正则表达式grep的一点总结

可是结果好像并不如我们所愿?其实这里还与正则表达式版本有关。正则分为以下几个版本:

基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

在grep中指定相应的参数即可,而这几个版本中默认的就是基本正则,带上-E选项就是扩展正则,而带上-P参数就是用perl版正则。解决前面的问题,我们这里让grep带上-P选项便可解决了

版本间区别正则表达式的Extended规范和Basic规范基本相同。只是在Basic规范下,有些字符 "http://www.runoob.com/perl/perl-regular-expressions.html" rel="external nofollow" >perl正则匹配。它是perl语言集成的最重要的一种特性,它十分强大,很多语言设计正则式支持的时候基本上都参考Perl的正则表达式。正则匹配模式

贪婪模式

正则表达式去匹配时,会尽量多的去匹配符合条件的内容,grep命令 默认使用的就是贪婪匹配,linux下关于正则表达式grep的一点总结非贪婪模式
正则表达式去匹配时,会尽量少的匹配符合条件的内容 也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g选项,开启下一组匹配)linux下关于正则表达式grep的一点总结

总结:可以看到,非贪婪模式的标识符,就是贪婪模式的标识符后面加上一个 ?

标签:
linux正则表达式grep

南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米

评论“linux下关于正则表达式grep的一点总结”

暂无linux下关于正则表达式grep的一点总结的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。