正则表达式-6.查找方向

1. 前后查找

如果,需要一个模式,它包含的匹配本身并不返回,而是用于确认正确的匹配位置,它并不是匹配结果的一部分。这时就需要进行“前后查找”(一般而言,前后查找模式是相对于查找文本的位置而言,左为前)。

注意:前后查找包括向前查找(lookahead)和向后查找(lookbehind)。常见正则表达式都支持向前查找。但是Java,.NET,PHP和Perl支持的向后查找有一些限制。JavaScript和ColdFusion不支持向后查找。

2. 向前查找

  • 向前查找的子表达式用?=开头,需要匹配的文本跟在=的后面。
  • 向前查找指定了一个必须匹配但是不在结果中返回的模式。
  • 向前查找实际上是一个子表达式。
// 匹配协议名
"http://www.baidu.com/".match(/.+(?=:)/g); // ["http"]

注意:

  • 向前查找(和向后查找)匹配本身是有返回结果的,但是这个返回结果的字节长度永远是0。因此向前查找也被成为零宽度(zero-width)匹配操作.
  • 任何子表达式都可以转换为向前查找的表达式。在同一个搜索模式中可以使用多个向前搜索的表达式,它们可以出现在模式的任何位置。

3. 向后查找

  • 向后查找子表达式用?<=开头
  • 不是所有的正则表达式引擎都支持向后查找

下一篇:零宽断言

你可能感兴趣的:(正则表达式-6.查找方向)