首页 > 解决方案 > 文本清理 gsub 删除所有内容,直到找到换行符

问题描述

have <- ('Good luck!!!

          ___________________
          Disclaimer: This email, including attachment ....
          .............
          
          Great!!!   
         ')

have <- ('Good luck!!!
          Great!!!
         ')

我正在处理类似电子邮件的数据集,我想在进一步分析之前对其进行清理。有一些恒定的结构,例如在Disclaimer换行符之前和之后的部分,我认为这应该可以使用正则表达式。但免责声明的长度可能会因截断而有所不同。

我目前尝试过的如下

gsub(pattern = 'Disclaimer([\\s\\S]*)[\\n|\\r\\n|\\r]{2}', replacement = '', have)

标签: rregex

解决方案


您可以使用

have <- trimws(gsub("(?m)^\\s*_{3,}\\R\\h*Disclaimer:.*(?:\\R.*\\S.*)*+\\s*", "", have, perl=TRUE))

请参阅R 演示。这是一个正则表达式演示

详情

  • (?m)- ()上的多行模式
  • ^- 一行的开始
  • \s*- 任何零个或多个空格字符
  • _{3,}- 三个或_更多
  • \R- 换行符
  • \h*- 零个或多个水平空格
  • Disclaimer:- 一段文字
  • .*- 线路的其余部分
  • (?:\R.*\S.*)*+- 零个或多个非空行
  • \s*- 任何零个或多个空格字符。

推荐阅读