Python提取前3个单词和3个单词后带有正则表达式的特定单词列表

时间:2015-09-29 15:46:36

标签: python regex

我需要使用python来提取3个单词之前和3个单词之后的特定单词列表

  

诺基亚Lumia 930智能手机,显示器5 pollici,Fotocamera 20 MP,2GB   RAM,处理器四核2.2GHz,Memoria 32GB,Windows Phone 8.1,   比安科[德国]

目前我正在使用此正则表达式

((?:[\S,]+\s+){0,3})ram\s+((?:[\S,]+\s*){0,3})

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

我需要的单词列表是:

  • 显示
  • Fotocamera
  • RAM
  • Processore
  • MEMORIA

2 个答案:

答案 0 :(得分:1)

你的正则表达式不起作用,因为for ($i = 0; $i < $user->organizationUsers->count(); $i++) { $user->organizationUsers[$i]->notifications = $user->organizationUsers[$i]->notifications->where('resolved', false)->get(); } 至少需要1个空格,但notifications: { 4: { _id: "560ab1639a3709120400432e" created_at: "2015-09-29 15:42:27" resolved: false type: "New User Request" updated_at: "2015-09-29 15:42:27" } } \s+之间没有空格。要么使用RAM量词,要么删除它并使用``

,

请参阅demo

我添加了*(字边界)以确保我们匹配(?i)((?:\S+\s+){0,3})\bRAM\b\s*((?:\S+\s+){0,3}) ,而不是\b

注意RAM修饰符(或在模式的开头使用内联版本RAMBUS)。

其他模式可以用类似的方式形成,只需用列表中的单词替换re.I即可。

答案 1 :(得分:1)

((?:[\S,]+\s+){0,3})ram,?\s+((?:[\S,]+\s*){0,3})

                       ^^

只需添加,即可。请参阅演示。

https://regex101.com/r/yN6iI0/4

你最后可以使用它,

((?:[\S,]+\s+){0,3})(?:ram|Display|Fotocamera|RAM|Processore|Memoria),?\s+((?:[\S,]+\s*){0,3})