我正在学习正则表达式,当从下面的系统需求字符串中找到模式时遇到困难:
"OS: Windows® 7 Processor: Intel Core i3-9100 / AMD Ryzen 3 2300X Memory: 8 GB RAM Graphics: NVIDIA® GeForce® GTX 1050 Ti / AMD Radeon™ RX 560 (4GB VRAM) Storage: 60 GB available space"
我已经做了多种方法,但无法找到任何匹配。我想根据冒号(:)将结果分组到一个python字典中,如下所示:
{
'OS': 'Windows® 7',
'Processor': 'Intel Core i3-9100 / AMD Ryzen 3 2300X',
'Memory': '8 GB RAM Graphics: NVIDIA® GeForce® GTX 1050 Ti / AMD Radeon™ RX 560 (4GB VRAM)',
'Storage': '60 GB available space'
}
任何帮助都会很感激。这是我的工作:regex101。谢谢你。
您可以将re.findall
与"(w+):s+(.*?)(?=$|s*w+:s+)"
一起使用:一个单词,后面跟着冒号和空格,然后尽可能少地使用任何内容,直到字符串的末尾或另一个单词后面跟着冒号和空格。
最小的例子:
s = "OS: Windows® 7 Processor: Intel Core i3-9100 / AMD Ryzen 3 2300X Memory: 8 GB RAM Graphics: NVIDIA® GeForce® GTX 1050 Ti / AMD Radeon™ RX 560 (4GB VRAM) Storage: 60 GB available space"
import re
d = dict(re.findall(r"(w+):s+(.*?)(?=$|s*w+:s+)", s))
输出:
{'OS': 'Windows® 7',
'Processor': 'Intel Core i3-9100 / AMD Ryzen 3 2300X',
'Memory': '8 GB RAM',
'Graphics': 'NVIDIA® GeForce® GTX 1050 Ti / AMD Radeon™ RX 560 (4GB VRAM)',
'Storage': '60 GB available space'}