我有一个包含文本键的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
2条答案
按热度按时间bvuwiixz1#
你可以使用look aheadAssert来避免匹配下一个替换需要匹配的字母。这个look aheadAssert还可以检查序列是否以双引号结束。这对于检查目标是否被引用已经足够了,而不必实际Assert序列 * 以引号开始 *:
查找:
\.(?=[A-Za-z.]+")
替换为:
-
如果两个连续点保持不变,则:
查找:
\b\.\b(?=[A-Za-z.]+")
cu6pst1q2#
你可以试着用下面的模式
(?<="|\.)(\w+?)\.
$1-
演示:https://regex101.com/r/PGnCG0/1