python - 正则表达式 (Python) - 使用 Look-Behind 绕过量词?
问题描述
我有许多元素的列表(所有字符串,但不幸的是也有很多空格),这里有两个元素作为示例:
sample_string = '8000KE60803F6 ST FULL-DEPTH TEETH 1 EA 36,56 36,56 2,00 0,73 37,29' ,'8522-3770 CONTACT 2 EA 311,45 622,90 2,00 12,46 635,36'
my_list = list(sample_string)
我希望使用正则表达式提取第一个数字/字母序列(在上述情况下,即 8000KE60803F6 和 8522-3770)然后我希望提取下一个 alpha 序列(在上述情况下,即 'ST FULL- DEPTH TEETH' 和 'CONTACT') 最后我希望提取 EA 之后的数值(在上述情况下,即 36,56 和 311,45)
我试过以下
for item in my_list:
line=re.search(r'([A-Z0-9]*)(\s*)((?<=EA\s)[\d,]*)', item)
if line:
PN = line.group(1)
Name = line.group(2)
Price = line.group(3)
print(PN)
print(Name)
print(Price)
以上输出
EA
EA
但是,我正在寻找以下输出:
产品编号:8000KE60803F6 和 8522-3770
名称: ST FULL-DEPTH TEETH and CONTACT
价格:36,56 和 311,45
而在现实中,需要遍历一个大列表。
我也尝试过环顾四周,但是当量词与它们一起使用时会出现常见错误?
解决方案
您可以将此正则表达式与 3 个捕获的组一起使用:
(?P<PN>[A-Z\d-]+)\s+(?P<Name>[A-Z]+(?:[\s-]+[A-Z]+)*)\s+[^,]+?EA\s+(?P<Price>\d+(?:,\d+)*)
推荐阅读
- react-native - 在 stackNavigator 中以模态形式打开单个屏幕,以卡片形式打开其他屏幕
- css - 如何以角度绑定占位符输入的样式属性,例如占位符的文本缩进
- excel - 如何修复编译错误;VBA 中的“分配数量错误或属性分配无效”错误
- java - 连接失败但已重新建立。主机名或 IP 地址为“*.*.*.*”,服务名或端口号为 ***
- mysql - 使用 JOIN 和 GROUP BY 更新 MySQL 表
- node.js - 如何将对象数组推送到子文档
- android - 未解决的参考:DetailActivity
- sql - 无论日光如何变化,在 sql server 中设置时间始终相同
- python - FFmpeg / python - 从 shell 运行时命令有效,但从 python 运行时失败
- selenium - 是否有任何函数关键字可以返回页面上存在的H1标签的数量?