1.6 捕获分组和后向引用
本节我们使用捕获分组(capturing group)来匹配电话号码中的某一部分。然后使用后向引用(backreference)对分组中的内容进行引用。要创建捕获分组,先将一个\d
放在一对圆括号中,这样就将它放入了一个分组中,后面可以用\1
来对捕获的内容进行后向引用:
(\d)\d\1
\1
对括号内分组捕获的内容进行了反向引用。这个正则表达式匹配的是区号707。以下是对该表达式的详细分析:
(\d)
匹配第一个数字并将其捕获(数字7);\d
匹配第二个数字(数字0)但没有捕获,因为没有括号;\1
对捕获的数字进行反向引用(数字7)。
这个正则表达式只匹配了区号。如果你还没有完全理解,请不要担心。本书后面会介绍很多有关捕获分组的示例。
现在可以用一个分组和几个后向引用对整个电话号码进行匹配:
(\d)0\1\D\d\d\1\D\1\d\d\d
但这还不够简洁美观。下一节我们会尝试更好的方法。