Регулярное выражение для соответствия отдельным 4-значным годам - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь сопоставить годы (например, 1975 или 2019) в текстовой строке.

Регулярное выражение [12][09]\d\d приводит к правильным совпадениям, но я хотел бы настроить его так, чтобы ононе соответствует годовой части более длинной временной метки, т. е. 01.01.2019 должен , а не дать совпадение.

Я пытался добавить границу слова \b[12][09]\d\d, но точка, кажется, удовлетворяетэто тоже.

1 Ответ

1 голос
/ 06 ноября 2019

Вы можете использовать

\b(?<!\d\.)(?:19|20)\d\d\b(?!\.\d)

См. Демоверсию regex

Подробности

  • \b- граница слова
  • (?<!\d\.) - прямо перед текущим местоположением не должно быть цифры, за которой следует точка
  • (?:19|20) - 19 или 20
  • \d\d - любые две цифры
  • \b - граница слова
  • (?!\.\d) - непосредственно справа от текущего местоположения, не должно быть . и цифры.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...