【发布时间】:2014-10-18 18:49:10
【问题描述】:
大家晚上好。
我在试图从作为语料库构建器的一部分抓取的 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 "\/"
有人知道如何在这里修改正则表达式吗?
【问题讨论】:
-
我不知道 R,但考虑到错误,它看起来不接受冗余转义。
/不需要在正则表达式中转义,因此请尝试将\/替换为/。 -
在
R中,您需要一个双反斜杠“\\”,因为您必须转义 \ 本身才能让R知道反斜杠应该按字面意思解释。 -
给
regex <- "/\\*[[:space:]]+\\*/[[:alnum:][:punct:][:space:]]*/\\*[[:space:]]+\\*/"试试你的语料库。如果有效,我会将其发布为答案。顺便说一句,不需要perl=TRUE。 -
为什么
"[/*](.*)"不能为/*工作到最后?或"[/*](.*)[/*]"介于/*和*/之间 -
这个定义不好。当有奇数个
/* */散落在各处时会发生什么?还有那些脚本化的东西v='/* */';
标签: regex r web-scraping