正则表达式提取所有单词及其后的3个单词和之后的3个单词
这是我的正则表达式:
((?:[\S,]+\s+){0,3})((?:[\S,]+\s*){0,3})
这是文字:
Quadriband - UMTS - HSDPA - HSUPA - LTE - Wi-Fi Fotocamera da 8 Megapixel - Lettore MP3 Sistema Operativo iOS8 - GPS integrato
我只得到这些结果:
Quadriband - UMTS - HSDPA -
HSUPA - LTE - Wi-Fi Fotocamera
da 8 Megapixel - Lettore MP3
Sistema Operativo iOS8 - GPS integrato
但我想要所有组合,特别是- Wi-Fi Fotocamera - da 8 Megapixel
如何编辑我的正则表达式以捕获所有可能的3(也是0,1或2将会很好)单词之前和3(也是0,1或2将是好的)单词后面的空格..
答案 0 :(得分:2)
似乎你想要每6个连续的空白子字符串。所以你不需要正则表达式来完成这个任务,你可以在列表理解中使用itertools.islice
:
>>> from itertools import islice
>>>
>>> [' '.join(islice(li,i,i+6)) for i in range(len(li))]
['Quadriband - UMTS - HSDPA -', '- UMTS - HSDPA - HSUPA', 'UMTS - HSDPA - HSUPA -', '- HSDPA - HSUPA - LTE', 'HSDPA - HSUPA - LTE -', '- HSUPA - LTE - Wi-Fi', 'HSUPA - LTE - Wi-Fi Fotocamera', '- LTE - Wi-Fi Fotocamera da', 'LTE - Wi-Fi Fotocamera da 8', '- Wi-Fi Fotocamera da 8 Megapixel', 'Wi-Fi Fotocamera da 8 Megapixel -', 'Fotocamera da 8 Megapixel - Lettore', 'da 8 Megapixel - Lettore MP3', '8 Megapixel - Lettore MP3 Sistema', 'Megapixel - Lettore MP3 Sistema Operativo', '- Lettore MP3 Sistema Operativo iOS8', 'Lettore MP3 Sistema Operativo iOS8 -', 'MP3 Sistema Operativo iOS8 - GPS', 'Sistema Operativo iOS8 - GPS integrato', 'Operativo iOS8 - GPS integrato', 'iOS8 - GPS integrato', '- GPS integrato', 'GPS integrato', 'integrato']
此外,如果您的单词有特殊条件,则可以找到将特定正则表达式传递给re.findall
并将其用作s.split
的单词。