Несоответствие регулярных выражений - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь сопоставить значения в этом формате:

, ####-####-####-####
, ####-########-#####
, ##-###-#-###-##-#-####

Например: 2018-03-10, 2018-02-10-2019, 10-20-2016

должен захватывать только , 2018-02-10-2019, но захватывает всю линию.

, в начале не является обязательным. Я в основном пытаюсь найти значения, в которых есть 3 или более дефисов.

Вот что я использую:

(, )?([\/-]?)(\d+[\/-]?){4,}

Это не только захват желаемых значений, но и захват таких значений:

30/05/2018

Может кто-нибудь помочь мне решить эту проблему?

Редактировать # 1:

Это не повторяющийся вопрос, один совпадает через дефис, а другой совпадает с цифрами. Они находятся в разных местах и ​​представляют разные вещи.

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать это регулярное выражение (\d+(?:\-\d+){3,}).

\d+ делает так, чтобы совпадение содержало цифры в начале.

(?:\-\d+){3,} соответствует дефису, и любое число цифр повторяется 3 или более раз. Символ?: Предназначен для того, чтобы сделать группу (часть внутри круглых скобок) группой без захвата, чтобы результаты этой группы не возвращались в совпадении (например, re.findall).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...