假设我有一些字符串:“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'。
编辑:
我的意思只能包含字母和数字。
答案 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']