将产品尺寸与正则表达式匹配

时间:2016-09-12 14:02:53

标签: regex pattern-matching regular-language

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

我有以下情况

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 个答案:

答案 0 :(得分:2)

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

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

RegEx Demo

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

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

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

这是一个或多个数字可选后跟逗号和小数部分的1+位数。

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

答案 1 :(得分:1)

简单如下:

^Produktabmessungen\K(.+)

请参阅a demo on regex101.com(并注意不同的修饰符!) 在这种情况下你真的不需要\K但需要多行标志。你用的是什么语言?