R正则表达式匹配从HTML中删除评论的脚本

时间:2014-10-18 18:49:10

标签: regex r web-scraping

晚上好。

我自己一直试图清理HTML页面中的一些文本,这些文本是我作为语料库构建器的一部分而写的。

文本(存储在fullText)目前看起来像......

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 

/* */
if (ads.isMobile()) { do something scripty in here }
/* */

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore 
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, 
sunt in culpa qui officia deserunt mollit anim id est laborum.

我想删除内部的所有内容,包括/* */分隔符,只留下 lorem ipsum 文本(是的,我知道它们是一个糟糕的选择,但HTML不是我的)

我发现正则表达式\/\*\s\s\*\/(.|[\r\n])*?\/\*\s\s\*\/在一个在线正则表达式编辑器中完成工作,但不在R中。

> regex    <- "\/\*\s\s\*\/(.|[\r\n])*?\/\*\s\s\*\/"
> fullText <- gsub(regex,"",fullText, perl=TRUE)

Error: '\/' is an unrecognized escape in character string starting "\/"

有人想过如何在这里修改正则表达式吗?

1 个答案:

答案 0 :(得分:4)

我发现使用strsplit ...

更容易做到这一点
x <- strsplit(fullText, '\\s*/\\*(?s).*\\*/\\s*', perl=T)[[1]]
cat(paste0(x[1], "\n\n", x[2]))

输出......

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore 
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, 
sunt in culpa qui officia deserunt mollit anim id est laborum.