R正则表达式识别特定字符串后的数字

R regular expression to identify number after specific string

我发现之前的 post 不够灵活,无法适用于我的情况... Regular expression to get a number after particular string in R

我想做的是在对地址进行地理编码之前清理地址。 例如,我想删除所有邮政信箱信息。为此,我需要能够识别提示邮政信箱的字符串后面的数字。

df <- data.frame(Address = c("123 Fake street, Melbourne, 3000",
                       "PO box 2 123 Fake street, Melbourne, 3000", 
                       "PO box 22313 123 Fake street, Melbourne, 3000", 
                       "PObox 213 Unit 12 123 Fake street, Melbourne, 3000", 
                       "123 Fake street PO box 22313, Melbourne, 3000"))

df$Address <- as.character(df$Address)



> df
                                             Address
1                   123 Fake street, Melbourne, 3000
2          PO box 2 123 Fake street, Melbourne, 3000
3      PO box 22313 123 Fake street, Melbourne, 3000
4 PObox 213 Unit 12 123 Fake street, Melbourne, 3000
5      123 Fake street PO box 22313, Melbourne, 3000

我希望所有地址都返回为“123 Fake street, Melbourne, 3000”。

如您所见,

gsub("( ){0,1}PO( ){0,1}box [0-9]+( Unit [0-9]+){0,1}( ){0,1}","",df$Address)

你的例子对我有用。

已保留 ( ) 以简化概念和阅读。