R regex gsub分隔字母和数字

时间:2012-07-23 01:54:39

标签: regex r gsub stringr

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

"The sample is 22mg"

我想分割字符串,其中一个数字紧跟着这样的字母:

"The sample is 22 mg"

我试过这个:

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

但是没有得到预期的结果。

有什么建议吗?

2 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:11)

您需要反向引用:

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

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