regex - 替换组出现次数的正则表达式替换语法
问题描述
取示例字符串:
__________Hello
我想_
用 20 x替换以 10 x 开头的行_
期望的输出:
____________________Hello
我可以通过多种方式做到这一点,即:
/^(_{10})/\1\1/
/^_{10}/____________________/
/^(__________)/\1\1/
etc...
问题:
正则表达式规范/表达式本身有没有办法——比如 PCRE(或任何正则表达式库/引擎)——指定一个字符的替换出现?
例如:
/_{10}/_{20}/
我不知道我是脑子空白还是我从来没有这样做过,但我似乎在正则表达式规范文档中找不到任何这样的东西。
解决方案
它不能在正则表达式本身内完成。
如果我有输入"39572a4872"
并且我想用 替换它"39572aaaaa4872"
,有很多简单的方法可以实现,其中可以包括正则表达式,但正如 Wiktor 在评论线程中解释的那样,替换的实际量词本身并不是实现的通过正则表达式。
这似乎并不重要,因为在此示例中,我可以简单地手动或以编程方式应用替换 5 次,但标准化技术的好处之一是在不同的环境、语言甚至程序中应用相同的概念。
因此,我和其他许多人在我的正则表达式的可移植性方面取得了很大的成功。
这个问题是看是否可以在正则表达式本身的语法中为替换字符串指定量词。它肯定不是。
推荐阅读
- django - 如何使用 Python 在 Django 中只有正十进制数?
- database - 来自数据库的一段文本
- azure-devops - 如何允许用户查看 Azure DevOps Server 2019 上的所有项目
- typescript - 打字稿,部分错误
? - python - Python:按顺序读取 Word 文档
- arrays - 使用角度 9 从数组中删除重复数据
- clojure - 如何将 HugSQL 参数扩展为多个类似语句
- javascript - 根据图像在 wordpress 中的方向向图像添加类
- powershell - 使用 Powershell 编辑制表符分隔的文本文件中的列
- terraform - 使用 Terraform 将 EFS 挂载到 AWS Fargate - PlatformTaskDefinitionIncompatibilityException 错误: