关于过滤含连续重复超3位数字ID的技术咨询
问题描述
原始ID列表:
74876593476 74877777777 74884784633 74822228765 74878645421 74820201111
需求:过滤掉所有包含连续重复4位及以上相同数字的ID,最终保留的正确结果如下:
74876593476 74884784633 74878645421
(注:你提供的预期结果中重复了74876593476,推测是输入笔误,以上为实际过滤后的正确结果)
过滤实现方案
核心逻辑是使用正则表达式(\d)\1{3,}匹配连续4次及以上的相同数字,然后过滤掉匹配该规则的ID,保留未匹配的。以下是几种常用语言的实现:
Python 实现
import re id_list = [ "74876593476", "74877777777", "74884784633", "74822228765", "74878645421", "74820201111" ] # 匹配连续4次及以上相同数字的正则 pattern = re.compile(r'(\d)\1{3,}') # 过滤出未匹配到的ID filtered_ids = [id_str for id_str in id_list if not pattern.search(id_str)] # 打印结果 for _id in filtered_ids: print(_id)
JavaScript 实现
const idList = [ "74876593476", "74877777777", "74884784633", "74822228765", "74878645421", "74820201111" ]; const regex = /(\d)\1{3,}/; const filteredIds = idList.filter(id => !regex.test(id)); // 输出结果 filteredIds.forEach(id => console.log(id));
Bash 命令行实现
如果用Shell处理,可以直接用grep反向匹配:
# 直接输入ID列表过滤 echo -e "74876593476\n74877777777\n74884784633\n74822228765\n74878645421\n74820201111" | grep -vE '([0-9])\1{3,}' # 如果ID保存在文件ids.txt中,执行: # grep -vE '([0-9])\1{3,}' ids.txt
内容的提问来源于stack exchange,提问作者Abdulsalam Elnaeem
相关产品推荐
相关产品推荐

