Regex在匹配recursi之前和之后返回X个单词

2024-09-29 23:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

这种方法非常有效get 3 words before and after

但如果匹配在该范围内,则忽略rest get 6 words before and after DEMO只返回一个匹配,而不是2

预期产量

full match 1: 5 pollici, Fotocamera 20 MP, 2GB RAM RAM Processore Quad-Core 2,2GHz, Memoria 32GB, 

full match 2: pollici, Fotocamera 20 MP, 2GB RAM RAM Processore Quad-Core 2,2GHz, Memoria 32GB, Windows

它只是给比赛1


Tags: andcoregetmatchmpfullramwords
1条回答
网友
1楼 · 发布于 2024-09-29 23:18:48

您可以使用re.finditer使用这种方法:

>>> s = 'Nokia Lumia 930 Smartphone, Display 5 pollici, Fotocamera 20 MP, 2GB RAM RAM Processore Quad-Core 2,2GHz, Memoria 32GB, Windows Phone 8.1, Bianco [Germania]'
>>> regex = r"\s*\bRAM\b(?=\s*((?:\S+\s+){0,5}\S+))"
>>> for m in re.finditer(regex, s):
...     print ( re.findall(r'((?:\S+\s+){0,5}\S+)$', s[1:m.start()])[0], m.group(1) )
...

('5 pollici, Fotocamera 20 MP, 2GB', 'RAM Processore Quad-Core 2,2GHz, Memoria 32GB,')
('pollici, Fotocamera 20 MP, 2GB RAM', 'Processore Quad-Core 2,2GHz, Memoria 32GB, Windows')

如果只需要完全匹配,请使用:

>>> for m in re.finditer(regex, s):
...     print ( re.findall(r'((?:\S+\s+){0,5}\S+)$', s[1:m.start()])[0] + m.group(1) )
...

5 pollici, Fotocamera 20 MP, 2GBRAM Processore Quad-Core 2,2GHz, Memoria 32GB,
pollici, Fotocamera 20 MP, 2GB RAMProcessore Quad-Core 2,2GHz, Memoria 32GB, Windows

相关问题 更多 >

    热门问题