zoukankan      html  css  js  c++  java
  • 第九章 前后查找

    9.1 前后查找
    用正则表达式标记要匹配的文本的位置(而不仅仅是文本本身)。
    前后查找(lookaround),对某一位置的前、后内容进行查找。
     
    例子:把一个web页面的页面标题提取出来。
    ?<=<[tT][iI][tT][lL][eE]>.*?=</[tT][iI][tT][lL][eE]>
     
     
    9.2 向前查找(正向前查找positive kookahead)
    向前查找指定了一个必须匹配但不在结果中返回的模式。
     
    ?=将向前查找(查找出现在被匹配文本之后的字符,但不消费这个字符)。
    一个向前查找的其实就是一个以?=开头的子表达式,需要匹配的文本跟在=以后。
     
    例子:把URL中协议名部分提取出来(为下一步处理做准备)。
    .+(?=:)
    只要匹配到:就可以了,但不出现在匹配的结果里,用术语表达就是“不消费”。
     
    备注:向前查找(或向后查找)匹配本身其实是有返回结果的,知识这个结果的字节长度永远是0而已。
    因此,前后查找操作有时也被称为零宽度(zero-width)匹配操作。
     
    提示:任何一个子表达式都可以转换为一个向前查找表达式,只要给它加上一个?=前缀即可。
    在同一个搜索模式里可以使用多个向前查找表达式,他们可以出现在模式里的任意位置。
     
     
    9.3 向后查找(正向后查找positive lookbehind)
    ?<=向后查找,查找出现在被匹配文本之前的字符(但不消费它。)
     
    备注:向前查找模式的长度是可变的,它们可以包含.和+之类的元字符,非常灵活。
    而向后查找模式只能是固定长度,这是一条几乎所有正则比到达时实现都遵循的限制。(不是所有的语言都支持向后查找)
     
     
    9.4 把向前和向后查找结合起来
    向前和向后查找可以组合在一起使用。
     
    9.5 对前后查找取非
    负向前查找(negative lookahead)将向前查找不与给定模式相匹配的文本。?!
    负向后查找(negative lookbehind)将向后查找不与给定模式相匹配的文本。?<!
     
     
     
     

  • 相关阅读:
    SQL JOB
    Log4net配置
    教你怎么使用Windows7系统自带的备份与还原的方法
    在LINQ TO SQL 中使用MVC3中的DataAnnotations 【MetadataType】
    图片下载
    DOS的一些常用命令
    自动合并多个文件如js css等 可以增加效率
    利用$.getJSON() 跨域请求操作
    在razor中使用递归,巧用递归
    Use ASP.NET and DotNetZip to Create and Extract ZIP Files
  • 原文地址:https://www.cnblogs.com/mumulin99/p/9838557.html
Copyright © 2011-2022 走看看