【发布时间】:2013-12-17 13:33:45
【问题描述】:
我有一个看起来像这样的字符串:
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" )
但在这两种情况下,我都只返回了最后一次出现。
【问题讨论】:
-
你的字符串是否以相同的方式开始,即
|M CHG \\d? \\d 是一位或多位数字?