Python中的正则表达式,2-3个数字,然后是2个字母

Python中的正则表达式,2-3个数字,然后是2个字母,python,regex,Python,Regex,我正在尝试在一系列衣服中自动检测胸罩的尺寸。虽然我只提取了胸罩项目,但我现在正在提取尺寸信息,我想我差不多做到了(多亏了stackoverflow社区)。然而,我在另一篇文章中找不到一个特殊的案例 我正在使用: regexp=re.compile(r'\d{2,3}?[a-fA-F]([^bce-zBCE-Z]|$) 所以 如果描述开头没有空白,则可能出现空白 两个或三个数字 是否有其他可能的空白 A和F之间的任何字母(小写或大写) 然后另一个字母表示两个特殊情况AA和FF或字符串的结尾 我的问

我正在尝试在一系列衣服中自动检测胸罩的尺寸。虽然我只提取了胸罩项目,但我现在正在提取尺寸信息,我想我差不多做到了(多亏了stackoverflow社区)。然而,我在另一篇文章中找不到一个特殊的案例

我正在使用:
regexp=re.compile(r'\d{2,3}?[a-fA-F]([^bce-zBCE-Z]|$)

所以
如果描述开头没有空白,则可能出现空白
两个或三个数字
是否有其他可能的空白
A和F之间的任何字母(小写或大写)
然后另一个字母表示两个特殊情况AA和FF或字符串的结尾

我的问题是,有没有办法让第二个字母与第一个字母(AA或FF)匹配,因为在我的例子中,我的代码输出了一些不存在的BA和CA大小

示例:
不工作:
“bh sexig top matchande h&m genomskinligt parti svart detaljer 42 basic plain”返回“42 ba”,而不是未找到
“彪马,运动bh,strl:34cd,svart/grå”,我猜客户的意思是c/d

工作罚款:
“维多利亚秘密,bh,strl:32c,gul/vit”返回“32c”
“粉红维多利亚秘密bh 75dd勃艮第”返回“75dd”

谢谢

您可以使用

 \d{2,3} ?([a-fA-F])\1?(?![a-fA-F])
解释

  • \d{2,3}?
    匹配空格、2-3位数字和可选空格
  • ([a-fA-F])\1?
    捕获组1中的a-fA-F,然后可选地返回到组1
  • (?![a-fA-F])
    消极前瞻,断言右边的不是a-fA-F