提取第一个和最后一个_之间的字符串

时间:2018-12-04 20:51:59

标签: r regex string character gsub

尽管我已经在stackoverflow中进行了搜索,以寻找各种gsub答案,但是我找不到适用于我拥有的数据的代码。我想创建一个新列,以提取第一个和最后一个下划线之间的所有字母。

Test <- as.data.frame(c("A_YES_X","A_Yes_YES_X"))
colnames(Test)[1] <- "test"

因此在上面的示例中,这将是我需要的输出。

Test$Output <- c("YES","Yes_YES")

提前谢谢

3 个答案:

答案 0 :(得分:5)

您可以使用^[^_]*_找到字符串的一部分,该部分是第一个_(包括它)之前的所有内容,而使用_[^_]*$找到最后一个_(包括它)之后的所有内容。您可以使用gsub删除它们:

gsub("_[^_]*$|^[^_]*_","",test,perl=T)
[1] "YES"     "Yes_YES"

答案 1 :(得分:1)

尝试

x <- c("A_YES_X","A_Yes_YES_X")
stringi::stri_extract(x, regex = '(?<=_).*(?=_)')
#[1] "YES"     "Yes_YES"

答案 2 :(得分:1)

或者仅提取捕获的模式“在第一个和最后一个_之间有一个或多个字符(。+)(由@Lamia进行了很好的解释)。

let deadline = '2019-03-13T17:46:08Z';

function () {
  let timeRemaining = moment().countdown(new Date(deadline).toString(), countdown.DAYS | countdown.HOURS |
                            countdown.MINUTES | countdown.SECONDS);

}

setInterval(() => this._computeTimeLeft(), 1000);