我和雷吉斯混在一起。
我有这样的字符向量:
texts <- c('I-have-text-2-and-text-8','I-have-text-1-and-text-2','I-have-text-7-and-text-8','I-have-text-2-and-text-1','I-have-text-4-and-text-5','I-have-text-11-and-text-12','I-have-text-13-and-text-32','I-have-text-8-and-text-6')我有两个对我很重要的词:text-1和text-2。我需要他们都是,,,按任何顺序。
我想和他们一起提取短信。
输出应该是:1‘i有文本-1和-text-2’2I-have-text-2-and-text-1
我一直在使用来自str_subset的stringr,但是我不知道这个表达式的正则表达式。
str_subset(texts, 'regex')任何帮助
发布于 2021-12-06 20:26:59
使用str_subset - regex将以相反的方式指定text-1,后面跟着字符(.*),然后是text-2或(|)。
library(stringr)
str_subset(texts, 'text-1.*text-2|text-2.*text-1')
[1] "I-have-text-1-and-text-2" "I-have-text-2-and-text-1"发布于 2021-12-06 20:25:25
对于单个regex模式来说,“任意顺序的两种模式”听起来都很复杂,但在两种不同的模式中做起来却是微不足道的:
texts[str_detect(texts, "text-1") & str_detect(texts, "text-2")]
# [1] "I-have-text-1-and-text-2" "I-have-text-2-and-text-1"发布于 2021-12-06 20:28:13
您可以使用与|的交替模式在text-1与text-2之间交替使用,反之亦然:
grep("text-1.*text-2|text-2.*text-1", texts, value = TRUE)
[1] "I-have-text-1-and-text-2" "I-have-text-2-and-text-1"stringr的等价物是:
str_subset(texts, "text-1.*text-2|text-2.*text-1")https://stackoverflow.com/questions/70251418
复制相似问题