【问题标题】:Regex for date and and finding BP values simultaneously正则表达式的日期和同时查找 BP 值
【发布时间】:2021-03-04 06:24:56
【问题描述】:

我有非结构化数据,我必须提取 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'

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

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: python regex data-extraction


    【解决方案1】:

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

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

    在第一部分和重复中添加一个可选的正斜杠和一个或多个数字,看起来像\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

    请注意,我省略了替换末尾的 .?,因为它也会匹配尾随空格字符。

    【讨论】:

    • 标记的第三行呢?在演示中我看不到它。这也适用于这种情况吗?
    • @Shiva 这些是匹配的regex101.com/r/9Gvn3k/1 或者如果你想匹配所有的数字regex101.com/r/hVQbNU/1
    • 在第 3 行中,还必须匹配相遇日期以及 Bp 值。
    • @Shiva 例如,您可以匹配类似日期的格式,并断言在它之前没有DOB regex101.com/r/hftVxU/1 或者可选地匹配整个部分regex101.com/r/iYb9vR/1
    • 是的。它工作得很好。非常感谢@Thefourthbird
    猜你喜欢
    • 2018-07-11
    • 2019-02-27
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2022-07-21
    相关资源
    最近更新 更多