Regex Gsub正则表达式替换
我试图在R中替换gsub。我想从两个列表中识别两个术语,用一个空格分隔,并用下划线替换。我已经成功地识别了匹配项,但我在regex方面的经验不足,无法理解gsub文档。有人能帮我写Regex Gsub正则表达式替换,regex,r,replace,gsub,Regex,R,Replace,Gsub,我试图在R中替换gsub。我想从两个列表中识别两个术语,用一个空格分隔,并用下划线替换。我已经成功地识别了匹配项,但我在regex方面的经验不足,无法理解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 x->(a|b|c
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 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"
vec写这个问题可能比你自己通过gsub
doc找到答案要花更长的时间。它甚至有使用\\1
,\\2
等的示例。谢谢。文档使它听起来像“\\1”是指从某个地方返回的空间数。分割实际上是如何完成的?它是自动用空格分隔的吗?@user3030872正如我在回答中已经提到的,\\1
是第一个()
中的字符串。