Как сопоставить слова, в которых должны быть буквы, цифры и косые черты, с помощью регулярных выражений (Python)? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть такой список (это только часть);

not match me
norme
16/02574/REMMAJ
20160721
17/00016/FULM
OUT/2017/1071
SMD/2017/0391
17/01090/FULM
2017/30597
17/03940/MAO
18/00076/FULM
CH/17/323
18/00840/OUTMEI
17/00902/EIAM
PL/2017/02671/MINFOT

Мне нужно найти общее правило, чтобы сопоставить их все, кроме первых строк (простых слов) или любого из \d, ни \w если не смешивать друг с другом и косой чертой.Допускаются такие числа, как \d{8}.

Я не знаю, как использовать что-то вроде условия MUST, применяемого для каждой из этих трех групп вместе - ни одна из них не может быть пропущена.

Эти шаблоны либо совпадаютне полностью или не соответствует словам.Нужно как можно более простое регулярное выражение.

\d{8}|(\w+|/+|\d+) \d{8}|[\w/\d]+

РЕДАКТИРОВАТЬ

Это забавно, но некоторые не предоставленные примеры не делаютt соответствует предложенным выражениям.Например:

7/2018/4127 
NWB/18CM032

но я знаю почему, и это выходит за рамки.Тем не менее, добавление функциональности для смешанных цифр и букв в одной группе, например NWB/18CM032, было бы замечательно и не нарушило бы предыдущую идею, я думаю.

1 Ответ

0 голосов
/ 09 февраля 2019

Вы можете сопоставить 1 или более раз верхний регистр или 1-8 цифр и повторить это ноль или более раз с добавленной косой чертой:

^(?:[a-z0-9]+(?:/[a-z0-9]+)+|\d{8})$

Это будет соответствовать

  • ^ Начало строки
  • (?: Группа без захвата
    • [a-z0-9]+ Совпадение с символом az или цифрой 1+ раз
    • (?:/[a-z0-9]+)+ Совпадениеa /, за которым следует символ или цифра 1+ раз и повторение 1+ раз.
    • | Или
    • \d{8} Совпадение 8 цифр
  • ) Закрыть группу
  • $ Конец строки

Посмотреть на regex101

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