博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则的回溯引用
阅读量:6947 次
发布时间:2019-06-27

本文共 597 字,大约阅读时间需要 1 分钟。

Q:将下面HTML片段中正确的标题标签(<h1><h6>)及其包含的内容匹配出来

我是H1

我是div

我是H2

我是span

我是H3

我是错误的H3

我是H4

复制代码

概述

上述这个问题的难点包括:

  1. 必须匹配每个<h1><h6>
  2. 不能将包含在两个标题标签内的标签匹配到,如<span>我是span</span>
  3. 不能匹配格式不正确的标题标签,如<h3>我是错误的H3</h4>

对于第二点,比较好解决,只要在一对标签内采用懒惰性的匹配就能够避免。但是对于第一和第三点,就需要借用正则的回溯引用了

正则的回溯引用

回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式,且只能用来引用模式里的子表达式(子表达式即用元字符()括起来的部分)。简单理解,可以将回溯引用想象成对变量的引用。

使用方法

\1表示引用第1个子表达式,\2表示引用第2个子表达式,以此类推(通常,回溯引用从1开始匹配)。

注意事项

由于子表达式是按照其在表达式中的相对位置来引用的,因此有个不好之处在于,一旦改变了子表达式的相对位置,很容易引起正则的回溯引用失效。

答案来了

OK,现在就可以给出文章开头问题的答案了:

<[hH]([1-6])>.*?
复制代码

其中\1回溯引用第一个子表达式,即引用([1-6])。且开闭标签内采用懒惰性的匹配.*?,而不是贪婪式的.*

转载地址:http://smonl.baihongyu.com/

你可能感兴趣的文章
使用axure动态面板制作轮播图效果
查看>>
我的友情链接
查看>>
将一个驱动器下的所有文件的属性设置为非隐藏
查看>>
出现次数最多的k个数 Top K Frequent Words
查看>>
spark2.2官方教程笔记-spark编程向导
查看>>
U盘安装CentOS6.x和Redhat6.x及以下版本
查看>>
我的友情链接
查看>>
vsftp 配置参数说明
查看>>
phpcms2008index.html当前位置导航phpcms全局变量搜索模块
查看>>
TangYuan使用教程-组合SQL服务标签
查看>>
Mac OS X下安装pyenv
查看>>
CentOS6.x 下 LNMP环境搭建(一、安装 MySQL)
查看>>
DNS中的递归查询与迭代查询
查看>>
NFS详解
查看>>
下载中心常见问题解答【Q&A帮助】
查看>>
教你怎么追一个女孩子,哥认为很有道理。
查看>>
索骥馆-网络营销之《锦囊妙计 网站推广101招 第7版》扫描版[PDF]
查看>>
我的友情链接
查看>>
Swift编程高级教程 变量与常量
查看>>
CCBPM 任务分配流程设计说明
查看>>