我有一个看起来像这样的字符串:
txt <- "|M CHG 6 44 -1 48 -1 53 -1 63 1 64 1 65 1|"
第一个数字 (6) 表示模式\\s+\\d+\\s+[\\+-]?\\d+
重复出现 6 次。实际上我只对这种模式的第二个(可能有符号的)数字感兴趣。所以我正在寻找一个函数或正则表达式给我一个结果
[1] "-1" "-1" "-1" "1" "1" "1"
我试过了
gsub( "^\\|M\\s+CHG\\s+\\d+(\\s+\\d+\\s+([\\+-]?\\d+))+\\|$", replacement="\\2", x=txt, perl=TRUE )
也
str_replace_all( x, perl( "^\\|M\\s+CHG\\s+\\d+(\\s+\\d+\\s+([\\+-]?\\d+))+\\|$" ), "\\2" )
但在这两种情况下,我只返回了最后一次出现。