正则表达式:断言

Mih*_*nen 3 regex

我想知道正则表达式上下文中断言的定义是什么。如果有人知道,请告诉我它实际上是什么的简短定义。我也希望能找到一两个这样的例子。

Dav*_*ill 5

什么是正则表达式断言?

断言是一个正则表达式,它要么成功(如果找到匹配),要么失败(如果未找到匹配)。

它们由锚点和环视点组成。


锚点是零宽度断言。它们不会导致引擎在字符串中前进或消耗字符,并且可以是以下之一:

  • ^- 匹配必须从字符串或行的开头开始。

  • $- 匹配必须出现在字符串末尾或行或字符串末尾的 \n 之前。

  • \A- 匹配必须出现在字符串的开头。

  • \Z- 匹配必须出现在字符串末尾或字符串末尾的 \n 之前。

  • \z- 匹配必须出现在字符串的末尾。

  • \G- 比赛必须在上一场比赛结束的地点进行。

  • \b- 匹配必须出现在\w(字母数字)和\W(非字母数字)字符之间的边界上。

  • \B- 比赛不得发生在\b边界上。

正则表达式语言 - 快速参考


环顾四周

Lookahead 和 Lookbehind 统称为“lookaround”,是零长度断言,就像行的开头和结尾以及单词锚点的开头和结尾一样。

不同之处在于,lookaround 实际上匹配字符,但随后放弃匹配,仅返回结果:匹配或不匹配。这就是为什么它们被称为“断言”。它们不消耗字符串中的字符,而仅断言是否可能匹配。

Lookaround 允许您创建没有它们就无法创建的正则表达式,或者没有它们就会变得非常冗长。

前向和后向零长度断言

在此输入图像描述

掌握前瞻和后瞻


进一步阅读