R语言 获取第一个空格前的字符

yvfmudvl  于 2023-06-03  发布在  其他
关注(0)|答案(4)|浏览(259)

我正在寻找一个grep的方式来获得字符串中的第一个空格之前的字符。
我已经破解了以下函数,因为我不知道如何使用R中的grep类型命令来实现它。
有人可以帮助grep解决方案-如果有一个...

beforeSpace <- function(inWords) {
    vapply(inWords, function(L) strsplit(L, "[[:space:]]")[[1]][1], FUN.VALUE = 'character')
}
words <- c("the quick", "brown dogs were", "lazier than quick foxes")
beforeSpace(words)

R>          the quick         brown dogs were lazier than quick foxes 
              "the"                 "brown"                "lazier"

如果有比grep(或我的函数beforeSpace)更好的方法,请告诉我。

rkue9o1l

rkue9o1l1#

或者只是sub,@flodel:

sub(" .*", "", words)
# and if the 'space' can also be a tab or other white-space:
sub("\\s.*","",words)
#[1] "the"    "brown"  "lazier"
ecr0jaav

ecr0jaav2#

您可以使用qdapbeg2char(字符串的开头到特定字符),如下所示:

x <- c("the quick", "brown dogs were", "lazier than quick foxes")
library(qdap)
beg2char(x)
## [1] "the"    "brown"  "lazier"
yzckvree

yzckvree3#

使用stringi

library(stringi) 
stri_extract_first(words, regex="\\w+")
#[1] "the"    "brown"  "lazier"
2vuwiymt

2vuwiymt4#

tidyverse中的stringr-包与regex()一起使用

words %>% str_extract(regex('^\\S*'))
# [1] "the"    "brown"  "lazier"

解构正则表达式:

  • ^表示在行的开始处开始匹配。
  • \S匹配任何非空格字符(与\s相反)。我们在这里为this reason使用了一个额外的转义反斜杠,因此它变成了\\S
  • *匹配前一个模式0到无限次。这意味着我们继续寻找更多的非空格字符,直到我们找到一个空格。

相关问题