Регулярное выражение, совпадающее с чем-либо больше, чем восемь букв в Python - PullRequest
15 голосов
/ 31 августа 2010

Несмотря на попытки освоить grep и связанное с ним программное обеспечение GNU, я не приблизился к освоению регулярных выражений.Они мне нравятся, но я все равно нахожу их немного раздражающими.

Полагаю, этот вопрос для некоторых не сложен, но я потратил часы, пытаясь понять, как искать в моемлюбимая книга для слов больше определенной длины, и, в конце концов, придумала какой-то действительно уродливый код:

twentyfours = [w for w in vocab if re.search('^........................$', w)]
twentyfives = [w for w in vocab if re.search('^.........................$', w)]
twentysixes = [w for w in vocab if re.search('^..........................$', w)]
twentysevens = [w for w in vocab if re.search('^...........................$', w)]
twentyeights = [w for w in vocab if re.search('^............................$', w)]

... строка для каждой длины, от определенной длины до другойодин.

Вместо этого я хочу сказать: «дайте мне каждое слово в словаре, длина которого превышает восемь букв».Как бы я это сделал?

Ответы [ 5 ]

21 голосов
/ 31 августа 2010

Для этого вам не нужно регулярное выражение.

result = [w for w in vocab if len(w) >= 8]

, но если необходимо использовать регулярное выражение:

rx = re.compile('^.{8,}$')
#                  ^^^^ {8,} means 8 or more.
result = [w for w in vocab if rx.match(w)]

См. http://www.regular -expressions.info / repeat.html для получения подробной информации о синтаксисе {a,b}.

12 голосов
/ 31 августа 2010

\ w будет соответствовать букве и символам, {min, [max]} позволяет вам определить размер. Выражение типа

\w{9,}

даст все буквенно-цифровые комбинации из 9 и более символов

5 голосов
/ 31 августа 2010

.{9,} для «более восьми», .{8,} для «восьми или более»
или просто len(w) > 8

3 голосов
/ 31 августа 2010

^.{8,}$

Это будет соответствовать чему-то, что имеет по крайней мере 8 символов. Вы также можете поместить число после запятой, чтобы ограничить верхнюю границу или удалить первое число, чтобы не ограничивать нижнюю границу.

0 голосов
/ 31 августа 2010

, если вы хотите использовать регулярное выражение

result = [ w for w in vocab if re.search('^.{24}',w) ]

{x} говорит, что соответствует x символам. но, вероятно, лучше использовать len (w)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...