8

我有一个混合字母和数字的字符串:

"The sample is 22mg"

我想拆分字符串,其中一个数字后面紧跟这样的字母:

"The sample is 22 mg"

我试过这个:

gsub('[0-9]+[[aA-zZ]]', '[0-9]+ [[aA-zZ]]', 'This is a test 22mg')

但没有得到预期的结果。

有什么建议么?

4

2 回答 2

15

您需要在正则表达式中使用捕获括号并在替换中使用组引用。例如:

gsub('([0-9])([[:alpha:]])', '\\1 \\2', 'This is a test 22mg')

这里没有特定于 R 的东西。R 帮助regex并且gsub应该有一些用处。

于 2012-07-23T01:59:55.367 回答
12

您需要反向引用:

test <- "The sample is 22mg"
> gsub("([0-9])([a-zA-Z])","\\1 \\2",test)
[1] "The sample is 22 mg"

括号中的任何内容都会被记住。然后它们由 \1(对于括号中的第一个实体)、\2 等进行访问。第一个反斜杠在 R 中转义了反斜杠的解释,以便将其传递给正则表达式解析器。

于 2012-07-23T01:59:00.763 回答