为了账号安全,请及时绑定邮箱和手机立即绑定

难以理解捕获组和回引用

难以理解捕获组和回引用

Cats萌萌 2019-07-22 10:02:37
难以理解捕获组和回引用为了对正则表达式有所了解,我决定阅读一本关于正则表达式的书,引入正则表达式..我知道这很愚蠢,但是其中一个介绍性的例子对我来说没有意义。(\d)\d\1样本文本:123-456-7890(如果捕捉到第一个数字,123)有人能解释这里面发生了什么吗?据我所知,第一个\d捕捉数字123。这个\1反向引用(标记)组,供以后使用。括号限制了组的范围。但是第二个\d有吗?简单的解释,像小孩子或金毛猎犬是首选。
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

\d只是数字。

此正则表达式不匹配"123-456-7890"字符串,但它将匹配"323"(例如,这可能是更大字符串的一部分)。"323-456-7890") :

 (\d) : first digit ("3")
 \d   : another digit ("2")
 \1   : first group (which was "3")

如果你的书假装(\d)\d\1应该捕获"123"在……里面"123-456-7890"它可能包含一个错误.。


查看完整回答
反对 回复 2019-07-22
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

(\d)\d\1一步地:

  1. 第一

    \d

    匹配一个数字
  2. 和括号

    ()

    将这个数字标记为一个捕获组,这是第一个,所以这个数字被记为“第一组”。
  3. 第二

    \d

    说还有另外一个数字
  4. \1

    上面写着“这是我们上一组的值”-这是步骤1中匹配的数字。

所以就像dystroy已经说过的:正则表达式应该匹配一个三位数的序列,其中第一位和第三位是相等的。


查看完整回答
反对 回复 2019-07-22
  • 2 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信