Regex для идентификации идентификатора медицинского бенефициара (MBI) в python - PullRequest
0 голосов
/ 07 декабря 2018

Итак, я пытаюсь создать регулярное выражение для MBI (идентификаторов медицинских бенефициаров) в python, и мои регулярные выражения не будут работать.

Любой пример MBi: 1EG4-TE5-MK73

Вот формат для MBI:

  • 11-символов

  • 2-й, 5-й, 8-й и 9-й символы MBI всегда будут буквой.

  • Символы 1, 4, 7, 10 и 11 будут всегдабыть числом.

Я пытался использовать следующее регулярное выражение, но безрезультатно:

mbi=re.compile(r"[1-9]{1}[^SLOIBZsloibz|^0-9]{1}[^SLOIBZsloibz]{1}[0-9]{1}-?[^SLOIBZsloibz|^0-9]{1}[^SLOIBZsloibz]{1}[0-9]{1}-?[^SLOIBZsloibz|^0-9]{1}[^SLOIBZsloibz|^0-9]{1}[0-9]{1}[0-9]{1}")

Есть предложения?!?!

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вот формат для MBI:

  1. 11-символьный
  2. 2-й, 5-й, 8-й и 9-й символы MBI всегда будут буквой.
  3. Символы 1, 4, 7, 10 и 11 всегда будут цифрами.

Нет никаких упоминаний о 3-м и 6 * символов, но на основе вашего примера вы можете использовать регулярные выражения, такие как:

\b\d[A-Z]{2}\d-[A-Z]{2}\d-[A-Z]{2}\d{2}\b

Regex Demo


Regex Объяснение: enter image description here

0 голосов
/ 07 декабря 2018

Итак, исходя из вашего регулярного выражения, некоторые вещи, которые вы пытались сделать, были синтаксически неверны.Количественная оценка через фигурные скобки не требуется, если вы хотите, чтобы это происходило только один раз, из-за чего {1} становится избыточным.Итак, я удалил эту часть из вашего регулярного выражения.Вторая вещь в вашем наборе символов,

[^SLOIBZsloibz|^0-9]

, как я вижу, вы хотите отрицать некоторые алфавиты и 0-9 цифр.Вам не нужно применять чередование, когда вы используете набор символов [].Помимо отрицания этих алфавитов в вашем наборе символов, если вы также хотите отрицать число 0-9, вам просто нужно поместить его туда, и ваш правильный правильный набор символов станет,

[^SLOIBZsloibz0-9]

После применения этих исправлений вваше регулярное выражение, ваше регулярное выражение становится этим, и это то, что вам нужно, я думаю.

^[1-9][^SLOIBZsloibz0-9][^SLOIBZsloibz][0-9]-?[^SLOIBZsloibz0-9][^SLOIBZsloibz][0-9]-?[^SLOIBZsloibz0-9][^SLOIBZsloibz0-9][0-9][0-9]$

Демо

Дайте мне знать, если это работаетхорошо для вас.

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