根据特定条件从字符串中提取字符

时间:2017-09-14 06:39:40

标签: r regex string

让我们说

x = "R is so tough for SAS programmer"
y = "R why you so hard"

现在我们必须在第8个地方之前找到这个词,第一个空格("")遇到从右到左,即向后。

如果x,则为"so"

如果是y,则为"y"

我该怎么做?

2 个答案:

答案 0 :(得分:2)

假设你在一个向量中有两个字符串:

x = c("R is so tough for SAS programmer", "R why you so hard")

然后,如果我正确理解了您的问题,您可以使用substr的组合来提取每个字符串的前7个字符,然后使用sub来提取最后一个空格后的部分:

sub(".*\\s", "", substr(x, 1, 7))
#[1] "so" "y" 

使用

可能更安全
sub(".*\\s", "", trimws(substr(x, 1, 7), "right"))

将切断substr导致的向量右侧的任何空格。这可以确保sub调用不会意外地匹配字符串末尾的空格。

答案 1 :(得分:2)

以下是wordsub

的另一个选项
library(stringr) 
word(sub("^(.{1,7}).*", "\\1", x), -1)
#[1] "so" "y" 

数据

x <- c("R is so tough for SAS programmer", "R why you so hard")