1
,而不是替换字符串在此字符串:提取物中的R
q <- "2 t1, 1t23 xxx, 32t1, 4"
我怎样才能优雅地提取并q
反转结构\\d+t\\d+
获得:
c("23X1","1X32")
我知道这是很简单的更换它用于新结构使用:
gsub("(\\d+)t(\\d+)", "\\2X\\1", q)
但是我没有发现什么simi以执行提取而不是替换。我查看了基本功能和stringr
和stringi
包。
在stringr
我几乎得到了我需要:
str_extract_all(q, "(\\d+)t(\\d+)")
,但没有选择使用的东西相当于"\\2X\\1"
操纵子。
作为一个说明性的例子,在Mathematica
我能做到这一点使用:
StringCases[q, RegularExpression["(\\d+)t(\\d+)"]:> "$1$2"]
任何线索?
这里有一个相关的帖子Regex matching everything that's not a 4 digit number
类似'lapply(regmatches(Q,gregexpr( “(\\ d +)T(\\ d +)”, q)),function(x)gsub(“(\\ d +)t(\\ d +)”,“\\ 2X \\ 1”,x))?? – lukeA
仅仅因为花了我一些时间才发现,另一个用stringr:'lapply(str_split(str_extract_all(q,“(\\ d +)t(\\ d +)”)[[1]],“t”),函数(x)paste(x [2], “X”,x [1],sep =“”))' – vaettchen