r - 当我替换字符串的某些模式时,我可以使用正则表达式来替换要替换的内容吗?

标签 r regex

我有一个关于替换字符串的问题。

string_before <- "aaajohn bbbjohn cccjohn johnaaa johnbbb johnccc"
string_after <- "aaajane bbbjane cccjane johnaaa johnbbb johnccc"

我想将上面的 string_before 替换成 string_after。 (模式是 [^ ]+john,替换是 [^ ]+jane。)。 有什么办法也可以使用正则表达式进行模式和替换吗?

最佳答案

你可以使用

gsub("(\\S+)john", "\\1jane", x)

参见 regex demo

在这里,(\\S+) 将除空格以外的任何 1+ 个字符捕获到第 1 组中,然后 john 被匹配,整个匹配被替换为第 1 组 (\1) 和 jane 子字符串中的值。

或者,如果你只是想匹配 john 而不是在“单词”的开头,你也可以考虑

gsub("\\Bjohn", "jane", x)    

其中 \B 是非单词边界位置(john 前面必须有单词 char、字母、数字或 _).

R demo :

string_before <- "aaajohn bbbjohn cccjohn johnaaa johnbbb johnccc"
string_after <- gsub("(\\S+)john", "\\1jane", string_before)
string_after
# => [1] "aaajane bbbjane cccjane johnaaa johnbbb johnccc"

关于r - 当我替换字符串的某些模式时,我可以使用正则表达式来替换要替换的内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826542/

相关文章:

r - 使用 R 统计向每一行添加一个组总和

R - "linearizing"tapply 的结果(到一个单一向量,按列解包)

regex - 如何在单元格内和循环中使用 Microsoft Excel 中的正则表达式 (Regex)

c# - 正则表达式验证 .NET 的非负小数或空白?

r - 在 ggplot 中平滑

r - 具有最新可用观测值的散点图

r - mutate_at 跨多个 tibbles 更新

Python:使用正则表达式从字符串中解析数值

javascript - [][] 如何在正则表达式中解析?

Python - 删除非字母数字字符但保留空格和西类牙语/葡萄牙语字符