正则表达式

正则表达式 知识量:10 - 22 - 55

8.1 什么是回溯引用><

什么是回溯引用- 8.1.1 -

在正则表达式应用中,有时需要使用已经通过模式匹配的结果,这种利用前面已经匹配的结果的方式就是回溯引用。回溯引用中,需要首先定义子表达式,子表达式(即使用括号括起来的字符)用来定义字符或表达式的集合。

回溯引用的作用- 8.1.2 -

如果要匹配一段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>

结果:

MatchPositionLength
<h1>Workday</h1>25616

以上正则表达式只是找出了H1标签,如果要找到所有标题标签,可以如下定义正则表达式:

<[hH][1-6]>.*?</[hH][1-6]>

结果:

MatchPositionLength
<h1>Workday</h1>16316
<h2>Monday</h2>18815
<h2>Tuesday</h2>21216
<h2>Wednesday</h2>23718
<h2>Thursday</h2>26417
<h2>Friday</h2>29015

以上正则表达式存在一个问题,如果有一个错误的标题标签,例如<h2>Friday</h3>,结果仍然会匹配出这个错误的标签,要解决这个问题就需要使用回溯引用。