R 正则表达式在第一个数字之前获取所有内容
我不知道怎么让这个正则表达式工作 我的示例数据向量如下所示:R 正则表达式在第一个数字之前获取所有内容,r,regex,R,Regex,我不知道怎么让这个正则表达式工作 我的示例数据向量如下所示: claims40 1.1010101 clinical41 391.1 ... 它遵循以下模式: 一个名字 后跟版本号(不带空格),以及 然后是其他各种数字 我试图在数据框中创建一个新列,其中只包含名称,可以是可变数量的字符 因此,新列应该如下所示: claims clinical ... 当我尝试使用表达式时: ^(.*?)\\d 在regexp中,我没有获得正确的字符匹配长度 问题:在第一个数字之前捕获字符串中所有内容的
claims40 1.1010101
clinical41 391.1
...
它遵循以下模式:
- 一个名字
- 后跟版本号(不带空格),以及
- 然后是其他各种数字李>
claims
clinical
...
当我尝试使用表达式时:
^(.*?)\\d
在regexp中,我没有获得正确的字符匹配长度
问题:在第一个数字之前捕获字符串中所有内容的正确正则表达式是什么
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"
如果您特别希望匹配到第一个数字,您也可以这样做
gsub("^(.+?)(?=\\d).*", "\\1", c("claims40 1.1010101", "clinical41 391.1"), perl = TRUE)
[1] "claims" "clinical"
同样使用
str\u从stringr
中提取:
stringr::str_extract(c("claims40 1.1010101", "clinical41 391.1"), "^[[:alpha:]]+")
# [1] "claims" "clinical"
这将“提取”字母字符,而不是删除所有其他字符。谢谢!这很有效。我的代码有什么问题?当我尝试在像regex101这样的工具中运行regex时,它返回了正确的值。我不知道什么是regex101。如果您想了解关于R正则表达式能力的更多信息,请使用?“regular expression”
@user6079762阅读帮助文档。您是否将第一组与表达式明确匹配?根据模式,英文字母后面只跟数字和其他字符,所以我们只提取英文字符。