我想寫一個詞組來捕獲字串中的任何測量單位,考慮到單位可以在數字之前或之后。
我目前想到的是兩個重碼。
還有 我怎樣才能把這兩個詞組連接起來,以便與這兩個詞組相匹配: uj5u.com熱心網友回復: 用一個不區分大小寫的模式,匹配一個可選的 可選的點和逗號可以在一個字符類中 詞的邊界 uj5u.com熱心網友回復: 用你所顯示的樣本,請嘗試以下的重組函式。
解釋:為上述內容添加詳細解釋。
標籤:/d*.
/d*.?,?d s?(kg|g|l)/gi,與ABC 200g
EFG 5,4公斤
HIL 2x20l
(kg|g|l)s?d ,??d*,與之匹配的是:ABC g200
EFG kg 5,4
HIL l 20x2
ABC g200
EFG 5,4 Kg
k和g或l和一個交替的|來匹配模式的另一面。[.,]?,否則.?,?也可以像.,那樣同時匹配。
可以防止單元后的部分匹配。d*[. ,]? d s*(?:k? g|l)b|b( ?:k? g|l)s*d*[.,]? d
(? :(? :(?:d )g|(?:gd )) |(? :(?:ls*d )|(?:d s*l))|(? :(?:d ,d s*Kg)|(? :kgs*d ,d ))
(? ##Starting 1st capturing group from here.
(?: ##Starting 2nd capturing group from here.(?
(?:d )g|(?:gd ) ##匹配數字后的g或g后的數字(這兩個條件在非捕獲組中)。)
) ##關閉這里的第二個捕獲組.。
| ##在此設定OR條件.。
(?: ##Starting 3rd capturing group here. <?
(?:ls*d )|(?:d s*l) ##matching eiter l followed by 0 or more spaces followed by digits OR digits followed by 0 or more spaces followed by l.)
) ##關閉這里的第3個捕獲組。
| ##在此輸入OR條件。 ##在此輸入OR條件。
(?: ##Starting 4th capturing group here. <?
(?:d ,d s*Kg)|(?:kgs*d ,d ) ##在這里檢查要么數字后面是逗號數字Kg,要么kg空間數字逗號數字。)
) ##在這里關閉第四個捕獲組。
) ##在此關閉第1個捕獲組。)
