【正则表达式入门】第六节——回溯引用

在这节中,首先进入一个场景:
在文章的匹配中,如果想对两个连续的一样的单词,或者字符进行匹配。也许你想到了使用类似([a]){2}的正则表达式来实现想要的连续字符,或者使用(are){2}的正则表达式来实现想要的连续单词的匹配。但是如果我们想实现一个通用规则,并且是上面提到的对匹配结果的再匹配呢,这时候就要引出正则表达式的利器——回溯引用。

回溯引用是什么?

回溯引用允许正则表达式引用前面的匹配结果,从而进行连续匹配。

而要实现回溯引用,要引出之前讲过的子表达式,这节要介绍子表达式的另一个用途,即定义回溯引用。

怎么实现回溯引用?

使用()来包裹成的子表达式来定义要回溯引用的对象,使用\与数字的组合,来表示对应着正则表达式中的第n个的子表达式。例如,(\d)\1中的\1表示对应第1个子表达式(\d)(\d)(\w)\1\2中的\2表示对应第2个子表达式(\w)

实例1

正则表达式:
[ ]+(\w+)\1
上面的正则表达式表示,要匹配至少一个空格开头的、包含至少一个字符串,以及跟上一个相同字符串组成的复合字符串。

在这里插入图片描述

如上图结果显示,该正则表达式匹配到了全文中,以空格开头的,两个连续字符串组成的组合字符串。

实例2

正则表达式:
[ ]+(\w)+\1

上面的正则表达式表示,要匹配至少一个空格开头的、包含至少一个字符串的、末尾为重复字符的字符串。

在这里插入图片描述

根据上图的结果显示,设计的正则表达式,匹配到了全文中开头是空格,末尾为重复字符的字符串。

区分

看到这里有些小伙伴可能会对上面两个实例搞混,其实这两个区分很容易。
对于实例1来说,正则表达式[ ]+(\w+)\1\1回溯的对象是\w+,即寻找一段和前面一样的连续的字符串。
而对于实例2来说,正则表达式[ ]+(\w)+\1\1回溯的对象是\w,即寻找一个字符和前面一样的字符。单独的子表达式(\w),可以匹配全文的连续字符串,如下图所示。

在这里插入图片描述

而对于正则表达式(\w)\1,则会匹配全文中连续的两个字符,如下图所示。

在这里插入图片描述

根据上面的两个补充图片,可以看到,正则表达式(\w)+\1,其中的+表示我们要匹配的是一个字符串,而不是仅仅是一个字符,所以才会匹配到末尾为重复字符的字符串。

本节测试用例

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 is wonderful!

「参考」
《正则表达式必知必会》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值