如何用正则表达式匹配CSV文件中最后字段不重复的行
匹配最后字段与上一行不同的CSV行
修改后的正则表达式
要实现匹配连续两行中最后字段(分号后的数字)不同的情况,可在原正则基础上通过负向预查排除与上一行最后字段相同的场景,修改后的正则如下:
^(([^;]+;){6})(\d+)\n(([^;]+;){6})(?!\3)\d+
正则逻辑说明
^(([^;]+;){6})(\d+):匹配第一行完整内容,捕获组\3对应第一行的最后数字字段\n:匹配换行符,关联前后两行(([^;]+;){6}):匹配第二行的前6个字段内容(?!\3)\d+:负向预查,确保第二行的最后数字字段不等于第一行捕获的\3值
匹配结果示例
针对你提供的CSV内容,该正则会匹配以下连续行对:
- 第1行与第2行(最后字段1027144 vs 1027145)
- 第3行与第4行(最后字段1027145 vs 1027146)
- 第4行与第5行(最后字段1027146 vs 1027147)
- 第5行与第6行(最后字段1027147 vs 1027148)
若需单独提取这些行,可根据使用的工具(如grep、sed、VS Code等)调整捕获或输出逻辑。
内容的提问来源于stack exchange,提问作者avb
相关产品推荐
相关产品推荐

