linux下关于正则表达式grep的一点总结
正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。类似于生活中常见的寻人启示,通过描述一个人的特征来进行“搜索匹配”
如今正则已经被我们广泛应用,目前被集成到了各种文本编辑器/文本处理工具当中
应用场景**验证: **表单提交时,进行用户名密码验证。**查找: **从大量信息中快速提取指定内容。在一批url中,查找指定url替换: 将指定格式的文本,进行正则匹配查找,找到之后进行特定替换,(vim文本替换等)
在很多技术领域(比如,自然语言处理,数据存储等),正则表达式可以很方便的提取出我们想要的信息,所以这部分必不可少构成基本要素字符类数量限定符位置限定符特殊符号
1. 字符类:
应用:
grep使用--color选项将匹配的字符串以红色标注出来Linux下可以用echo $"" src="/UploadFiles/2021-04-02/2020041213454342.png">
注意:使用 . 默认为贪心匹配,和后面的正则匹配方式相关,后面再述。
2. 数量限定符:
3. 位置限定符:
注意:其中 \b 用来限定是目标串中是否有以指定字符串开头的单词,我们称之为词界。 \B 称之为非词界
应用:
4. 特殊符号:
应用:
( )将包含内容括起来作为一个整体,进而通过数量限定符限定。
| 用来级联多个条件,只要有任意一个匹配,即可匹配,表示或者关系,我们称之为析取符,
正则表达式版本其他常用通用字符集及其替换
于是, 我们现在可以用这些符号来简化我们正则表达式的编写了?试试
可是结果好像并不如我们所愿?其实这里还与正则表达式版本有关。正则分为以下几个版本:
基本的正则表达式(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命令 默认使用的就是贪婪匹配,非贪婪模式
正则表达式去匹配时,会尽量少的匹配符合条件的内容 也就是说,一旦发现匹配符合要求,立马就匹配成功,而不会继续匹配下去(除非有g选项,开启下一组匹配)
总结:可以看到,非贪婪模式的标识符,就是贪婪模式的标识符后面加上一个 ?
下一篇:linux 正则表达式grep实例分析