我有一個 MySQL 表“products”,其中包含單詞“pack”或“pack of”的描述欄位:
Headphones 3 pack, Built-in Microphone - (Latest Model)
Wireless headphones -Bluetooth Headphones 3.5 -3 Pack
Flash Drive-128G-B35 -(12pack)
Wireless headphones -Bluetooth Headphones -(11- pack) Latest Model
Wireless headphones -Bluetooth Headphones -(Pack of 11)
Wireless headphones -Bluetooth Headphones -(packs of 11)
我需要一個正則運算式來提取單詞“pack”之前和單詞“pack of”之后的數字,
輸出應該是:
3
3
12
11
11
11
為正則運算式嘗試了很多組合
SELECT @str:="Headphones 3 pack, Built-in Microphone - (Latest Model)" AS str,
regexp_replace(@str, '[^0-9]*(pack)', '') 0 AS packof;
這個適用于單詞“pack of”前面的數字,但仍不確定它是否涵蓋所有場景:
SELECT @str:="Wireless headphones -Bluetooth Headphones -(Pack of 11)" AS str,
regexp_replace(@str, '.*pack[^0-9]*', '') 0 AS packof;
uj5u.com熱心網友回復:
您可以使用
regexp_replace(@str, '(?i)^.*?(?:packs?(?:\\W of)?\\W*(\\d )|(\\d )\\W*pack).*', '$1$2')
請參閱正則運算式演示。詳情:
(?i)- 不區分大小寫匹配^- 字串的開始.*?- 除換行符之外的任何零個或多個字符,盡可能少(?:packs?(?:\W of)?\W*(\d )|(\d )\W*pack)- 任何一個:packs?(?:\W of)?\W*(\d )-pack,一個可選的s,一個或多個非單詞字符的可選序列,然后是of單詞,零個或多個非單詞字符,以及捕獲到組 1 中的一個或多個數字|- 或者(\d )\W*pack- 一個或多個數字被捕獲到第 2 組,零個或多個非單詞字符,然后是一個pack字串
.*- 除換行符之外的任何零個或多個字符,盡可能多。
的$1$2替換替換匹配組1 2組值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/404829.html
標籤:
上一篇:MySQL查詢-通過回傳具有最大id的記錄從具有組的兩個表中選擇陳述句
下一篇:回圈遍歷SQL列中的陣列
