R中的正则表达式:从字符串的开头提取一个单词直到一个特殊字符

时间:2018-10-31 15:26:32

标签: r regex

我有一个像这样的字符串“ JOHN_DOE”,并且想要提取“ JOHN”。 JOHN的长度可变。

我尝试过     regmatches(“ ^ [A-Z] _”,“ JOHN_DOE”),但无效。

3 个答案:

答案 0 :(得分:1)

我们可以使用sub来匹配字符_和一个单词,然后将其替换为""

sub("_\\w+", "", "JOHN_DOE")
#[1] "JOHN"

如果第二个单词后面有更多字符,请添加.*以匹配该单词(\\w+)之后的字符

sub("_\\w+.*", "","JOHN_DOE.M")
#[1] "JOHN"

答案 1 :(得分:0)

一个人不需要纵梁来执行此操作,但是我发现它很方便。

从行^开始匹配任何大写或小写字母字符,零次或多次[a-zA-Z]*,但不下划线字符[^\\_]

library(stringr)

x <- "JOHN_DOE"
str_extract(x, pattern = "^[a-zA-Z]*[^\\_]")

答案 2 :(得分:0)

您可以使用以下代码来获得所需的输出:

str_extract(x, "^[A-z]+(?= \\_)")