regex R/stringr:如何在str_replace中使用正则表达式?[duplicate]

oo7oh9g9  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(99)

此问题已在此处有答案

Regex in R: replace only part of a pattern(1个答案)
3天前关闭。
我尝试使用stringr包中带有正则表达式的str_replace()。因此,我在要替换的模式和替换中都提供了正则表达式。然而,结果字符串打印正则表达式本身,而不是它应该代表的内容。
代码如下:

str_replace(string = c('AB12C', 'DE34F', 'GH56I'), pattern = '[:digit:]{2}', replacement = '[:digit:]{2} ')

我想得到的:“AB12 C”“DE34 F”“GH56 I”
我实际得到的是:
“AB[:digit:]{2} C”“DE[:digit:]{2} F”“GH[:digit:]{2} I”
就好像我逃脱了正则表达式一样,这显然是我不想做的,我怎么解决这个问题呢?

k2fxgqgv

k2fxgqgv1#

你可以试试

str_replace(string = c('AB12C', 'DE34F', 'GH56I'), pattern = '([:digit:]{2})', replacement = '\\1 ')

输出

[1] "AB12 C" "DE34 F" "GH56 I"
0dxa2lsx

0dxa2lsx2#

你可以使用一个非消耗性的look behind (?<=[:digit:]{2}),然后在这个位置插入空格。

stringr::str_replace(string = c('AB12C', 'DE34F', 'GH56I'),
                     pattern = '(?<=[:digit:]{2})', replacement = ' ')
#[1] "AB12 C" "DE34 F" "GH56 I"

相关问题