2016-09-12 77 views
1

我試圖用正則表達式匹配長度的寬度和高度。用正則表達式匹配產品尺寸

我有以下的情況下,

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+)?

任何建議我做錯了什麼?

+0

'\\'轉義反斜槓並字面匹配字符'\'。你的第三種情況只有2個維度,而你的表達需要3個維度。 –

回答

1

您可以使用可選的火柴在你的正則表達式來涵蓋所有三種情況:

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

RegEx Demo

這將在3日給在第一次捕獲組lengthwidth在第二捕獲組和height

每個組使用該子表達式:

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

爲1個或多個數字任選跟一個逗號和1+位數小數部分。

此外,請注意,高度部分是可選匹配,因爲我們使用(?: x (\d+(?:,\d+)?))?來使該部分可選。

1

簡單:

^Produktabmessungen\K(.+) 

a demo on regex101.com(和介意不同的修飾符!)。
在這種情況下,您確實不需要\K,但需要多行標誌。你在用什麼語言?