首页 > 解决方案 > 正则表达式提取三个字符

问题描述

我有以下字符串:

str <- "add2AHJJK_GLX_KLKNKMEMa13"

如何使用 R 从中提取“GLX”,即下划线之间的单词?在该示例中,正好有两个下划线,而不是更多。

标签: rregex

解决方案


一个选项,gsub用于将字符串开头 ( ) 中的非 ( ) 字符匹配到其余字符 ( ) 中的_或( ) 字符,并替换为空白 ( )[^_]*^_|_""

gsub("^[^_]*_|_.*", "", str)
#[1] "GLX"

或者另一种选择是提取regexpr/regmatches

regmatches(str, regexpr('(?<=_)\\w+(?=_)', str, perl = TRUE))
#[1] "GLX"

推荐阅读