【问题标题】:Regex: Replace WITH REPEATED strings , not "replace repeat"正则表达式:替换为重复字符串,而不是“替换重复”
【发布时间】:2012-10-08 09:29:39
【问题描述】:

我们能否使用正则表达式将匹配的模式替换为 REPEATED 模式?

例如: 目标字符串是“abc2:4def”,我想要的是abc2222def,这意味着“4”是目标字符串中的转发器,我想将我的字符串组合回“未压缩”格式。

我可以想到sed中的反向引用,

sed 's/\([0-9]+\):\([0-9]\)/\1\\{\2\\}/' #\1 to match "2" and \2 to match "4".

\\{n\\} 是重复n次,可惜这样不行。

我想知道REGEX 是否可以支持它。有什么建议吗?

我知道我们可以通过其他工具来实现,但目前我只能使用一些 REGEX 函数。

这是我在stackoverflow中的第一篇文章,如果我遗漏了什么,请告诉我。

【问题讨论】:

    标签: regex replace repeat


    【解决方案1】:

    Perl 中,我可以做到这一点:

    $ echo abc2:4def | perl -lne 'print $1 . $2 x $3 . $4 if m/^(\w+)(\d):(\d)(.*)/;'
    abc2222def
    

    【讨论】:

    • 确实如此,但“乘法”不是正则表达式,而是代码功能。 :)
    • 如果你在 REGEX 中找到这个,欢迎回来告诉我怎么做。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2019-02-19
    • 2013-02-01
    相关资源
    最近更新 更多