Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我有一个像“JOHN_DOE”这样的字符串,想提取“JOHN”。约翰的身长可变 我试过了 regmatches(“^[A-Z],”JOHN\u DOE”),但它不起作用。我们可以使用sub匹配字符,后跟一个单词,并将其替换为” 如果第二个单词后面有更多字符,请添加*以匹配该单词后面的字符(\\w+) 人们不需要stringr来做这件事,但我觉得它很方便 从行首匹配任何大写或小写字母,零次或多次匹配[a-zA-Z]*,但不匹配下划线字符 library(stringr) x <- "JOH

我有一个像“JOHN_DOE”这样的字符串,想提取“JOHN”。约翰的身长可变

我试过了
regmatches(“^[A-Z],”JOHN\u DOE”),但它不起作用。

我们可以使用
sub
匹配字符
,后跟一个单词,并将其替换为

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


人们不需要stringr来做这件事,但我觉得它很方便

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

library(stringr)

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

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

stru-extract(x,“^[A-z]+(?=\ \ \ \ \ \”)

@akurn,如果我传递像“JOHN_DOE.M”这样的字符串,它将返回“JOHN.M”。我该如何解决这个问题?@MehdiZare谢谢你的评论。我更新了它
sub(“\uw+.*”、“”、“JOHN\u DOE.M”)#[1]“JOHN”
sub("_\\w+.*", "","JOHN_DOE.M")
#[1] "JOHN"
library(stringr)

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