难以理解捕获组和回引用

难以理解捕获组和回引用

为了对正则表达式有所了解,我决定阅读一本关于正则表达式的书,引入正则表达式..我知道这很愚蠢,但是其中一个介绍性的例子对我来说没有意义。

(\d)\d\1

样本文本:

123-456-7890

(如果捕捉到第一个数字,123)

有人能解释这里面发生了什么吗?

据我所知,第一个\d捕捉数字123。这个\1反向引用(标记)组,供以后使用。括号限制了组的范围。但是第二个\d有吗?

简单的解释,像小孩子或金毛猎犬是首选。


慕无忌1623718
浏览 348回答 2
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"它可能包含一个错误.。

肥皂起泡泡

(\d)\d\1一步地:第一\d匹配一个数字和括号()将这个数字标记为一个捕获组,这是第一个,所以这个数字被记为“第一组”。第二\d说还有另外一个数字\1上面写着“这是我们上一组的值”-这是步骤1中匹配的数字。所以就像dystroy已经说过的:正则表达式应该匹配一个三位数的序列,其中第一位和第三位是相等的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java