我无法弄清楚如何使这个正则表达式工作。
我的示例数据向量如下所示:
claims40 1.1010101
clinical41 391.1
...
遵循以下模式:
我正在尝试使用名称在数据框中创建一个新列,该列可以是可变数量的字符。
所以新列应如下所示:
claims
clinical
...
当我尝试使用表达式时:
^(.*?)\\d
在正则表达式中,我没有得到正确的字符匹配长度。
问题:在第一个数字之前捕获字符串中所有内容的正确正则表达式是什么?
答案 0 :(得分:1)
gsub("[^a-zA-Z]", "", c("claims40 1.1010101", "clinical41 391.1"))
# [1] "claims" "clinical"
此posix风格:
gsub("[^[:alpha:]]", "", c("claims40 1.1010101", "clinical41 391.1"))
# [1] "claims" "clinical"
答案 1 :(得分:0)
如果你特别想要匹配到第一个数字,你也可以这样做
gsub("^(.+?)(?=\\d).*", "\\1", c("claims40 1.1010101", "clinical41 391.1"), perl = TRUE)
[1] "claims" "clinical"
答案 2 :(得分:0)
同时使用str_extract
中的stringr
:
stringr::str_extract(c("claims40 1.1010101", "clinical41 391.1"), "^[[:alpha:]]+")
# [1] "claims" "clinical"
这“提取”字母字符而不是删除其他所有字符。