当你处理复杂数据时,往往需要提取多层次的信息,这种情况下就会用到嵌套分组(Nested Group)。通常,捕获组的结果是按照它们在正则表达式中出现的顺序(即左括号 ( 出现的顺序)来排列的。
以上一课中的示例为例:我们想要提取图像文件的文件名。如果每个图像文件名中都包含一个顺序编号,那么你可以通过一个正则表达式同时提取整个文件名和图片编号,比如: ^(IMG(\d+)).png$ 这个表达式中使用了嵌套括号,外层捕获完整文件名,内层括号专门提取编号部分。
嵌套分组会从左到右进行编号,第一个捕获组是第一个左括号括住的内容,以此类推。
现在请你为下方的字符串编写一个正则表达式,既能匹配并捕获完整的日期字符串,又能单独捕获年份部分
| Task | Text | Capture Groups | |
| 捕获 | Jan 1987 | Jan 1987 1987 | ![]() |
| 捕获 | May 1969 | May 1969 1969 | ![]() |
| 捕获 | Aug 2011 | Aug 2011 2011 | ![]() |
| 提示 | 这个正则表达式需要捕获数据的两个部分:完整的日期和年份。这就需要使用嵌套的捕获组,比如表达式 (\w+ (\d+))。另外,我们也可以使用 \s+ 来代替空格,以匹配月份和年份之间任意数量的空白字符。 |