我有一个string vector,包含:
Number of source1.2_SPNB.txt
Number of source1.1_SPNB.txt
Number of source1.3_SPNB.txt
字符串
我需要提取“source1.1”,“source1.2”和“source1.3”在一个新的向量。
在this之后,我尝试了:
gsub("(?<=of )(.*)(?=_)", "\\1", string.vector)
型
但我得到一个错误:
正则表达式'(?<=of)(.*)(?=_)',reason '无效的regexp'
然后我试着:
gsub("(?<=of )(.*)(?=_)", "\\1", string.vector, perl = TRUE)
型
但它返回了完全相同的字符串向量。
我做错了什么?
2条答案
按热度按时间ercv8c1e1#
有几个问题:
sub
,而不是gsub
解决这些问题,我们得到:
字符串
ee7vknir2#
我们可以匹配字符,直到空格(
.*\\s
)或(|
)后面跟着其他字符(.*
)的_
,并将其替换为空白(""
)字符串
或者如果我们需要抓捕小组
型
对于提取目的,最好使用来自
stringr
的str_extract
或来自base R
的regmatches/regexpr
型
数据
型