我正在尝试从字符串中提取数字.
并做一些类似于[0-9]+字符串"aaa12xxx"和得到的东西"12".
我以为它会是这样的:
> grep("[0-9]+", "aaa12xxx", value=TRUE)
[1] "aaa12xxx"
然后我想...
> sub("[0-9]+", "\\1", "aaa12xxx")
[1] "aaaxxx"
但我做了某种形式的回应:
> sub("[0-9]+", "ARGH!", "aaa12xxx")
[1] "aaaARGH!xxx"
我缺少一个小细节.
想象一下,我们想要找到下面字符串中的所有FOO和后续数字并将它们作为向量返回(对于不可读性道歉,我想说明在FOO之前和之后没有规则模式):
xx <- "xasdrFOO1921ddjadFOO1234dakaFOO12345ndlslsFOO1643xasdf"
我们可以用它来找到其中一个(取自1)
gsub(".*(FOO[0-9]+).*", "\\1", xx)
[1] "FOO1643"
但是,我希望将所有这些作为向量返回.
我曾经想过使用strplit()和gregexpr()这样做的复杂方法 - 但我觉得有更好(更容易)的方法.