R:Gsub 通过在替换中跳过一个字符来替换模式
R: Gsub replacing pattern with skipping a character in replacement
我想使用 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)
全部无效。我最终得到这样的东西:
Huiswaard-.-West
有人知道如何使用 gsub 跳过替换参数中的字符吗?
在正则表达式中,您可以使用括号将 back-reference 与 \1
分组
data <- gsub('Huiswaard\s(\d)\s>*', "Huiswaard-\1-", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Zuid" "Huiswaard-2-West"
如果你想改变后缀,你也可以用\w+
捕获第二个单词,这将捕获space之后的1个或多个单词字符。:
data <- gsub('Huiswaard\s(\d)\s\w+', "Huiswaard-\1-Oost", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Oost" "Huiswaard-2-Oost"
我用这个秘籍 sheet 来帮助我理解正则表达式:https://www.rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf
我想使用 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)
全部无效。我最终得到这样的东西:
Huiswaard-.-West
有人知道如何使用 gsub 跳过替换参数中的字符吗?
在正则表达式中,您可以使用括号将 back-reference 与 \1
data <- gsub('Huiswaard\s(\d)\s>*', "Huiswaard-\1-", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Zuid" "Huiswaard-2-West"
如果你想改变后缀,你也可以用\w+
捕获第二个单词,这将捕获space之后的1个或多个单词字符。:
data <- gsub('Huiswaard\s(\d)\s\w+', "Huiswaard-\1-Oost", df)
data
[1] "Huiswaard-2-Oost" "Huiswaard-1-Oost" "Huiswaard-2-Oost"
我用这个秘籍 sheet 来帮助我理解正则表达式:https://www.rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf