При работе со сложными данными, вам иногда может понадобиться извлекать сразу несколько слоев информации, что может привести к появлению вложенных групп. Как правило, результаты полученных групп символов находятся в том порядке, в котором определены шаблоны регулярных выражений.
Возьмем к примеру предыдущий урок, где нам нужно было получить имена всех файлов изображений, которые есть в нашем списке. Если бы у каждого из этих файлов в имени был последовательный номер изображения, то мы могли бы извлечь и имя файла, и номер изображения, используя один и тот же шаблон, например, ^(IMG(\d+))\.png$
(используя вложенные круглые скобки для получения цифр).
Вложенные группы в шаблоне читаются слева направо, причем первая полученная группа символов является содержимым первой группы скобок и т.д.
Для строк, указанных ниже, напишите выражение, которое будет соответствовать как полной дате, так и только годам.
Задание | Текст | Результат | |
Захватить | Jan 1987 | Jan 1987 1987 | ![]() |
Захватить | May 1969 | May 1969 1969 | ![]() |
Захватить | Aug 2011 | Aug 2011 2011 | ![]() |
Решение | Данное регулярное выражение требует захвата двух частей данных: года и полной даты. Для этого мы можем использовать вложенные группы шаблонов, как в выражении (\w+ (\d+)).
В качестве альтернативы мы можем использовать |