正则表达式 知识量:10 - 22 - 55
在正则表达式应用中,有时需要使用已经通过模式匹配的结果,这种利用前面已经匹配的结果的方式就是回溯引用。回溯引用中,需要首先定义子表达式,子表达式(即使用括号括起来的字符)用来定义字符或表达式的集合。
如果要匹配一段HTML文本中所有的标题标签,例如:H1、H2等等,可以定义一个正则表达式,如下所示。
示例文本:
<!DOCTYPE html> <html> <head> <title>index</title> <meta charset="UTF-8"> </head> <body> <div>TODO write content</div> <h1>Workday</h1> <h2>Monday</h2> <h2>Tuesday</h2> <h2>Wednesday</h2> <h2>Thursday</h2> <h2>Friday</h2> </body> </html>
正则表达式:
<[hH]1>.*</[hH]1>
结果:
Match | Position | Length |
---|---|---|
<h1>Workday</h1> | 256 | 16 |
以上正则表达式只是找出了H1标签,如果要找到所有标题标签,可以如下定义正则表达式:
<[hH][1-6]>.*?</[hH][1-6]>
结果:
Match | Position | Length |
---|---|---|
<h1>Workday</h1> | 163 | 16 |
<h2>Monday</h2> | 188 | 15 |
<h2>Tuesday</h2> | 212 | 16 |
<h2>Wednesday</h2> | 237 | 18 |
<h2>Thursday</h2> | 264 | 17 |
<h2>Friday</h2> | 290 | 15 |
以上正则表达式存在一个问题,如果有一个错误的标题标签,例如<h2>Friday</h3>,结果仍然会匹配出这个错误的标签,要解决这个问题就需要使用回溯引用。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6