正则表达式在第一个数字之前获取所有内容

时间:2018-01-03 01:10:48

标签: r regex

我无法弄清楚如何使这个正则表达式工作。

我的示例数据向量如下所示:

claims40 1.1010101
clinical41 391.1
...

遵循以下模式:

  • 一个名字,
  • 后跟版本号没有空格,
  • 然后是各种其他数字。

我正在尝试使用名称在数据框中创建一个新列,该列可以是可变数量的字符。

所以新列应如下所示:

claims
clinical
...

当我尝试使用表达式时:

^(.*?)\\d

在正则表达式中,我没有得到正确的字符匹配长度。

问题:在第一个数字之前捕获字符串中所有内容的正确正则表达式是什么?

3 个答案:

答案 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"

这“提取”字母字符而不是删除其他所有字符。