2013-11-10 4 views
0

У меня есть список строк. Я хочу выбрать строки, которые соответствуют определенному шаблону, используя регулярное выражение. Регулярные выражения Python не берут список, и я не хочу использовать циклы.Поиск списка строк с использованием регулярных выражений в python

Любое предложение?

+0

Почему вы не хотите использовать циклы? Вы, кажется, знаете основы того, как подойти к этому, но заявляете, что это ограничение, которого вы не можете ... Итак ... errr? Будет ли «фильтровать» достаточно? –

+0

потому что петли медленные, и у меня очень большой список – Shan

+0

Петли очень медленные ... на самом деле? Преждевременная оптимизация и все это ... –

ответ

2

Try:

def searcher(s): 
    if COMPILED_REGEXP_OBJECT.search(s): 
     return s 

matching_strings = filter(searcher, YOUR_LIST_OF_STRING) 

searcher() возвращает строку, если она соответствует, в противном случае возвращает None. filter() возвращает только «истинные» объекты, поэтому пропустит None. Он также пропустит пустые строки, но сомневается, что это проблема.

Или, лучше, так как @JonClements отметил:

matching_strings = filter(COMPILED_REGEXP_OBJECT.search, YOUR_LIST_OF_STRING) 

не только короче, он только смотрит метод .search один раз (а не один раз в строке).

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