Python Regex Extract宽度x深度x高度



我试图从列中提取项目的物理尺寸"Description">

创建一个新的列。尺寸通常以这种格式(120x80x100)出现在长描述的中间,如:

Lorem ipsum dolor sit amet, consectetur adipiscing elit 120x80x100 ed do eiusmod tempor...

但有时之间有空格:

120 x 80 x 100

或者没有高度:

120x80
120 x 80

帮忙吗?提前感谢

您可以使用正则表达式,d+s*xs*d+(?:s*xs*d+)?

解释:

  • d+:一个或多个数字
  • s*: 0个或多个空白字符
  • x: Literal,x
  • (?:s*xs*d+)?:可选非捕获组

如果您希望数字为一到三位数,则将d+替换为d{1,3},如正则表达式d{1,3}s*xs*d{1,3}(?:s*xs*d{1,3})?所示。

如果你的代码要求你使用一个组,按照下面的方法去做:

(d{1,3}s*xs*d{1,3}(?:s*xs*d{1,3})?)

我们可以尝试使用re.findall方法和覆盖所有可能维度格式的regex模式:

inp = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit 1. 20x80x100 ed do 120 x 80 x 100 eiusmod 120x80 tempor...'
dims = re.findall(r'd+(?:s*xs*d+){1,2}', inp)
print(dims)  # ['120x80x100', '120 x 80 x 100', '120x80']

应该这样做:

d+(s?xs?d+){1,2}

最新更新