【问题标题】:Numeric string extraction after expression表达式后的数字字符串提取
【发布时间】:2021-03-30 21:02:47
【问题描述】:

嗨,我在 Dataframe 中有这个刺痛(列被命名为值)

Laboratory <- as_tibble("Hematologie: Leukocyty  [WBC]: 11.0 [10^9/l] ,Erytrocyty  [RBC]: 5.19 [10^12/l], Hemoglobin  [HGB]: 167 [g/l] ,Hematokrit  [HCT]: 0.465 [1], Bio: | Urea: 3.6 | Creatinin: 87 | Sodium: 145")

我想得到一个表格,其中列将是 WBC、Bio 和 Urea 的值

DF Laboratory

 WBC  Bio  Urea
 11.0 NA   3.6

我试试这个

Laboratory %>%
 mutate(WBC = str_extract(value,"(?<=[WBC]:).+(?=[10^9/l]"),
 Bio = str_extract(value,"(?<=Bio:).+(?=\\|"), 
 Urea = str_extract(value,"(?<=Urea:).+(?=\\|"))

但是有一个错误

Incorrectly nested parentheses in regexp pattern.

【问题讨论】:

    标签: r regex string


    【解决方案1】:

    你可以使用

    Laboratory %>%
     mutate(WBC = trimws(str_extract(value,"(?<=\\[WBC]:\\s)[^\\[]+")),
     Bio = str_extract(value,"(?<=Bio:\\s)[^\\s|]+"), 
     Urea = str_extract(value,"(?<=Urea:\\s)[^|\\s]+")
    )
    

    详情

    • (?&lt;=\\[WBC]:\\s)[^\\[]+ (demo) - 在[WBC]: 和一个空格之后匹配除[ 之外的一个或多个字符(trimws 删除前导/尾随空格)
    • (?&lt;=Bio:\s)[^\s|]+ (demo) - 在Bio: 和一个空格之后匹配除空格和| 之外的一个或多个字符
    • (?&lt;=Urea:\s)[^|\s]+ - 类似于上面的模式,只是 Urea: 字符串。

    在最后两个模式中,您可以将 \s 放在后视 ((?&lt;=Bio:\\s) -> (?&lt;=Bio:)) 和取反字符类中,但您需要将 trimws 的结果匹配值放在第一种情况是WBC

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 2021-12-17
      • 1970-01-01
      • 2011-05-10
      • 2014-08-25
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多