首先依然进入一个场景:
想要在一个HTML页面中,获取某一个标签的文本内容,例如,获取<h1>AAA</h1>
标题1的文字内容,这里指的是,在两个标签<h1>
中的字符串。根据这个设想,按照之前学习的知识,我们可能想到了使用回溯引用,例如<(h1)>\w+</\1>
,但回溯引用匹配到两个<h1>
以及之间的内容,对于<h1>
与<\h1>
之间的内容束手难测。按照这种情况下,引出正则表达式的“前后查寻”功能。
前后查询是什么?
前后查询包含匹配本身,但并不返回,而是用于确定正确的匹配的位置,并不是匹配结果的一部分。即找到我们想要的位置,换句话说也就是根据前面的结果,按照特定条件,来返回我们想要的内容。
注意:常见的正则表达式都支持向前查找,Java、PHP等支持向后查找。具体情况,根据所使用的语言,查看官方文档,来进行查找。
前后查询怎么使用?
向前查找模式
语法
以?=
开头的子表达式,需要匹配的内容放在=
的后面。
?=
也被称为向前查找符。
例如,\w+(?=.)
将匹配.
前的一串字符。这在某种意义上,像定位符,子表达式的内容表示先定位到想要的位置,然后再进行匹配。
正则表达式
\w+(?=,)
该正则表达式,表示找到,
前的一个单词构成的字符串。
根据上图结果显示,在全文中匹配到了,
前的一个单词,如Expression、Regexp等单词。
向后查找模式
语法
以?<=
开头的子表达式,需要匹配的内容放在=
的后面。
?<=
也被称为向后查找符。
例如,(?<=,).
将匹配,
后的任一一个字符。
正则表达式
(?<=,) \w+
该正则表达式,表示找到,
后的一个空格字符与单词组成的字符串。
根据上图结果显示,在全文中匹配到了,
后的一个空格字符与单词组成的字符串,如
JavaScript
、 Google
等内容。
补充
正则表达式中除了向前查找模式、向后查找模式外,还有对前后查找取非的操作。
比如(?!)
表示负向前查找、(?<!)
表示负向后查找,对这部分感兴趣的同学,可以自行查阅相关资料,这里就不介绍案例来展示了。
本节测试用例
Regular Expressions, abbreviated as Regex or Regexp,
are a string of characters created within the framework of Regex syntax rules.
You can easily manage your data with Regex, which uses commands like finding,
matching, and editing. Regex can be used in programming languages
such as Python, SQL, JavaScript, R, Google Analytics, Google Data Studio,
and throughout the coding process. Learn regex online with examples and tutorials on RegexLearn now.
RegexRegex
专栏总结
关于正则表达式入门系列的专栏就先讲到这里了,后续如果还有一些跟正则表达式相关的内容也会放到这个专栏中。
「参考」
《正则表达式必知必会》