r语言 - Regex用于提取两个下划线之间的值,包括下划线的值



我正在R中工作,并试图提取用下划线分隔的字符串的一部分,包括下划线:

WRAP_384_p1_QC1_8
WRAP_384_p3_QC1_7   

我希望得到这样的输出:

1_QC1
3_QC1

我需要什么正则表达式来提取这些信息?

我们可以使用gsub匹配一个或多个字符(.*),然后是_,然后是小写字母([a-z]),或者|_,然后是一个或多个数字(\d+),直到字符串的末尾($),并将其替换为空白("")。

gsub(".*_[a-z]|_\d+$", "", str1)
#[1] "1_QC1" "3_QC1"

或使用sub捕捉组匹配一个或多个不强调的两个实例,后跟一个下划线(([^_]+_){2})从字符串的开始(^),后跟一个小写字母([a-z]),然后我们捕获组括号内((...))一个或多个数字(\d+)其次是_和一个或多个字母数字字符([[:alnum:]]+)关闭捕获组架紧随其后下划线(_)和一个或多个数字(\d+)。我们将其替换为第二个捕获组(\2)。

sub("^([^_]+_){2}[a-z](\d+_[[:alnum:]]+)_\d+", "\2", str1)
#[1] "1_QC1" "3_QC1"

数据
str1 <- c("WRAP_384_p1_QC1_8", "WRAP_384_p3_QC1_7")

最新更新