gpt4 book ai didi

regex - 使用正则表达式将 URL 提取到新的数据框列中

转载 作者:行者123 更新时间:2023-12-03 15:06:31 24 4
gpt4 key购买 nike

我想使用正则表达式将数据框中文本中的所有 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

最佳答案

Hadleyverse 解决方案( stringr 包)具有不错的 URL 模式:

library(stringr)

url_pattern <- "http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"

data$ContentURL <- str_extract(data$Content, url_pattern)

data

## 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 <NA>

您可以使用 str_extract_all如果 Content 中有倍数,但这将涉及您之后的一些额外处理。

关于regex - 使用正则表达式将 URL 提取到新的数据框列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com