regex - 当整行不重复时,使用 REGEX 删除重复项
问题描述
^(.*)(\r?\n\1)+$
用。。。来代替\1
以上是使用 REGEX 删除重复行的好方法,但它要求整行都是重复的
但是 – 如果我想检测和删除 dup,我会使用什么 – 当整行 sa 不是一个 dup – 而只是前 X 个字符
示例:原始文件
12345 Dennis Yancey University of Miami
12345 Dennis Yancey University of Milan
12345 Dennis Yancey University of Rome
12344 Ryan Gardner University of Spain
12347 Smith John University of Canada
删除重复
12345 Dennis Yancey University of Miami
12344 Ryan Gardner University of Spain
12347 Smith John University of Canada
解决方案
如何使用第二组检查例如前 10 个字符:
^((.{10}).*)(?:\r?\n\2.*)+
where{n}
指定 linestart 中应进行重复检查的字符数量。
- 整行被捕获
$1
,也用作替换 - 第二组用于检查重复行以
另一个想法是使用前瞻并用空字符串替换:
^(.{10}).*\r?\n(?=\1)
如果捕获$1
在下一行前面,则此行将仅删除当前行。
为了还删除包含最多 10 个字符的重复行,使用条件的 PCRE 想法:^(?:(.{10})|(.{0,9}$)).*+\r?\n(?(1)(?=\1)|(?=\2$))
并替换为空字符串。
如果您的正则表达式支持所有格量词,则使用 of.*+
将提高性能。
请注意,所有这些模式(以及您当前的正则表达式)仅针对连续的重复行。
推荐阅读
- python - 从字典追加到列表
- machine-learning - BERT 多类情感分析准确率低?
- node.js - 每当我尝试在 2 个模型之间创建多对多关联时,必须为多对多自关联错误定义“as”
- reactjs - 如何渲染组件以使用道具上的数据但不在 REACT JS 上显示?
- r - 如何对数据框中的一行中的项目执行二比例 Z 检验并将 p 值附加到数据框中?
- assembly - 如何恢复 x86-64 寄存器保存约定
- javascript - 我需要帮助定位引导组件的缺失 javascript
- regex - 如何隔离字符串中的单词,包括缩写名称?
- c++ - 使用 infile 从文件读取时程序不断崩溃,我不知道为什么
- reactjs - 如何在 React 中的不同文件之间共享可变数据