捕获组分为:
- 普通捕获组(Expression)
- 命名捕获组(?Expression)
普通捕获组
从正则表达式左侧开始,每出现一个左括号"("记做一个分组,分组编号从 1 开始。0 代表整个表达式。
对于时间字符串:2017-04-25,表达式如下
(\d{4})-((\d{2})-(\d{2}))
有 4 个左括号,所以有 4 个分组:
编号 | 捕获组 | 匹配 |
---|---|---|
0 | (d{4})-((d{2})-(d{2})) | 2017-04-25 |
1 | (d{4}) | 2017 |
2 | ((d{2})-(d{2})) | 04-25 |
3 | (d{2}) | 04 |
4 | (d{2}) | 25 |
命名捕获组
每个以左括号开始的捕获组,都紧跟着 ?,而后才是正则表达式。
对于时间字符串:2017-04-25,表达式如下:
(?<year>\d{4})-(?<md>(?<month>\d{2})-(?<date>\d{2}))
有 4 个命名的捕获组,分别是:
编号 | 名称 | 捕获组 | 匹配 |
---|---|---|---|
0 | 0 | (?d{4})-(?(?d{2})-(?d{2})) | 2017-04-25 |
1 | year | (?d{4})- | 2017 |
2 | md | (?(?d{2})-(?d{2})) | 04-25 |
3 | month | (?d{2}) | 04 |
4 | date | (?d{2}) | 25 |
命名的捕获组同样也可以使用编号获取相应值。