为了让我对正则表达式的知识有所了解,我决定阅读一本关于正则表达式的书,介绍正则表达式。我知道这很愚蠢,但其中一个介绍性示例对我来说没有意义。
(\d)\d\1
示例文本:
123-456-7890
(应该捕获第一个数字,
123
)谁能解释一下这里发生了什么?
据我所知,第一个
\d
捕获数字 123。 \1
反向引用(标记)该组以供以后使用。括号限制了组的范围。但是第二个 \d
有什么作用呢?简单的解释,像 child 或金毛猎犬是首选。
最佳答案
\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"
,那么它可能包含一个错误......
关于regex - 无法理解捕获组和反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880127/