Граница слова в большинстве диалектов регулярных выражений - это позиция между \w
и \W
(не состоящая из слов char) или в начале или конце строки, если она начинается или заканчивается (соответственно) словом символ ([0-9A-Za-z_])
.
Что такое граница слова в регулярном выражении?
Что происходит, если символ \
не является частью группы \w
, таким образом, каждый раз, когда в вашей строке появляется новая \
, она считается новой границей слова.
Вы не указали всю подходящую строку, но я могу решить пример, который вы разместили, который вы могли бы решить просто поставив якоря ^$
^((?:(?:0)[0-9])|(?:(?:1)[0-2])|(?:(?:[1-9])))(?:\/|\\)(\d{4})$
https://regex101.com/r/xncZNN/1
edit:
Работая над полным примером и Ваше регулярное выражение Я сделал некоторую «очистку», потому что это немного сбивало с толку, но я думаю, что понял схему, которую вы пытались отобразить
вот новый:
(?<=^|[a-zA-Z ])(0[0-9]|1[12]|[1-9])(?:\/|\\)([\d]{4})(?=[a-zA-Z ]|$)
У меня есть заменил границу слова на lookahead (?!...)
и lookbehind (?<!...)
, и указан шаблон, который я хочу соответствовать до и после даты. Вы можете настроить его в соответствии с вашими потребностями c и добавить другие символы, такие как цифры или данные c.
https://regex101.com/r/xncZNN/4