gpt4 book ai didi

regex - 在 R 中使用 Regex 获取 Twitter @Username

转载 作者:行者123 更新时间:2023-12-04 22:47:33 25 4
gpt4 key购买 nike

如何在 R 中使用正则表达式从文本字符串中提取 Twitter 用户名?

我试过了

library(stringr)

theString <- '@foobar Foobar! and @foo (@bar) but not foo@bar.com'

str_extract_all(string=theString,pattern='(?:^|(?:[^-a-zA-Z0-9_]))@([A-Za-z]+[A-Za-z0-9_]+)')

但我最终得到 @foobar@foo(@bar ,其中包含不需要的括号。

我怎样才能得到 @foobar@foo@bar 作为输出?

最佳答案

这是一种适用于 R 的方法:

theString <- '@foobar Foobar! and @foo (@bar) but not foo@bar.com'
theString1 <- unlist(strsplit(theString, " "))
regex <- "(^|[^@\\w])@(\\w{1,15})\\b"
idx <- grep(regex, theString1, perl = T)
theString1[idx]
[1] "@foobar" "@foo" "(@bar)"

如果你想在 R 中使用@Jerry 的回答:
regex <- "@([A-Za-z]+[A-Za-z0-9_]+)(?![A-Za-z0-9_]*\\.)"
idx <- grep(regex, theString1, perl = T)
theString1[idx]
[1] "@foobar" "@foo" "(@bar)"

但是,这两种方法都包含您不想要的括号。

UPDATE 这将使您从头到尾不带括号或任何其他类型的标点符号(下划线除外,因为它们允许在用户名中使用)
theString <- '@foobar Foobar! and @fo_o (@bar) but not foo@bar.com'
theString1 <- unlist(strsplit(theString, " "))
regex1 <- "(^|[^@\\w])@(\\w{1,15})\\b" # get strings with @
regex2 <- "[^[:alnum:]@_]" # remove all punctuation except _ and @
users <- gsub(regex2, "", theString1[grep(regex1, theString1, perl = T)])
users

[1] "@foobar" "@fo_o" "@bar"

关于regex - 在 R 中使用 Regex 获取 Twitter @Username,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18164839/

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