我有一個長文本,其中包含如下資料:
23cm,
23m,
60 cm,
60 m,
所以有時數字和單位之間有一個空格。有時一個也沒有。如何在每種情況下添加下劃線,結果將是:
23_cm,
23_m,
60_cm,
60_m
其中一部分的搜索模式可能是(\d) (?:cm|m),但我可以弄清楚其余部分。
uj5u.com熱心網友回復:
我們可以使用捕獲組。以下示例使用 \2 和 \3 作為捕獲組。有些語言會使用 $2 和 $3。
請參閱https://regex101.com/r/KxYyrb/1
輸入字串
23cm, 23m, 60 cm, 60 m,
圖案
((\d )\s?(m|cm))
替換使用
\2_\3
輸出
23_cm, 23_m, 60_cm, 60_m,
uj5u.com熱心網友回復:
您可以使用
(\d)\s?(c?m)\b
替換模式是$1_$2。
請參閱正則運算式演示。
詳情:
(\d)- 捕獲組 1:一個數字\s?- 一個可選的空白字符(c?m)- 捕獲組 2:一個可選c和一個m\b- 一個單詞邊界(否則,正則運算式將匹配minmen,例如)。
uj5u.com熱心網友回復:
我建議更換比賽
(?<=\d) ?(?=c?m,)
帶下劃線。如果存在空格,則匹配;否則最后一個數字和“cm”或“m”之間的(零寬度)位置匹配。
演示
正則運算式可以分解如下。(我已將空間封閉在一個字符類中,以使其對讀者可見。)
(?<= # begin a positive lookbehind
\d # match a digit
) # end positive lookbehind
[ ]? # optionally match a space
(?= # begin a positive lookahead
c?m, # optionally match a 'c' followed by 'm,'
) # end positive lookahead
如果逗號并不總是存在,請替換(?=c?m,)為(?=c?m\b),\b作為單詞邊界。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465827.html
