2016-11-26 48 views
3

我需要捕获像所有字符串(\ W \ S),具有3的最小长度,用一个Python正则表达式的findall方法。这是:找到尽可能多的“字”(子字符串)尽可能,它是由至少3个连接组成的。的Python正则表达式,用于捕获所有字符串等( W S)+

例如,对于:

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

的findall应该返回:

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

什么是'A'在'A \ s'?这是一个大写字母吗? – Mohammad

+0

等一下,*你想匹配什么*?添加更多示例。 – Blacksilver

+0

你有没有先尝试你的正则表达式? https://regex101.com –

回答

6

用下面的办法与特定的正则表达式:

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

与已经尝试过

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})',除了外组,它会抓住每个完整的匹配给出结果'[(“示例”的不需要的最后部分,' E“),(”这个“” S“)]' – RomanPerekhrest

+0

的问题,当我试图回答这个问题我有。 –