首页 > 解决方案 > 如何在特定值上过滤具有特定模式的特定条目?

问题描述

我有一个包含以下信息的数据文件:我有兴趣只检索模式所在的条目

len:XXXX大于 200

TY_DN106_c0_g2::TY_DN106_c0_g2_i1::g.1::m.1 type:internal len:123 gc:universal TY_DN106_c0_g2_i1:1-366(+) TY_DN106_c0_g2::TY_DN106_c0_g2_i1::g.2::m.2 type:internal len 213 gc:universal TY_DN106_c0_g2_i1:366-1(-) TY_DN108_c0_g1::TY_DN108_c0_g1_i1::g.3::m.3 type:5partial len:513 gc:universal TY_DN108_c0_g1_i1:3-341(+)

我怎么能用 Python 或其他脚本语言来做呢?

标签: pythonregexsearchfiltering

解决方案


您可以使用len:([2-9]\d{2}|[1-9]\d{3,})正则表达式来获取所需的匹配项。

如果要匹配整行,请使用:^.*len:([2-9]\d\d|[1-9]\d{3,}).*$.


正则表达式解释

表达式的第一部分:按字面意思len:匹配字符'len:' 。

之后,在第一个捕获组中,我们有 2 个备选方案。

第一个选项:[2-9]\d{2}匹配 2 到 9 之间的数字,后跟任意两位数字,从而覆盖 200 到 999 的所有数字。

第二个选项:[1-9]\d{3,}匹配所有以数字 1 到 9 开始,后跟 3 个其他数字的字符,从而覆盖从 1000 到 inf 的所有整数,省略以 0 开头的数字字符。


推荐阅读