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\))]", "")
也就是说,分隔符 #
之后没有跟随我的模式的任何内容(为了便于阅读,我将其保留一个反斜杠),并将其替换为 ''
。
这几乎可以工作,但是会捕获不应该捕获的额外字符。
此外,我添加了分隔符来区分两个部分,但如果有办法解决它,我不需要它。
有人知道这是怎么回事吗?
谢谢。
此外,如果相关的话,我正在使用 R
和 stringr
。
可以通过积极的前瞻和惰性点模式来完成:
"#.*?(?=\(new line\)|$)"
它匹配:
#
- 一个 #
字符
.*?
- 除换行字符外的任何 0+ 个字符,尽可能少(因为 *?
是非贪婪量词)
(?=\(new line\)|$)
- 正前瞻要求 (new line)
子字符串或字符串结尾紧接在当前位置的右侧。
如果您的匹配跨越多行,请使用 (?s)
修饰符:
"(?s)#.*?(?=\(new line\)|$)"
我需要有关特定请求的帮助。
我想通过将其余部分替换为空 space 来保持一种模式。
有人会问,为什么不保持模式的多样性呢?
那是因为这段代码构成了一个更大的数据清理方案的一部分,我已经在其中使用了模式替换。
示例:
model = replace(model, "Jetta A\d", "Jetta")
将把捷达的所有A4和A6清理成捷达。
现在我想把指南在 model
中添加的 "(new line)"
带到 version
。
所以我在做:
version = replace( paste(version, model, sep = "#"),
"#[^(\(new line\))]", "")
也就是说,分隔符 #
之后没有跟随我的模式的任何内容(为了便于阅读,我将其保留一个反斜杠),并将其替换为 ''
。
这几乎可以工作,但是会捕获不应该捕获的额外字符。
此外,我添加了分隔符来区分两个部分,但如果有办法解决它,我不需要它。
有人知道这是怎么回事吗?
谢谢。
此外,如果相关的话,我正在使用 R
和 stringr
。
可以通过积极的前瞻和惰性点模式来完成:
"#.*?(?=\(new line\)|$)"
它匹配:
#
- 一个#
字符.*?
- 除换行字符外的任何 0+ 个字符,尽可能少(因为*?
是非贪婪量词)(?=\(new line\)|$)
- 正前瞻要求(new line)
子字符串或字符串结尾紧接在当前位置的右侧。
如果您的匹配跨越多行,请使用 (?s)
修饰符:
"(?s)#.*?(?=\(new line\)|$)"