2012-07-23 79 views
7

我有一个字符串,它是混合字母和数字:[R正则表达式GSUB单独的字母和数字

"The sample is 22mg" 

我想分裂字符串,其中一个号码后面紧接着信是这样的:

"The sample is 22 mg" 

我已经试过这样:

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

,但我没有得到期望的结果。

有什么建议吗?

回答

14

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

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

这里没有什么特定的R; R的帮助regexgsub应该有一定的用处。

10

你需要逆向引用:括号

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

任何被记住。然后它们被\ 1(对于parens中的第一个实体),\ 2等访问。第一个反斜杠在R中转义反斜杠的解释,以便它传递给正则表达式解析器。

相关问题