regex 替换特定阵列中的引用

jucafojl  于 2023-01-31  发布在  其他
关注(0)|答案(2)|浏览(145)

我有一个包含文本键的JSON文件,用于我的代码库,格式为

"abc.xyz": "plain text",
"abc.xyz.lmn": "plain text",
"abc.xyz.lmn.qrs.hij": "plain text",

其中,xxx是格式为[a-zA-Z].[a-zA-Z]的密钥,例如“应用程序.功能.组件.标题”或类似格式。
然后,我在整个代码库中都引用了这些代码。

someComponent(title: "xyz.abc.ijk")

我尝试将键中的所有点.替换为破折号-,以获得:xxx-xxx-xxx,即周围的结构可能不同。
类似这样,但是xxx组的数目在密钥之间不同:

\"([a-zA-Z]+(\.)[a-zA-Z]+)+

我正在使用我的编辑器(Xcode),所以我认为regex的风格是ICU

bvuwiixz

bvuwiixz1#

你可以使用look aheadAssert来避免匹配下一个替换需要匹配的字母。这个look aheadAssert还可以检查序列是否以双引号结束。这对于检查目标是否被引用已经足够了,而不必实际Assert序列 * 以引号开始 *:
查找:\.(?=[A-Za-z.]+")
替换为:-
如果两个连续点保持不变,则:
查找:\b\.\b(?=[A-Za-z.]+")

cu6pst1q

cu6pst1q2#

你可以试着用下面的模式

  • 检索模式:(?<="|\.)(\w+?)\.
  • 替代值:$1-

演示:https://regex101.com/r/PGnCG0/1

相关问题