如何使用正则表达式从R中的文本字符串中查找/替换所有URL /链接

时间:2015-10-22 15:35:40

标签: regex r parsing emacs

我有一个n行的文本文件,每行都是一个字符串。

我想将其导入 R 并使用正则表达式依次删除所有以http开头的网址。

以下内容适用于交互式正则表达式检查程序(在Emacs中重新构建),但不在R中。

gsub("http:.*?[([:space:])| |\n]", "", x))

注意

这个问题和我给出的答案源于this question关于正则表达式引擎及其相互兼容性。

1 个答案:

答案 0 :(得分:0)

我的解决方案如下:

output <- sapply(input, FUN = function(x) gsub("http\\S+\\s*", "", x))
  • sapply对数据框的每一行执行 S 暗示的功能(在我的情况下)。
  • gsub使用正则表达式查找每个链接并将其删除,方法是将其替换为 nothing ""
  • 正则表达式:"http\\S+\\s*"

    1. “http”查找input
    2. 中所有“http”的出现
    3. “\ S +”继续从http到所有非空格字符
    4. “\ s *”在找到一个或多个空白字符时结束搜索
  • 尾随x只是函数定义FUNsapply函数中指向的输入。

我认为主要的消失(至少对我而言)是在R中使用双反斜杠。例如,使用以下正则表达式,我能够删除Emacs中的所有URL交互式正则表达式检查器(Emacs命令:M-x re-builder),但不在R:

"http:.*?[([:space:])| |\n]"

我不确定如何做到这一点,因为以目标文本交互式测试正则表达式是很多免费online tools,但R使用它自己的正则表达式。 可以使用Perl(版本5.x)正则表达式引擎,但我的回答可以避免这种情况。

this thread中的简短讨论可能有助于解释这一切。