我正在尝试在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)......依此类推。
如果有人想放弃一点理论,那将会受到赞赏,但我正在制定一个截止日期,所以同时回答是理想的。
感谢。
答案 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"