正则表达式

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

应用场景

  • 验证: 表单提交时,进行用户名密码验证。
  • 查找: 从大量信息中快速提取指定内容。在一批url中,查找指定url
  • 替换: 将指定格式的文本,进行正则匹配查找,找到之后进行特定替换,(vim文本替换等)
    在很多技术领域(比如,自然语言处理,数据存储等),正则表达式可以很方便的提取出我们想要的信息,所以这部分必不可少

    构成基本要素

  • 字符类
  • 数量限定符
  • 位置限定符
  • 特殊符号

1. 字符类:

应用:

2. 数量限定符:

应用:

3. 位置限定符:

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

4. 特殊符号:

应用:

正则表达式版本

其他常用通用字符集及其替换

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

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

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

版本间区别

  • 正则表达式的Extended规范和Basic规范基本相同。只是在Basic规范下,有些字符 ?+{}|() 应解释为普通字符,要表示上述特殊含义则需要加  转义。
  • 反之,在Extended规范下, ?+{}|() 应该被理解成特殊含义,要取其字面值,也要对其进行  转义。
  • 所以, grep 工具带上 -E 选项,表示使用扩展正则来进行匹配,若没有,则表示使用基准正则进行匹配。亦或者直接使用egrep 命令操作
  • 带-P选项使用的perl正则匹配是perl语言的集成一种最重要特性,它十分强大,很多语言设计正则式支持的时候基本上都参考Perl的正则表达式。

正则匹配模式

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

10-02 16:30
查看更多