日期的正则表达式和同时查找 BP 值

Regex for date and and finding BP values simultaneously

我有非结构化数据,我必须在其中提取 BP 值和日期(具有不同的格式),如下所示。现在我有一个正则表达式函数来提取 Bp 值。我有一个特殊情况,如图中突出显示的那样,必须提取连续日期甚至单个遇到的日期(不是 DOB)。

目前,我的代码只给出了 BP 值。我想要 Bp 的正则表达式函数并同时提取日期。

我附上了下面的正则表达式代码。

regex = r'\b(?:BP:?(?:-Sitting)?|Blood Pressure) \d+/\d+(?: \d+/\d+|  \d+/\d+)*(?: sm| -Lw| cB| Jr|\
    -aA| cs| -ic| ic| -RG|  kA| -sL| BL| kc| am| -sH| sH| es| ts| np| 8s| ca| Pm| JE| so| cp| v8| Eu| -cp|\
    Pm| EB| Fr| -Fr| -ms| -LN| -mT| -mk| -GF| -HO| Jp| wD| 8m| mc| -mc| Yr| -Lp| -ml| -LA| s/d| -aA| s/d|mmHg| mm Hg|\
    mm hg.|.?)?|B/P - (?:Sys|Dias)tolic \d+|(?:Sys|Dias)tolic Blood Pressure \d+ \w+\b'

当前输出的图像如下所示,其中不包括日期。

如有任何帮助,我们将不胜感激。

一个选项是在匹配 \d+/\d+ 的部分添加匹配可选的 / 和 1 个或多个数字。

您可以将此部分 \d+/\d+(?: \d+/\d+| \d+/\d+)* 缩短为 \d+/\d+(?: ?\d+/\d+)*,因为唯一的区别是交替匹配 1 或 2 个空格。

在第一部分和重复中添加匹配的可选正斜杠和 1 个或多个数字看起来像 \d+/\d+(?:/\d+)?(?: ?\d+/\d+(?:/\d+)?)*

更新的模式:

\b(?:BP:?(?:-Sitting)?|Blood Pressure) \d+/\d+(?:/\d+)?(?:  ?\d+/\d+(?:/\d+)?)*(?: sm| -Lw| cB| Jr|\
    -aA| cs| -ic| ic| -RG|  kA| -sL| BL| kc| am| -sH| sH| es| ts| np| 8s| ca| Pm| JE| so| cp| v8| Eu| -cp|\
    Pm| EB| Fr| -Fr| -ms| -LN| -mT| -mk| -GF| -HO| Jp| wD| 8m| mc| -mc| Yr| -Lp| -ml| -LA| s/d| -aA| s/d|mmHg| mm Hg|\
    mm hg.)?|B/P - (?:Sys|Dias)tolic \d+|(?:Sys|Dias)tolic Blood Pressure \d+ \w+\b

Regex demo

请注意,我省略了交替结尾处的 .?,因为它也会匹配尾随的空白字符。