用于在 python 中识别医疗受益人标识符 (MBI) 的正则表达式

Regex to identify a Medical Beneficiary Identifier(MBI) in python

所以我正在尝试为 python 中的 MBI(医疗受益人标识符)创建一个正则表达式,但我的正则表达式不起作用。

MBi 的任何示例是:1EG4-TE5-MK73

这是 MBI 的格式:

我尝试使用以下正则表达式但无济于事:

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}")

有什么建议吗?!?!

好的,根据您的正则表达式,您尝试做的某些事情在语法上是不正确的。当您希望它只发生一次时,不需要通过花括号进行量化,因为 {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]$

Demo

让我知道这是否适合您。

Here is the format to MBIs:

  1. 11-Characters
  2. The MBI’s 2nd, 5th, 8th, and 9th characters will always be a letter.
  3. Characters 1, 4, 7, 10, and 11 will always be a number.

没有提及 3rd6th 字符,但根据您的示例,您可以使用如下正则表达式:

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

Regex Demo


正则表达式解释:

我添加了一些 \- 所以它不会将哈希算作有效的字母数字字符。

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