什么是环视?

环视是一种非捕获分组,它根据某个模式之前或之后的内容匹配其他模式。环视也称为 零宽度断言(来自《学习正则表达式》书籍)。

环视的英文叫做 lookaround,这是在“精通正则表达式”一书中的叫法。在不同的书籍跟文档中,它又被叫做“断言”,“前视”,“预搜索”等。

通俗的说,环视就是我们要匹配某个特定的字符串时,要求该字符串之前、之后必须有某些字符,或者之前、之后不能出现某些字符。

例如:匹配单词“hello”,且后面必须紧跟“world”单词。如下图:

上图中,仅仅匹配了“hello world”文本中的“hello”文本。这里仅仅演示了目标匹配文本后面环视的情况,下面列出了前后、非前后环视:

  • 假设要匹配某个单词“hello”,且要求紧随其后的单词是“world”

  • 假设要匹配某个单词“hello”,且要求紧随其后的单词不是“world”

  • 假设要匹配某个单词“world”,且要求其紧随前面的单词是“hello”

  • 假设要匹配某个单词“world”,且要求其紧随前面的单词不是“hello”

正则表达式中,将上面四种描述情况给出了如下命名和语法:

  • 正前瞻:也可称为“肯定顺序环视”,语法:(?=expresion) 意思为子表达式能够匹配右侧文本

  • 反前瞻:也可称为“否定顺序环视”,语法:(?!expresion) 意思为字表达式不能匹配右侧文本

  • 正后顾:也可称为“肯定逆序环视”,语法:(?<=expresion) 意思为子表达式能够匹配左侧文本

  • 反后顾:也可称为“否定逆序环视”,语法:(?<!expresion) 意思为子表达式不能匹配左侧文本

上面四种类型的环视,将在后续章节进行详细介绍

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号