【发布时间】:2014-10-21 21:19:27
【问题描述】:
我想使用正则表达式从数据框中的文本中提取所有 URL 到一个新列中。我有一些用于提取关键字的旧代码,因此我希望将代码改编为正则表达式。我想将正则表达式保存为字符串变量并在此处应用:
data$ContentURL <- apply(sapply(regex, grepl, data$Content, fixed=FALSE), 1, function(x) paste(selection[x], collapse=','))
似乎fixed=FALSE 应该告诉grepl 它是一个正则表达式,但 R 不喜欢我尝试将正则表达式保存为:
regex <- "http.*?1-\\d+,\\d+"
我的数据是这样组织在一个数据框中的:
data <- read.table(text='"Content" "date"
1 "a house a home https://www.foo.com" "12/31/2013"
2 "cabin ideas https://www.example.com in the woods" "5/4/2013"
3 "motel is a hotel" "1/4/2013"', header=TRUE)
希望看起来像:
Content date ContentURL
1 a house a home https://www.foo.com 12/31/2013 https://www.foo.com
2 cabin ideas https://www.example.com in the woods 5/4/2013 https://www.example.com
3 motel is a hotel 1/4/2013
【问题讨论】:
-
对于 R,整个正则表达式必须放在一个字符变量中。你从哪里得知
\\<和\\>会被解析? -
如果您使用
grep对html 文档进行正则表达式,您就是在玩火 -
也许,向我们展示数据以及您尝试提取的内容也会有所帮助。
-
所有url还是某个url?
-
很抱歉给您带来了困惑!我想提取所有的网址。