【问题标题】:Regex: How can I repeat an expression, including the replacement capturing groups?正则表达式:如何重复一个表达式,包括替换捕获组?
【发布时间】:2023-01-22 13:26:20
【问题描述】:

我正在使用 Den4b Renamer 重命名文件,我有以下表达式:

([A-Z])([a-z]+)([A-Z])

和这样的替换:

$1$2 $3

这有效地分离了 camelcase。 IE:

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

我如何构造我的表达来实现这一点?

谢谢你的帮助。

【问题讨论】:

  • Den4b Renamer 是否支持替换正则表达式外观?

标签: regex


【解决方案1】:

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

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

Demo

此正则表达式模式匹配输入字符串中的任何点:

  • (?&lt;=[a-z]) 一个小写字母在 AND 之前
  • (?=[A-Z])后面跟着一个大写字母

但请注意,此模式本身仅断言, 但不匹配任何事物。这是一个零宽度匹配,所以当我们用单个空格替换时,我们有效地插入了一个空格来分隔驼峰式组件。

【讨论】:

    猜你喜欢
    • 2014-08-30
    • 2010-11-19
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2011-03-11
    • 2017-01-07
    相关资源
    最近更新 更多