REGEX 通过替换周围的空白 space 来保持模式

REGEX Keep pattern by substitution of blank space around it

我需要有关特定请求的帮助。
我想通过将其余部分替换为空 space 来保持一种模式。

有人会问,为什么不保持模式的多样性呢?
那是因为这段代码构成了一个更大的数据清理方案的一部分,我已经在其中使用了模式替换。

示例:

model = replace(model, "Jetta A\d", "Jetta")  

将把捷达的所有A4和A6清理成捷达。

现在我想把指南在 model 中添加的 "(new line)" 带到 version
所以我在做:

version = replace( paste(version, model, sep = "#"), 
    "#[^(\(new line\))]", "")

也就是说,分隔符 # 之后没有跟随我的模式的任何内容(为了便于阅读,我将其保留一个反斜杠),并将其替换为 ''

这几乎可以工作,但是会捕获不应该捕获的额外字符。

此外,我添加了分隔符来区分两个部分,但如果有办法解决它,我不需要它。

有人知道这是怎么回事吗?

谢谢。

此外,如果相关的话,我正在使用 Rstringr

可以通过积极的前瞻和惰性点模式来完成:

"#.*?(?=\(new line\)|$)"

它匹配:

  • # - 一个 # 字符
  • .*? - 除换行字符外的任何 0+ 个字符,尽可能少(因为 *? 是非贪婪量词)
  • (?=\(new line\)|$) - 正前瞻要求 (new line) 子字符串或字符串结尾紧接在当前位置的右侧。

如果您的匹配跨越多行,请使用 (?s) 修饰符:

"(?s)#.*?(?=\(new line\)|$)"