0

我正在搜索一个字符串000295-0000108352@ap.ipaccess.com108352这应该返回 true。但是,如果我搜索它的子字符串,它不应该返回 true。例如,如果我搜索08352,则缺少 1 ,因此这是错误的。我应该如何做到这一点?

我是这样搜索的:

for item in parse:          
            if element in item:

where elementis08352和 parse 是列表中的几个字符串。这是返回我不想要的积极因素。

也许我应该寻找一种模式?在我搜索的每个字符串之后是 a@我注意到,也在每个字符串之前是 a 0。所以也许是一个正则表达式?并以某种方式将其合并到我的forand中if

编辑:如果我在搜索字符串前面加上“00”并在末尾添加@怎么办?像:

if "00"+access_point_id+"@" in item:
4

2 回答 2

1

一个简单的中缀搜索就足够了:

found = ("0%s@" % element) in item

不过,像这样的正则表达式-0+(\d+)@更安全:

m = re.search(r"-0+(\d+)@", item)
found = m and m.group(1) == element
于 2013-05-24T12:37:07.783 回答
1

如果您正在寻找一个 10 位数字的字符串,您可以在您搜索的字符串中添加填充:

>>> '{:0>10}'.format('08352')
'0000008352'
>>> '-{:0>10}@'.format('08352')
'-0000008352@'
于 2013-05-24T12:56:13.513 回答