Regex 用正则表达式匹配产品维度

Regex 用正则表达式匹配产品维度,regex,pattern-matching,regular-language,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

我试图用正则表达式匹配长度、宽度和高度

我有以下几种情况

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(.+)
请参见(注意不同的修饰语!)。

在这种情况下,您实际上不需要
\K
,但需要多行标志。你用什么语言

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

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

这将在第一个捕获组中给出
长度
,在第二个捕获组中给出
宽度
,在第三个捕获组中给出
高度

每个组都使用此子表达式:

(\d+(?:,\d+)?)
它是一个或多个数字(可选),后跟逗号,小数部分为1+位


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

\
将反斜杠转义并逐字匹配字符
\
。另外,第三种情况下只有2维,而表达式需要3维。