使用R中的stringr以任意顺序同时提取(子集)两个ords
Extract(subset) two ords same time in any order with stringr in R
我正在为正则表达式而苦苦挣扎。
我有下面这个字符向量:
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-have-text-1-and-text-2' [2]I-have-text-2-and-text-1
我一直在使用 stringr
的 str_subset,但我不知道它的正则表达式。
str_subset(texts, '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"
使用 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"
您可以使用 |
的交替模式在 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")
我正在为正则表达式而苦苦挣扎。
我有下面这个字符向量:
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-have-text-1-and-text-2' [2]I-have-text-2-and-text-1
我一直在使用 stringr
的 str_subset,但我不知道它的正则表达式。
str_subset(texts, '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"
使用 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"
您可以使用 |
的交替模式在 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")