如何在Xcode(ICU正则)中将代码与JSON键的点替换为短横线?
解决Xcode中替换JSON键与代码引用中点为短横线的问题
需求说明
需要将JSON文件中的键(如"abc.xyz.lmn")和代码库中的引用(如title: "xyz.abc.ijk")里的所有.替换为-,最终格式为xxx-xxx-xxx。
正则方案(适配Xcode的ICU正则)
直接匹配双引号内、位于字母之间的点,精准替换:
查找正则:
(?<="(?:[a-zA-Z]+\.)*[a-zA-Z])\.(?=[a-zA-Z](?:\.[a-zA-Z]+)*")
替换内容:
-
正则解释
(?<="(?:[a-zA-Z]+\.)*[a-zA-Z]):正向后查,确保当前点位于双引号内,且左侧是字母(前面可带多组「字母+点」的前缀)\.:匹配需要替换的点字符(?=[a-zA-Z](?:\.[a-zA-Z]+)*"):正向预查,确保当前点位于双引号内,且右侧是字母(后面可带多组「点+字母」的后缀)
操作步骤
- 打开Xcode全局查找替换(快捷键
Cmd+Shift+F) - 点击查找框左侧的
.*按钮,切换到正则匹配模式 - 粘贴上述查找正则到输入框,点击「Find」确认所有匹配的点都是目标内容
- 在替换框输入
-,点击「Replace All」完成批量替换
原正则问题说明
你之前使用的\"([a-zA-Z]+(\.)[a-zA-Z]+)+存在缺陷:重复的捕获组会被最后一次匹配覆盖,无法适配多组字母+点的结构,因此无法正确处理包含多个点的键或引用。
内容的提问来源于stack exchange,提问作者RickiG
相关产品推荐
相关产品推荐

