我对R中的字符串操作相当新。我有一个案例,我在foor循环中使用了几个匹配的替换,因此必须依赖gsub。
现在我有一个字符串(说明性示例),“今天是美好的一天”
我想在其中使用“今天是”模式,并将其替换为“我的价值”
但是我需要选择其余字符串的元字符是什么?
我的尝试
gsub("Today is+.", "My value", myobject)
现在这只在“今天是”之后选择一个值,我该如何让它一直运行?
答案 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