gpt4 book ai didi

Python 正则表达式 : Proper way to extract separated numbers (AxBxC -> [A, B, C])

转载 作者:行者123 更新时间:2023-11-30 22:32:48 24 4
gpt4 key购买 nike

我现在尝试从字符串中提取大小,我猜这是一种非常常见的模式:AxBxC,其中 A、B、C 用 x 分隔(也可能是带有空格的 x),是大小(int 或 float) :

import re

s = 'zzz 3062 0.2 aaa 15.8x20.2x12.2875 mm'

我期望只获得三个数字:[15.8, 20.2, 12.2875]我现在唯一的工作方法是丑陋的:

r1 = re.findall('(\d+\.?\d*)\ *x\ *', s)
r2 = re.findall('\ *x\ *(\d+\.?\d*)', s)
r1.extend(r2)
print(set(r1))

{'15.8', '20.2', '12.2875'}

有没有办法使用单个强大的正则表达式来提取这些数字?谢谢。

最佳答案

看来您需要匹配 2 或 3 个 x 分隔的浮点值。您可以使用

r'(\d[\d.]*)x(\d[\d.]*)(?:x(\d[\d.]*))?'

请参阅regex demo

详细信息

  • (\d[\d.]*) - 第 1 组:一个数字,然后是 0+ 个数字或/和
  • x - 文字 x
  • (\d[\d.]*) - 第 2 组:一个数字,然后是 0+ 个数字或/和
  • (?:x(\d[\d.]*))? - 可选的 x(\d[\d.]*) 序列, x 后跟第 3 组捕获一个数字,然后捕获 0+ 个数字或/和

在Python中,使用

re.findall(r'(\d[\d.]*)x(\d[\d.]*)(?:x(\d[\d.]*))?', s)

关于Python 正则表达式 : Proper way to extract separated numbers (AxBxC -> [A, B, C]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45351163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com