R 检测并替换字符串中的多个前导零

R 检测并替换字符串中的多个前导零,r,stringr,R,Stringr,我正在处理一个地址数据库。为了进一步清洁,我需要识别存储在包含门号的字符串中的前导零。所以一个干净友好的案例应该是7/5,其中7是门牌号,5是门牌号 问题是,在某些情况下,牵涉到前导零点-不仅在字符串的开始,而且在中间。当然,也有正常的和必要的零。所以我可以有一个像7/50的地址,在那里零是完全可以的,应该留在那里。但我也可以有007/05,那里所有的零都需要消失。所以我能想到的唯一模式是检查在零之前是否有大于零的数字。如果否,则删除该零,如果是,则保留该零 有什么功能可以实现这样的功能吗?或者

我正在处理一个地址数据库。为了进一步清洁,我需要识别存储在包含门号的字符串中的前导零。所以一个干净友好的案例应该是7/5,其中7是门牌号,5是门牌号

问题是,在某些情况下,牵涉到前导零点-不仅在字符串的开始,而且在中间。当然,也有正常的和必要的零。所以我可以有一个像7/50的地址,在那里零是完全可以的,应该留在那里。但我也可以有007/05,那里所有的零都需要消失。所以我能想到的唯一模式是检查在零之前是否有大于零的数字。如果否,则删除该零,如果是,则保留该零


有什么功能可以实现这样的功能吗?或者这需要一些定制的东西?谢谢你的建议

也许后面的负面观察会有所帮助

x <- c("7/50", "7/5", "007/05")
stringr::str_remove_all(x, "\\b(?<![1-9])0+")
# [1] "7/50" "7/5"  "7/5"

对于如此有限的一组测试用例,很难说清楚。

您可以使用gsub尝试“代码低于基本R”选项

给定

s <- c("01/1001001", "07/050", "0007/50", "7/5", "007/05")

嗯,对s来说,这看起来很有希望。你能简单解释一下吗?我查找0,后跟1-9 0+[1-9],如果找到\\1@MrFlick,谢谢您的提醒!我更新了我的答案,希望它能起到很好的作用,@flick先生。我只是看了一下,这些数字确实存在。下一步我将看一看你的建议。@Jakob\\1表示你保持了第一个伟大答案中的模式,似乎按预期工作。您还可以简单地解释一下\\b这个术语是什么吗?这实际上与R无关。stringr使用正则表达式,这是在R之外定义的语法,被许多编程语言使用。也许能帮你,太好了。在阅读答案时,我多次遇到regex,但我并不总是确定该从中得到什么!
s <- c("01/1001001", "07/050", "0007/50", "7/5", "007/05")