我正在尝试在 R 中进行 gsub 替换。我想从由单个空格分隔的两个列表中识别两个术语,并将其替换为下划线。我已成功识别匹配项,但我在正则表达式方面经验不足,无法理解 gsub 文档。有人可以帮忙编写 gsub
吗?
现在我有:
gsub("(a|b|c)\\s+(x|y|z)","(a|b|c)_(x|y|z)",a x)
(注意:如果重要的话,字符串中有几个地方与此匹配)
我想从:
一个 x -> a_x
b z -> b_z
hello world b x how are a z you -> hello world b_x how are a_z you...等等。
相反,它会:
a x -> (a|b|c)(x|y|z)
b z -> (a|b|c)(x|y|z) ... 等等。
如果有人想在这方面提出一些理论,我们将不胜感激,但我正在赶最后期限,因此最好同时回答。
谢谢。
最佳答案
您必须使用 \\1
和 \\2
将第一个和第二个 ()
中的术语替换为自身。
vec <- "hello world b x how are a z you"
gsub("(a|b|c)\\s+(x|y|z)","\\1_\\2", vec)
# [1] "hello world b_x how are a_z you"
关于regex - Gsub 正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189644/