首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取(子集)两个和弦,以R中任何一个字符串的顺序同时进行

提取(子集)两个和弦,以R中任何一个字符串的顺序同时进行
EN

Stack Overflow用户
提问于 2021-12-06 20:16:20
回答 3查看 151关注 0票数 -1

我和雷吉斯混在一起。

我有这样的字符向量:

代码语言:javascript
复制
   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-1text-2。我需要他们都是,按任何顺序

我想和他们一起提取短信。

输出应该是:1‘i有文本-1和-text-2’2I-have-text-2-and-text-1

我一直在使用来自str_subset的stringr,但是我不知道这个表达式的正则表达式。

代码语言:javascript
复制
str_subset(texts, 'regex')

任何帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-06 20:26:59

使用str_subset - regex将以相反的方式指定text-1,后面跟着字符(.*),然后是text-2或(|)。

代码语言:javascript
复制
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"
票数 3
EN

Stack Overflow用户

发布于 2021-12-06 20:25:25

对于单个regex模式来说,“任意顺序的两种模式”听起来都很复杂,但在两种不同的模式中做起来却是微不足道的:

代码语言:javascript
复制
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"
票数 2
EN

Stack Overflow用户

发布于 2021-12-06 20:28:13

您可以使用与|的交替模式在text-1text-2之间交替使用,反之亦然:

代码语言:javascript
复制
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的等价物是:

代码语言:javascript
复制
str_subset(texts, "text-1.*text-2|text-2.*text-1")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档