正则表达式分组子表达式
基于 ECMAScript 正则表达式语法
一对括号就是一个分组。\1 引用第一个分组所匹配到的内容,\2、\3 等同理。
示例:(a+)b\1 匹配 aabacaabaa
可匹配到两处:aba 和 aabaa。
第一次匹配
- 位置 0:
(a+)贪婪匹配aa(位置 0–1),b匹配位置 2 成功,\1需要aa但位置 3–4 是ac,失败。回溯(a+)为a(位置 0),b在位置 1 是a,失败。 - 位置 1:
(a+)匹配a(位置 1),b匹配位置 2 成功,\1需要a,位置 3 是a,匹配成功。 - 匹配结果为
aba(位置 1–3),分组 1 捕获a。
第二次匹配
- 位置 4:字符
c不符合a+,跳过。 - 位置 5:
(a+)匹配aa(位置 5–6),b匹配位置 7 成功,\1需要aa,位置 8–9 是aa,匹配成功。 - 匹配结果为
aabaa(位置 5–9),分组 1 捕获aa。