使用正则表达式匹配产品尺寸

Match product dimensions with regular expression

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

我有以下情况

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+)?匹配。

对我做错了什么有什么建议吗?

简单如:

^Produktabmessungen\K(.+)

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

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

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

RegEx Demo

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

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

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

其中 1 位或多位 可选 后跟一个逗号和 1+ 位小数部分。

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