繁体   English   中英

在数字列表中搜索特定模式

[英]Searching a list of numbers for a specific pattern

我正在使用欧拉计画问题51,并尝试通过搜寻素数列表来解决该问题。 我首先尝试找到示例候选项(56003)。

我将问题简化为:首先将注意力集中在具有一定位数的素数上。 F.ex. 我先看一下数组中的5位素数。

ABCDE表示素数。 仅替换一位: * BCDE产生5C1 = 5个模式候选: A * CDE等。替换两位: ** CDE产生5C2 = 10个模式候选。 最多可替换4位数字:**** E,这会产生5C4模式的候选字符。

例如,我有这个数字列表

s = ['55967', '56003', '56113', '56081', '56333', '56093', '58091']

并说我想搜索AB ** E模式:然后,我想搜索功能找到:56003、56113和5633。

我的问题是我不知道该怎么做。 我已经阅读了一些有关正则表达式的内容,但得出的结论是RE只会使我的大脑受伤。

谢谢

以下正则表达式片段应适用于您的问题。

import re
s = ['55967', '56003', '56113', '56081', '56333', '56093', '58091']
patt_s = re.compile('(56\d\d3)')
for s_nr in s:
    matched_re = re.search(patt_s, s_nr)
    if matched_re:
        print matched_re.group(0)

输出:56003 56113 56333 56093

但是,您确实需要阅读正则表达式并尝试使用简单的表达式,或者修改上面的表达式以针对其他情况进行自定义! 至少在许多不同的语言中它们大致相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM