1.6 捕获分组和后向引用

本节我们使用捕获分组(capturing group)来匹配电话号码中的某一部分。然后使用后向引用(backreference)对分组中的内容进行引用。要创建捕获分组,先将一个\d放在一对圆括号中,这样就将它放入了一个分组中,后面可以用\1来对捕获的内容进行后向引用:

  1. (\d)\d\1

\1对括号内分组捕获的内容进行了反向引用。这个正则表达式匹配的是区号707。以下是对该表达式的详细分析:

  • (\d)匹配第一个数字并将其捕获(数字7);

  • \d匹配第二个数字(数字0)但没有捕获,因为没有括号;

  • \1对捕获的数字进行反向引用(数字7)。

这个正则表达式只匹配了区号。如果你还没有完全理解,请不要担心。本书后面会介绍很多有关捕获分组的示例。

现在可以用一个分组和几个后向引用对整个电话号码进行匹配:

  1. (\d)0\1\D\d\d\1\D\1\d\d\d

但这还不够简洁美观。下一节我们会尝试更好的方法。