首页 > 解决方案 > 替换组出现次数的正则表达式替换语法

问题描述

取示例字符串:

__________Hello

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

期望的输出:

____________________Hello

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

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

问题:

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

例如:

/_{10}/_{20}/

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

标签: regexpcre

解决方案


它不能在正则表达式本身内完成。

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

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

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

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


推荐阅读