正则表达式在Python之后提取所有单词及其后的3个单词和3个单词之前

时间:2015-08-02 16:22:34

标签: python regex

正则表达式提取所有单词及其后的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将是好的)单词后面的空格..

https://regex101.com/r/mP9lT9/1

1 个答案:

答案 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的单词。