替换我匹配的字符串后面的所有内容 - gsub

时间:2015-10-02 20:06:38

标签: regex r

我对R中的字符串操作相当新。我有一个案例,我在foor循环中使用了几个匹配的替换,因此必须依赖gsub。

现在我有一个字符串(说明性示例),“今天是美好的一天”

我想在其中使用“今天是”模式,并将其替换为“我的价值”

但是我需要选择其余字符串的元字符是什么?

我的尝试

gsub("Today is+.", "My value", myobject)

现在这只在“今天是”之后选择一个值,我该如何让它一直运行?

2 个答案:

答案 0 :(得分:5)

在模式中使用带有parens的捕获类分组,并在替换中使用\\<n>返回它们,我认为您需要在模式中交换.+的顺序:< / p>

> gsub("(Today is)(.+)", "My value\\2", "Today is a great Day")
[1] "My value a great Day"

答案 1 :(得分:1)

请注意,如果字符串的其余部分包含换行符,则贪婪点匹配将仅返回该行的其余部分。

为了匹配换行符,您还需要使用[\\s\\S]*或带有延迟点匹配的Perl样式(?s)内联修饰符:

gsub("Today is([\\s\\S]*)", "My value\\1", x)

gsub("(?s)Today is(.*)", "My value\\1", x, perl=T)

请注意,无需将已知的文字文本放入捕获组,这是多余的开销。

请参阅IDEONE demo