Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 正则表达式在第一个数字之前获取所有内容_R_Regex - Fatal编程技术网

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阅读帮助文档。您是否将第一组与表达式明确匹配?根据模式,英文字母后面只跟数字和其他字符,所以我们只提取英文字符。