Python Regex与鞋码匹配

2024-09-29 17:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个小脚本,它将匹配鞋子标识符(SKU)中的鞋码。在

我想处理一些案子。给出以下列表:

sizes = ['315122-603 10  A', '315122-608_12.0', '317982-019', '364781-019_5.5Y', 'V24088-001_10', '609048-035  8.5', '7-20Spm8231B5 10', 'G17295-001_9.5']

我希望能得到每一个喜欢的尺寸(10,12,5.5,等等…)。在

我对正则表达式的了解非常有限,我一直在到处寻找一些片段,并得出以下结论

^{pr2}$

但正如你所见,它不起作用。我只想匹配小数点前和小数点后的数字,但只能匹配数字。在


Tags: 脚本列表尺寸数字标识符sizes小数点案子
2条回答

你要找的似乎是一个数字(数字、小数点和更多的数字)的第一次出现,它跟在空格或下划线后面。在

所以

r'[ _](\d+(?:\.\d+)?)'

几个问题:

  • .在正则表达式中有特殊的含义。如果你真的想匹配一个点,你需要逃离它。在
  • 你可能希望点是可选的。在
  • 使用\D\b或{}等技术检查匹配前后是否不再有数字。在
  • 通常应该使用原始字符串来编写正则表达式模式,这样反斜杠序列就不会被解释为控制字符。在
  • re.findall找到多个匹配项。如果您知道只有一个匹配项,请使用re.search。在

试试这个:

pattern = r'\D(\d{1,2}(?:\.\d+)?)(?!\d)'

请注意,有些字符串包含下划线或没有十进制分隔符。您还没有真正描述在这些情况下应该发生什么,并且此模式不能处理您示例中的所有情况,但它有望为您提供一个良好的开端。在

您可能还需要考虑为每个输入类型编写不同的正则表达式,而不是尝试编写一个正则表达式来处理所有可能的输入。在

相关问题 更多 >

    热门问题