Python使用正则表达式在特定单词列表前提取3个单词,在特定单词列表后提取3个单词
我需要使用python来提取特定单词列表前的3个单词和后的3个单词 诺基亚Lumia 930智能手机,显示5 pollici,Fotocamera 20 MP,2GB RAM、Processore四核2.2GHz、内存32GB、Windows Phone 8.1、, 比安科[德国] 目前我正在使用这个正则表达式,但没有成功Python使用正则表达式在特定单词列表前提取3个单词,在特定单词列表后提取3个单词,python,regex,Python,Regex,我需要使用python来提取特定单词列表前的3个单词和后的3个单词 诺基亚Lumia 930智能手机,显示5 pollici,Fotocamera 20 MP,2GB RAM、Processore四核2.2GHz、内存32GB、Windows Phone 8.1、, 比安科[德国] 目前我正在使用这个正则表达式,但没有成功 ((?:[\S,]+\s+){0,3})ram\s+((?:[\S,]+\s*){0,3}) 我需要的单词列表是: 展示 荧光照相机 公羊 加工厂 记忆 您的正则表达式
((?:[\S,]+\s+){0,3})ram\s+((?:[\S,]+\s*){0,3})
我需要的单词列表是:
- 展示
- 荧光照相机
- 公羊
- 加工厂
- 记忆
\s+
至少需要1个空格,但在RAM
和之间,
没有空格。要么使用一个*
量词,要么删除它并使用它``
(?i)((?:\S+\s+){0,3})\bRAM\b\s*((?:\S+\s+){0,3})
看
我添加了\b
(单词边界)以确保我们匹配RAM
,而不是RAMBUS
注意re.I
修饰符(或者在模式的开头使用内联版本(?I)
)
其他模式也可以以类似的方式形成,只需用列表中的单词替换RAM
((?:[\S,]+\s+){0,3})ram,?\s+((?:[\S,]+\s*){0,3})
^^
只需添加一个,
。请参阅演示
你最后可以用这个
((?:[\S,]+\s+){0,3})(?:ram|Display|Fotocamera|RAM|Processore|Memoria),?\s+((?:[\S,]+\s*){0,3})
你说提取物是什么意思?如果你能提供一个输入/输出的例子,它真的能帮助我们。那么,对你有用吗?提供你期望的输出。是的,它很有效。。。为什么((?:\S+\S+{0,3})RAM\S+((?:\S+\S*){0,3})不起作用?我需要一个接一个地指定列表中的项目。我知道你不需要替换版本,我只保留了一个可以一次使用的版本。是的,谢谢你,这个正则表达式似乎工作得很好。。。非常感谢你。。。在选择最佳答案之前,我正在测试另一个建议的解决方案(带逗号的方案):)谢谢亲爱的!请注意,
,?
表示1或0个逗号,但如果还有其他标点符号呢?我认为单词边界是这里的关键,空格应该是可选的。如果要匹配ram
之后的任何非单词字符(可选),可以使用\W*
而不是vks建议的,?
。看见这看起来更一般。ram后面的逗号是什么意思?@usi您在输入字符串中有,
,以便匹配您给出的,?
。?
是指,
不存在的情况