regex - 如何在正则表达式中输出模式的重复次数?
问题描述
我想用正则表达式输出模式的重复次数。例如,转换"aaad"
为"3xad"
,"bCCCCC"
为"b5xC"
。我想在sed
or中执行此操作awk
。
我知道我可以匹配它,(.)\1+
甚至可以捕获它((.)\1+)
。但是如何获得重复次数并将该值插入到正则表达式或 sed 或 awk 中的字符串中?
解决方案
Perl 来救援!
perl -pe 's/((.)\2+)/length($1) . "x$2"/ge'
-p
逐行读取输入并在处理后打印s///
是类似于 sed 的替换/e
使替换评估为代码
例如
aaadbCCCCCxx -> 3xadb5xC2xx
推荐阅读
- angular - “找不到具有 id 的列”,但该列存在
- node.js - 无法迁移带有 db:migrate 续集的 postgres
- javascript - 你能做一个可变的href,而不是一个按钮,只有一个文本框
- c# - 将 json 反序列化为 c# 对象
- amazon-web-services - 如何在 AWS 中设置 Avalanche 区块链(PoS)节点?
- java - 为了释放内存,在Java中新建一个File实例后我该怎么办?
- python - 有人知道如何使用 python 上的 instaloader 包只获取图片而不是视频吗?
- python - 将频道提及转换为不和谐文本频道对象
- javascript - React:ReactToPrint 如何打印适合任何页面大小的动态宽度
- sql - 如何在SQL中提取关键字并在数据库记录中搜索?