Gsub正则表达式替换

时间:2013-11-25 10:22:19

标签: regex r replace gsub

我正在尝试在R中进行gsub替换。我想从两个由单个空格分隔的列表中识别两个术语,并用下划线替换它。我已成功识别出匹配,但我在正则表达式方面没有足够的经验来理解gsub文档。有人可以帮助写gsub吗?

现在我有:

gsub("(a|b|c)\\s+(x|y|z)","(a|b|c)_(x|y|z)",a x)

(注意:如果重要的话,字符串中有几个匹配的地方)

我想要离开:
a x - > a_x
b z - > b_z
你好世界b x你怎么样 - >你好世界b_x怎么样a_z你......等等。

相反,它确实:
a x - > (a | b | c)(x | y | z)
b z - > (a | b | c)
(x | y | z)......依此类推。

如果有人想放弃一点理论,那将会受到赞赏,但我正在制定一个截止日期,所以同时回答是理想的。

感谢。

1 个答案:

答案 0 :(得分:2)

您必须使用\\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"