【问题标题】:Match product dimensions with regular expression用正则表达式匹配产品尺寸
【发布时间】:2016-09-12 22:06:23
【问题描述】:

我正在尝试用正则表达式匹配长度宽度和高度。

我有以下情况

Artikelgewicht3,7 Kg
Produktabmessungen60,4 x 46,5 x 42 cm

or

Artikelgewicht3,7 Kg
Produktabmessungen60 x 46 x 42

or

Artikelgewicht3,7 Kg
Produktabmessungen60 x 46

第二种情况可以匹配(\d+) x (\d+) x (\d+),效果很好。

我进一步尝试将第一种和第三种情况与(\d+)(\\,\d+)? x (\d+)(\\,\d+)? x (\d+)(\\,\d+)? 匹配。

任何建议我做错了什么?

【问题讨论】:

  • \\ 转义反斜杠并匹配字符 \ 字面意思。此外,您的第三种情况只有 2 个维度,而您的表达式需要 3 个。

标签: regex pattern-matching regular-language


【解决方案1】:

您可以在正则表达式中使用可选匹配项来涵盖所有 3 种情况:

(\d+(?:,\d+)?) x (\d+(?:,\d+)?)(?: x (\d+(?:,\d+)?))?

RegEx Demo

这将在第一个捕获组中提供length,在第二个捕获组中提供width,在第三个捕获组中提供height

每个组都在使用这个子表达式:

(\d+(?:,\d+)?)

1 位或多位数字可选后跟逗号和 1+ 位数字表示小数部分。

另外,请注意高度部分是可选匹配,因为我们使用(?: x (\d+(?:,\d+)?))? 使该部分成为可选。

【讨论】:

    【解决方案2】:

    就这么简单:

    ^Produktabmessungen\K(.+)
    

    a demo on regex101.com(注意不同的修饰符!)。
    在这种情况下,您实际上并不需要 \K,但需要多行标志。您使用什么语言?

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2011-05-01
      相关资源
      最近更新 更多