首页 > 解决方案 > 使用正则表达式在 R 中提取字符串以获取可变数量的实例

问题描述

我有一个字符串列(data.table),我需要根据模式('-' 之间的文本)和该模式的已定义(但可变)数量的实例来解析它,我不知道该怎么做它使用正则表达式:

> test <- c("AAA-bb-ccc", "abcd-efgh","blah", "blah-blah-blah-blah")

比如说,预定义的实例数是 i。

> i = 1
> output
"AAA"  "abcd"  "blah"  "blah

> i = 2
> output
"bb"  "efgh"  ""  "blah"


> i= 3
> output
"ccc"  ""  ""  "blah"

我将如何使用 i 来实现此目的的通用正则表达式?

标签: rregexvariables

解决方案


我们可以创建一个在“-”上拆分并返回第 i 个值的函数。

get_i_th_element <- function(test, i) {
   sapply(strsplit(test, "-"), function(x) if(length(x) >= i) x[[i]] else "")
}

get_i_th_element(test, 1)
#[1] "AAA"  "abcd" "blah" "blah"

get_i_th_element(test, 3)
#[1] "ccc"  ""     ""     "blah"

推荐阅读