R:Gsub替换模式,在替换中跳过一个字符

R:Gsub替换模式,在替换中跳过一个字符,r,replace,gsub,R,Replace,Gsub,我想在R中使用gsub()函数进行简单替换。请参见示例: #I want: Huiswaard 2 Oost Huiswaard 1 Zuid Huiswaard 2 West #To become: Huiswaard-2-Oost Huiswaard-1-Oost Huiswaard-2-Oost 通过伟大的试错法,我尝试了这一点: data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-.-", df) data <- gsub

我想在R中使用gsub()函数进行简单替换。请参见示例:

#I want: 
Huiswaard 2 Oost
Huiswaard 1 Zuid
Huiswaard 2 West

#To become:
Huiswaard-2-Oost
Huiswaard-1-Oost
Huiswaard-2-Oost 
通过伟大的试错法,我尝试了这一点:

data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-.-", df)
data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-.*-", df)
data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-(.)-", df)
data <- gsub('Huiswaard\\s.\\s>*', "Huiswaard-\\(\\)-", df)

有人知道如何使用gsub跳过替换参数中的字符吗?

在正则表达式中,您可以使用括号分组并使用
\\1

data <- gsub('Huiswaard\\s(\\d)\\s>*', "Huiswaard-\\1-", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Zuid" "Huiswaard-2-West"

我使用此备忘单帮助我理解正则表达式:

在正则表达式中,您可以使用括号分组,并使用
\\1

data <- gsub('Huiswaard\\s(\\d)\\s>*', "Huiswaard-\\1-", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Zuid" "Huiswaard-2-West"

我使用此备忘单帮助我理解正则表达式:

只需执行gsub(“\\s”,“-”,data)看起来您只是想用
-
替换空格。如果是这样,@onyanbu的评论将解决您的问题。如果没有,您需要在您的问题中提供更多信息。谢谢@onyanbu,我的数据示例没有那么清楚,其中还有其他数据也受该代码的影响(例如“-D-e-H-o-r-n--n-o-o-r-D-”
gsub(x,pattern=“^(huisward)\\s(\\D+)\\s(\\w+”),replacement=“\\1-\\2-\\3”)
谢谢你解决了这个问题@Martinschmelzer只需执行gsub(“\\s”,“-”,data)看起来您只是想用
-
替换空格。如果是这样,@onyanbu的评论将解决您的问题。如果没有,您需要在您的问题中提供更多信息。谢谢@onyanbu,我的数据示例没有那么清楚,其中还有其他数据也受该代码的影响(例如“-D-e-H-o-r-n--n-o-o-r-D-”
gsub(x,pattern=“^(huisward)\\s(\\D+)\\s(\\w+”),replacement=“\\1-\\2-\\3”)
谢谢你解决了这个问题@马丁施梅尔泽
data <- gsub('Huiswaard\\s(\\d)\\s\\w+', "Huiswaard-\\1-Oost", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Oost" "Huiswaard-2-Oost"