我无法让这个regex
在R
中工作。我有一个字符串,其中包含许多以@
字符为前缀的昵称,我希望获得所有这些昵称的列表。
我的正则表达式@[a-zA-Z0-9-]+
仅匹配第一次出现。
此代码均无效:
library(stringr)
str_extract("nowy commit, nowa przygoda @oski @data2 @pankote testujemy kod @oski2", '@[a-zA-Z0-9-]+')
[1] "@oski"
grep(pattern = '@[a-zA-Z0-9-]+', x = "nowy commit, nowa przygoda @oski @data2 @pankote testujemy kod @oski2", value = T)
[1] "nowy commit, nowa przygoda @oski @data2 @pankote testujemy kod @oski2"
我想得到结果:
[1] "@oski"
[2] "@data2"
[3] "@pankote"
[4] "@oski2"
谢谢!
答案 0 :(得分:4)
您也可以考虑使用qdapRegex包:
library(qdapRegex)
x <- 'nowy commit, nowa przygoda @oski @data2 @pankote testujemy kod @oski2'
rm_tag(x, extract=TRUE)[[1]]
# [1] "@oski" "@data2" "@pankote" "@oski2"
答案 1 :(得分:2)
使用stringi
:
> s <- "nowy commit, nowa przygoda @oski @data2 @pankote testujemy kod @oski2"
> stringi::stri_extract_all_regex(s, "@[a-zA-Z0-9-]+")
[[1]]
[1] "@oski" "@data2" "@pankote" "@oski2"
如果您想要矩阵而不是列表,则可以传递simplify=TRUE
。