匹配正则表达式的所有单词的列表

时间:2011-01-04 13:33:55

标签: python regex

假设我有一些字符串:“Lorem ipsum dolor sit amet” 我需要一个长度超过3的所有单词的列表。我可以使用正则表达式吗?

e.g。

pattern = re.compile(r'some pattern')
result = pattern.search('Lorem ipsum dolor sit amet').groups()

结果包含'Lorem','ipsum','dolor'和'amet'。

编辑:

我的意思只能包含字母和数字。

4 个答案:

答案 0 :(得分:16)

>>> import re
>>> myre = re.compile(r"\w{4,}")
>>> myre.findall('Lorem, ipsum! dolor sit? amet...')
['Lorem', 'ipsum', 'dolor', 'amet']

请注意,在Python 3中,所有字符串都是Unicode,这也会找到使用非ASCII字母的单词:

>>> import re
>>> myre = re.compile(r"\w{4,}")
>>> myre.findall('Lorem, ipsum! dolör sit? amet...')
['Lorem', 'ipsum', 'dolör', 'amet']

在Python 2中,您必须使用

>>> myre = re.compile(r"\w{4,}", re.UNICODE)
>>> myre.findall(u'Lorem, ipsum! dolör sit? amet...')
[u'Lorem', u'ipsum', u'dol\xf6r', u'amet']

答案 1 :(得分:2)

这是Python中列表推导的典型用例,可以 用于过滤:

text = 'Lorem ipsum dolor sit amet'
result = [word for word in  pattern.findall(text) if len(word) > 3]

答案 2 :(得分:2)

pattern = re.compile("\w\w\w(\w+)")
result = pattern.search('Lorem ipsum dolor sit amet').groups()

答案 3 :(得分:0)

pattern = re.compile(r'(\S{4,})')
pattern.findall('Lorem ipsum dolor sit amet')
['Lorem', 'ipsum', 'dolor', 'amet']