【问题标题】:Regex Replacement Syntax for number of replacent group occurences替换组出现次数的正则表达式替换语法
【发布时间】:2021-09-08 17:42:46
【问题描述】:

取样本字符串:

__________Hello

我想用 20 x _ 替换以 10 x _ 开头的行

期望的输出:

____________________Hello

我可以通过多种方式做到这一点,即:

/^(_{10})/\1\1/
/^_{10}/____________________/
/^(__________)/\1\1/
etc...

问题:

有没有办法在正则表达式规范/表达式中本身 - 比如说 PCRE(或任何正则表达式库/引擎) - 指定替换出现字符?

例如:

/_{10}/_{20}/

我不知道我是脑子空白还是我从来没有这样做过,但我似乎在正则表达式规范文档中找不到任何这样的东西。

【问题讨论】:

  • 不,也没有必要,还有其他方法可以实现。例如。使用回调方法作为替换参数。
  • @WiktorStribiżew 又不是真的。你根本不知道我的背景。令人惊讶的是,你坚持你不知道的事情。说真的,DV 和近距离投票是怎么回事。合法且不重复的问题,格式正确且非常清晰。 QA 的优秀候选人,可以简单地回答和添加,以便以后寻找它的其他人的价值。
  • “你根本不知道我的上下文。” - 你在哪里解释了你的“背景”?我不知道什么?我知道您要求的功能不存在。我在前两个 cmets 中回答了你的问题。您为自己的问题提供了大量解决方案的事实证明没有真正的问题 - 没有问题,不需要问题。
  • Can quantifiers be used in regex replacement in R? 的副本您甚至可以在那里找到 PCRE 正则表达式示例。
  • @WiktorStribiżew 我明白你在说什么。但是,如果我错了,请纠正我。该问题正在寻求量化对输入中已有内容的替代。即“我应该如何用点或任何其他符号替换 \\S 中的确切字符数?*” - 我希望指定 不同 的替换数量输入中匹配的内容。

标签: regex pcre


【解决方案1】:

不能在 Regex 本身内完成。

如果我有输入 "39572a4872" 并且我想用 "39572aaaaa4872" 替换它,有很多简单的方法可以实现,其中可以包括正则表达式,但正如 Wiktor 在评论线程中解释的那样,实际量词替换本身并不是通过正则表达式实现的。

这似乎并不重要,因为在此示例中,我可以简单地手动或以编程方式应用替换 5 次,但标准化技术的好处之一是在不同的环境、语言甚至程序内应用相同的概念。

正因为如此,我和其他许多人在我的正则表达式的可移植性方面取得了很大的成功。

这个问题是看是否可以在正则表达式本身的语法中为替换字符串指定量词。它肯定不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多