【问题标题】:Regex pattern removal in R [duplicate]R中的正则表达式模式删除[重复]
【发布时间】:2018-06-09 16:58:45
【问题描述】:

我有一个向量,其中包含每个观察的列表列表:

"Alcohol Dependence (F10.20),Hep B (Z22.51),Hep C (Z22.52),Opioid Abuse (F11.19),Pain- Back, low (M54.5),Pain- Back, upper (M54.9),Respiratory- Tuberculosis (TB) (A15.9)"

我正在尝试删除括号和其间的所有内容,但我无法确定要在此处使用的正则表达式。我正在使用stringr 包和str_replace_all 函数。任何帮助将不胜感激!

【问题讨论】:

  • 你想要这样的输出:"Alcohol Dependence,Hep B,Hep C,Opioid Abuse,Pain- Back, low,Pain- Back, upper,Respiratory- Tuberculosis"?
  • 链接副本中有stringr 答案。

标签: r regex


【解决方案1】:

正是所要求的 - 它删除了括号和中间的所有内容

str_replace_all(text_line, "\\([^\\)]*\\)", "")

您可能还希望在括号开始之前删除空格:

str_replace_all(text_line, " *\\([^\\)]*\\)", "")

【讨论】:

    【解决方案2】:

    你可以使用这个正则表达式:

    \s*\(.*?\)\s*
    

    并替换为空字符串""

    str_replace_all(your_string, "\\s*\\(.*?\\)\\s*", "")
    

    Demo

    解释:

    • 中间部分 \(.*?\) 使用惰性量词 (*?),因此它会在匹配 ) 时立即停止。开头和结尾的 \\s* 与空格匹配,因此您不会在结果中出现多余的空格。

    【讨论】:

    • 谢谢你的解释和解释......这非常有帮助!
    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2010-10-23
    • 2013-01-07
    • 2010-10-23
    相关资源
    最近更新 更多