2015-03-21 7 views
1

Я узнал о регулярных выражениях в Python и знаю, что для поиска всех слов только с символами [a, e, f, g, h, i, n] Я могу использовать следующее:Регулярные выражения Python - найти совпадение символов с разными длинами слов

t = [w for w in words if re.search('^[aefghin]$', w)] 

И найти только 7 букв слова с этими символами можно использовать:

t = [w for w in words if re.search('^[aefghin]{7}$', w)] 

Однако, как я могу найти все слова, включая эти символы, которые имеют длину от до 7 с использованием регулярных выражений?

ответ

-1

Вы можете использовать следующий шаблон, который совпадает любое сочетание [aefghin] букв длиной от 1 до 7 (подробнее о Limiting Repetition):

[aefghin]{1,7} 

Regular expression visualization

Debuggex Demo

+1

Это, очевидно, неправильно, оно будет соответствовать строкам длиной более 7 символов. – vermillon

+0

Вам не нужны^и $ в самом начале и конце? – Ben

+0

@Ben извините за редактирование OP! я думаю, он пропустил это! как я! :) – Kasramvd

0

Для этого вы можете использовать '^[aefghin]{,7}$'. или {1,7}, если вы хотите исключить пустые строки.

Синтаксис является {minimum_number, maximum_number}, но если опустить minimum_number это означает «что-то меньше, чем или равно maximum_number (включая 0)» и если опустить maximum_number это означает, что «все большее или равное minimum_number».

+0

Та же проблема, как мой комментарий выше. Это возвращает пустой список, хотя я знаю, что есть слова, которые должны быть возвращены. Например, – hjalpmig

+0

? Можете ли вы привести несколько примеров строк, которые вы ожидаете совместить, но не так ли? Я пробовал, и это определенно работает. – vermillon

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