regex 正则表达式:我如何重复一个表达式,包括替换捕获组?

gcuhipw9  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(171)

我使用Den4b Renamer来重命名文件,我有以下表达式:
([A-Z])([a-z]+)([A-Z])
并按如下方式更换:
$1$2 $3
这有效地分离了驼峰。即:
230 VuduCumuloNimbo public.ens变为:230 Vudu CumuloNimbo public.ens
DreamDroneFinale.ens变为:Dream DroneFinale.ens
但是模式在第一次替换后终止。现在我只是复制规则三次来分隔下两个驼峰对。有没有一种方法可以修改我的表达式,这样我就不必复制它来获得我想要的输出?
我希望230 VuduCumuloNimbo public.ens变成230 Vudu Cumulo Nimbo public.ens
并且DreamDroneFinale.ens变为Dream Drone Finale.ens
我如何组织我的表达式来实现这一点?
谢谢你的帮助。

7y4bm7vi

7y4bm7vi1#

假设Den4b重命名器支持正则表达式查找(双向),我们可以尝试以下查找和替换:

Find:    /(?<=[a-z])(?=[A-Z])/gm
Replace: (single space)


∮ ∮ ∮ ∮
此正则表达式模式匹配输入字符串中满足以下条件的任何点:

  • (?<=[a-z])小写字母位于AND之前
  • (?=[A-Z])后跟大写字母

但是要注意,这个模式本身只 * asserts *,而不 * match * 任何东西,它是一个零宽度匹配,所以当我们用一个空格替换时,我们实际上插入了一个空格来分隔驼峰式字符。

相关问题