日期的正则表达式和同时查找 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
请注意,我省略了交替结尾处的 .?
,因为它也会匹配尾随的空白字符。
我有非结构化数据,我必须在其中提取 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
请注意,我省略了交替结尾处的 .?
,因为它也会匹配尾随的空白字符。