Как сделать, чтобы выражения в кавычках не находились?
(?:\b|\.|\s)+(d{1,4}|m{1,4}|y{4}|y{2}){1}(?:\.|\s){1}(d{1,4}|m{1,4}|y{4}|y{2})?(?:\.|\s)?(d{1,4}|m{1,4}|y{4}|y{2})?(?:\.|\s)?
https://regex101.com/r/ePV1Aq/1
Работает правильно, но находит так же совпадения внутри строк в кавычках, как это исключить? Ну и, может, красивее написать всю эту колбасу заодно. Я пробовал сокращать за счёт повторений, но тогда ломается структура (в match вся дата, в groups отдельные элементы)
Пример:
"Форматы внутри строки в кавычках DD.MM.YYYY не учитывать:" DD.MM.YYYY "и тут dd.mm тоже"
Тут мы видим 3 совпадения, нужно, чтобы находилось только второе, т.к. первое и третье находится внутри строк в кавычках ""
Источник: Stack Overflow на русском