我想知道在正则表达式中断言的定义是什么。如果有人知道,请告诉我它到底是什么的简要定义。我也希望有一两个这样的例子。
答案1
什么是正则表达式断言?
断言是一个正则表达式,它要么成功(如果找到匹配项),要么失败(如果未找到匹配项)。
它们由锚点 (Anchors) 和环视点 (Lookarounds) 组成。
锚点
锚点是零宽度断言。它们不会导致引擎遍历字符串或消耗字符,并且可以是以下之一:
^
- 匹配必须从字符串或行的开头开始。
$
- 匹配必须出现在字符串的末尾,或者出现在行或字符串末尾的 \n 之前。
\A
- 匹配必须出现在字符串的开头。
\Z
- 匹配必须出现在字符串的末尾或者字符串末尾的 \n 之前。
\z
- 匹配必须出现在字符串的末尾。
\G
- 本场比赛必须在上一场比赛结束的地方进行。
\b
- 匹配必须出现在\w
(字母数字)字符和\W
(非字母数字)字符之间的边界上。
\B
- 比赛不能发生在\b
边界上。
环视
前瞻和后瞻,统称为“环视”,是零长度断言,就像行的开始和结束以及单词锚点的开始和结束一样。
不同之处在于,lookaround 确实会匹配字符,但随后会放弃匹配,只返回结果:匹配或不匹配。这就是为什么它们被称为“断言”。它们不会消耗字符串中的字符,而只会断言匹配是否可能。
Lookaround 允许您创建正则表达式,如果没有它们,这些正则表达式就无法创建,或者如果没有它们,这些正则表达式会变得非常冗长。
来源掌握前瞻和后瞻