R regex解析@之后的标记,并且字符串中没有其他标记
我在解析文本字符串中的地址时遇到问题。通常的地址是“@address-token”或“@address-token/ntoken” 然而,在某些情况下,地址将是字符串中的唯一标记,然后regex将返回包含@R regex解析@之后的标记,并且字符串中没有其他标记,regex,r,gsub,Regex,R,Gsub,我在解析文本字符串中的地址时遇到问题。通常的地址是“@address-token”或“@address-token/ntoken” 然而,在某些情况下,地址将是字符串中的唯一标记,然后regex将返回包含@ string <- c("@address token token token", "@address token token /ntoken", "@address") gsub("^\\.?@([a-z0-9_]{1,25})[^a-z0-9_]+.*$", "\\1", stri
string <- c("@address token token token", "@address token token /ntoken", "@address")
gsub("^\\.?@([a-z0-9_]{1,25})[^a-z0-9_]+.*$", "\\1", string)
# [1] "address" "address" "@address"
字符串
在某些情况下,地址将是字符串中的唯一标记,然后regex将返回包含@
string <- c("@address token token token", "@address token token /ntoken", "@address")
gsub("^\\.?@([a-z0-9_]{1,25})[^a-z0-9_]+.*$", "\\1", string)
# [1] "address" "address" "@address"
因为在这种情况下,没有对手
只要做一点小小的改变:
将[^a-z0-9\]+
转换为[^a-z0-9\]?
以使其可选
^\.?@([a-z0-9_]{1,25})[^a-z0-9_]?.*$
以下是使用单词边界:
gsub("^\\.?@([a-z0-9_]{1,25})\\b.*$", "\\1", string)
使用正则表达式中的Straplyc
可以大大简化。这将返回与括号内正则表达式部分匹配的正则表达式部分:
library(gsubfn)
string <- c("@address token token token", "@address token token /ntoken",
"@address")
strapplyc(string, "@([a-z0-9_]{1,25})", simplify = TRUE)
## [1] "address" "address" "address"
库(gsubfn)
字符串您可以使用:
library(stringr)
str_extract(string, perl('(?<=@)[a-z0-9_]{1,25}'))
#[1] "address" "address" "address"
库(stringr)
str_extract(字符串,perl(')(?
library(stringr)
str_extract(string, perl('(?<=@)[a-z0-9_]{1,25}'))
#[1] "address" "address" "address"