我需要使用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
我需要的单词列表是:
答案 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})