Вы можете изменить это регулярное выражение, в котором есть дополнительные группы, соответствующие вашим дополнительным данным,
(?:(?:\d{1,2}\W)?\w+\W)?\d{4}
Чтобы поддерживать дату как одну или две цифры, вам нужно изменить квантификаторы с {2}
на 1,2
, и, как и в одном из ваших примеров, часть даты отсутствует, поэтому вам нужно сделать (?:\d{1,2}\W)
часть как опцию, поставив ?
после группы, и поскольку в одном из ваших примеров нет части даты и месяца, следовательно, вам нужно сделать опцию (?:(?:\d{1,2}\W)?\w+\W)
также необязательной, поставив ?
после группы, которая будет тогда просто соответствовать вашей части года с \d{4}
В отдельной заметке я предлагаю вам сделать ваше регулярное выражение более конкретным, если вы собираетесь использовать его для сопоставления / извлечения текста из общего текста. Но если вы собираетесь использовать его для сопоставления текста, который не содержит общих строк, тогда все должно быть в порядке. Делайте согласно вашим потребностям.
Regex Demo