获取特定的字符串模式

Getting a specific string pattern

我有一个包含字符串列的数据库,该数据库如下所示:

structure(list(variables = c("data$Ageee[data$Beneficiary == 1] and data$Age[data$Beneficiary == 0]",
"data$var[data$Beneficiary == 1] and data$Age[data$Beneficiary == 0]",
"data$variable_test[data$Beneficiary == 1] and data$Age[data$Beneficiary == 0]"
), values = c(0, 0, 0)), class = "data.frame", row.names = c(NA,
-3L))

但是,考虑到第一个 $ 之后和第一个 [ 之前的文本,我想获得一个新专栏,所以我得到:

structure(list(variables = c("Ageee", "var", "variable_test"
), values = c(0, 0, 0)), class = "data.frame", row.names = c(NA,
-3L))

感谢任何帮助。

我们可以使用sub来捕获$之后的单词((\w+) - $是正则表达式中表示字符串结尾的元字符,所以它被转义了 (\)

df1$variables <- sub("\w+\$(\w+).*", "\1", df1$variables)

-输出

> df1
      variables values
1         Ageee      0
2           var      0
3 variable_test      0

我们可以将 stringrstr_extractstr_remove 一起使用,并通过积极的后视来确定所需的模式紧随第一个 $.

library(dplyr)
library(stringr)

df %>% mutate(variables = str_extract(variables, "(<?\$)\w+")%>%
                  str_remove('\$'))

      variables values
1         Ageee      0
2           var      0
3 variable_test      0