Ann*_*lee 4 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
Run Code Online (Sandbox Code Playgroud)
第二种情况可以与 匹配(\d+) x (\d+) x (\d+),效果很好。
我进一步尝试将第一个和第三个案例与(\d+)(\\,\d+)? x (\d+)(\\,\d+)? x (\d+)(\\,\d+)?.
任何建议我做错了什么?
您可以在正则表达式中使用可选匹配来涵盖所有 3 种情况:
(\d+(?:,\d+)?) x (\d+(?:,\d+)?)(?: x (\d+(?:,\d+)?))?
Run Code Online (Sandbox Code Playgroud)
这将length在第一个捕获组、width第二个捕获组和height第三个捕获组中给出。
每个组都使用这个子表达式:
(\d+(?:,\d+)?)
Run Code Online (Sandbox Code Playgroud)
它是 1 个或多个数字,可选地后跟一个逗号和 1 个以上的小数部分。
另外,请注意高度部分是一个可选匹配,因为我们正在使用(?: x (\d+(?:,\d+)?))?该部分使该部分成为可选匹配。