【发布时间】:2021-11-01 02:22:30
【问题描述】:
在使用bookdown 的长段落中,我插入了许多图像。将这些段落组合成一个字符串(在数据框中)后,我想删除与插入图像相关的降价文本,但不删除这些插入图像之间的任何文本。这是一个玩具示例。
text.string <- "writing  writing to keep  more writing"
str_remove_all(string = text.string, pattern = "!\\[.+\\)")
[1] "writing more writing"
正则表达式不会在第一个右括号处停止,它会一直持续到最后一个并删除中间的“写入保留”。
我尝试申请String manipulation in R: remove specific pattern in multiple places without removing text in between instances of the pattern,它使用gsubfn 和gsub,但无法让解决方案发挥作用。
请指出正确的方向来解决正则表达式删除指定字符串的问题,而不是字符串之间的字符。我更喜欢stringr 解决方案,但无论如何都可以。谢谢
【问题讨论】:
-
另一个选项是
str_replace_all(text.string, "!.*?\\)", ""),因为你真的只需要寻找你不想要的东西,因为这似乎遵循一个可靠的模式。就像您的示例一样,这确实会在子字符串之间留下双空格;这将使它成为一个空格:str_replace_all(text.string, "!.*?\\) ", "")
标签: r regex gsub stringr gsubfn