我在解析文本字符串中的地址时遇到问题。通常的地址将是“@address token token token”或“@address token token/ntoken”。
string <- c("@address token token token", "@address token token /ntoken")
gsub("^\\.?@([a-z0-9_]{1,25})[^a-z0-9_]+.*$", "\\1", string)
哪些被正确解析
[1] "address" "address"
然而,在某些情况下,地址将是字符串中的唯一标记,然后正则表达式将返回包含@的地址
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"
如何指示正则表达式也管理唯一 token 的情况?
最佳答案
in some circumstances the address will be the only token in the string, then regex will return the address including the @
因为在那种情况下没有匹配项。
稍作改动:
将 [^a-z0-9_]+
转换为 [^a-z0-9_]?
使其可选。
^\.?@([a-z0-9_]{1,25})[^a-z0-9_]?.*$
这里是 Online demo
关于regex - R正则表达式在@之后解析 token ,字符串中也没有其他 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946533/