2010-04-23 4 views

ответ

14

Вы можете использовать re.search вместо re.match.

Также кажется, что здесь вам не нужны регулярные выражения. Ваше регулярное выражение 123.35, вероятно, не делает то, что вы ожидаете, потому что точка соответствует чему-либо.

Если это так, вы можете сделать простую привязку строки, используя x in s.

+0

да, ваш на 5 секунд быстрее, +1 – YOU

12

Использование re.search или просто использовать в if l in temp:

Примечание: встроенный тип list не должно быть в тени, так for l in lists: лучше

+0

Я бы согласился на простое подстроку, соответствующее 'in' намного проще, чем re.search. – fantabolous

0

Вы можете сделать это с немного более сложной проверки с помощью map и any.

>>> temp = "[email protected]+" 
>>> lists = ["abc", "123.35", "xyz", "AND+"] 
>>> any(map(lambda match: match in temp, lists)) 
True 
>>> temp = 'fhgwghads' 
>>> any(map(lambda match: match in temp, lists)) 
False 

Я не уверен, что это быстрее, чем скомпилированное регулярное выражение.

Смежные вопросы