2016-11-26 2 views
3

Мне нужно записать все строки типа (\ w \ s) с минимальной длиной 3 с помощью регулярного выражения Python для метода findall. Это: найти как можно больше «слов» (подстрок), которые состоят из конкатенации не менее 3.Python regex для захвата всех строк, таких как ( w s) +

Например, для:

This is an e x a m p l e about T H I S question. 

FindAll должен вернуться:

["e x a m p l e ", "T H I S "] 

Уже попробовал с:

\S\S+(\w\s+){3,}\S+ 
+0

Что такое 'A' в' A \ s'? Это заглавная буква? – Mohammad

+0

Подождите, * what * Вы хотите совместить? Добавьте примеры. – Blacksilver

+0

Вы попробовали свое регулярное выражение? https://regex101.com –

ответ

6

использовать следующий подход с конкретным шаблоном регулярного выражения:

s = 'This is an e x a m p l e about T H I S question.' 
result = re.findall(r'\b((?:\w\s){3,})', s) 

print(result) 

Выход:

['e x a m p l e ', 'T H I S '] 
+1

превью для проблемы, которая появилась легко и не было. Не могли бы вы подробнее рассказать о части??: (Не потребляющей назад вещи или что-то еще). –

+1

@ Jean-FrançoisFabre, добро пожаловать. без не захватывающей группы '(([\ w] \ s) {3,})', кроме внешней группы, она захватит ненужную последнюю часть каждого полного соответствия, дающую результат '[('example', ' e '), (' THIS ',' S ')] ' – RomanPerekhrest

+0

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

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