如何在R语言中给城市名后的指定关键词及数字前添加", TX"
解决城市名插入", TX"的正则问题
你的原代码正则逻辑有两个核心问题:
- 正向预查的方向搞反了——你写的是找前面包含关键词/数字的位置,但实际需要找后面跟着这些内容的位置,也就是城市名和后续后缀之间的空格。
- 数字部分的匹配完全错误——原正则里的
^([0-9]+)是匹配行首的数字,但你的数字后缀是在城市名之后,这个规则根本对应不上场景。
下面是修正后的代码,能完美匹配你给出的所有测试案例:
library(dplyr) library(stringr) DATA %>% mutate(col = str_replace(col, "\\s+(?=(?i)(Util|Municipal|Police|Water|\\d+))", ", TX "))
正则逻辑解释
\\s+:匹配城市名和后续内容之间的1个或多个空格(?=(?i)(Util|Municipal|Police|Water|\\d+)):正向预查,确保后面跟着的是以下内容((?i)表示不区分大小写):Util/Municipal/Police/Water任意一个关键词\\d+:一个或多个数字(对应带数字后缀的情况)
- 把匹配到的空格替换成
, TX,就完成了在城市名末尾插入目标内容的操作。
测试后你的原始数据会被转换成期望的结果:
| Col |
|---|
| City of Fake, TX Municipal Court |
| City of Pretend, TX Water Utility |
| City of Not Real, TX Police Department |
| Fraud Hill, TX Utility |
| El Imagined, TX 344th District Court |
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

