如何删除字符串中非数字前的句号?R语言正则报错求助
解决R语言中保留数字后句号、删除其他句号的问题
你的代码报错是因为R默认使用POSIX正则引擎,不支持(?<![:digit:])这种负向后顾断言,只需要给gsub加上perl=TRUE参数启用PCRE正则引擎就能解决。
修正后的代码如下:
df <- data.frame( ADDR = c("2.3 to 11.1 on N. Side Ave.", "MP 1.25-4.00 Main St."), NUM = c("12-34", "23-45") ) f.Addr <- function(ADDRESS, NUMBER) { # 匹配前面不是数字的句号,替换为空格 ADDRESS <- gsub("(?<!\\d)\\.", " ", ADDRESS, perl = TRUE) # 若要直接删除句号(替换为空),将第二个参数改为""即可 data.frame(NUMBER, ADDRESS) } df <- f.Addr(df$ADDR, df$NUM) print(df)
运行后输出与你的期望一致:
ADDRESS NUMBER 1 2.3 to 11.1 on N Side Ave 12-34 2 MP 1.25-4.00 Main St 23-45
补充说明:
(?<!\\d)是负向后顾断言,用来限定"当前位置前面不是数字"\\.匹配句号(句号在正则中属于特殊字符,必须转义)
内容的提问来源于stack exchange,提问作者DHoog
相关产品推荐
相关产品推荐

