正则表达式 A '或' B

给机器喂食

我有以下几行:

  9 (1224) Starting item export: IPM.Appointment, Zomverbanden (wielen) monteren, 2,61 B, John \Calendar, E:\tmp\John Kn
  9 (1224) Starting item export: IPM.Appointment,  [JK], 7,97 KB, John Knappers\Calendar, E:
  9 (1224) Starting item export: IPM.Appointment, Niet op kantoor (Auto), 1,66 GB, John \Calendar, E:\tmp\John .
  9 (1224) Starting item export: IPM.Appointment, Bespip / Tobias , 9,13 KB, John \Calendar, E:\tmp\John K
  9 (1224) Starting item export: IPM.Appointment, Q-ware el / Mehan [JK], 8,01 MB, \Calendar, E:\tmp\J

如何找到这些字节和兆字节等的匹配模式?

我试过了

res = re.findall(r'(\d*,\d* KB)|(\d*,\d* MB) | (\d*,\d* B)| (\d*,\d* GB)', i)

但它返回 4 个元组的字典,但每行我只需要 1 个项目:

2,61 B
7,97 KB
1,66 GB
9,13 KB
8,01 MB
瓦伦丁

您可以重写它以使其更短:

\d+,\d* (?:KB|MB|B|GB)

现场演示

你可以让它更短:

\d+,\d* [KMG]?B

现场演示

这当然是假设数字和单位之间有一个空格。而不是您可以拥有的空间[ \t]+,从而可以是多个空格甚至制表符。

如果10 KB有效(没有小数),那么你可以这样做:

\d+(,\d+)? [KMG]?B

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章