我有一个关于替换字符串的问题。
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/