Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Gsub正则表达式替换_Regex_R_Replace_Gsub - Fatal编程技术网

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

我试图在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)(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
是第一个
()
中的字符串。