各位大大好,我想要用常規表示式做類似下列的取代
是否允許*?
取代為
請問要允許嗎?*
(後面的問號是全形文字)
類似把ABC取代為DBF,這樣的結構,保留中間內容,只取代前後內容。
Microsoft Office可以找到這取代的教學,但是Libre Office的常規表示說明我看很久弄不出來。求助。
各位大大好,我想要用常規表示式做類似下列的取代
是否允許*?
取代為
請問要允許嗎?*
(後面的問號是全形文字)
類似把ABC取代為DBF,這樣的結構,保留中間內容,只取代前後內容。
Microsoft Office可以找到這取代的教學,但是Libre Office的常規表示說明我看很久弄不出來。求助。
關鍵在正規表示式中括號包起來的部份會被保留,取代時用 $1 $2 來表達。
Edit in 20191122: 注意在 LO 中的正規表示式,全形問號? (U+FF1F) 會被當成跟半形問號 ? 一樣,也就是代表 0 個或 1 個。所以如果要在正規表示式中搜尋問號(不管全形還是半形),要在前面加上反斜線 \?
謝謝。我要問的是,我想取代的可能為:
是否允許?
是否繼續?
是否安裝?
是否同意《隱私原則》?
這之類的,中間的字數也不一定,想請問有沒有代碼可以一次全部取代。謝謝。
我找到的唯一作法是把「是否(允許)?」改成「是否(.+)?」。要留意 LibreOffice 中的正規表示式用的是 greedy algorithm,也就是這種比對如果在一個段落中有兩個以上的?會抓出最大比對成功的字串,也就是第一個「是否」可能到一段的最後一個?中間都會被選中。
原來如此,謝謝d(`・∀・)b
剛剛試了,出來變成
請問要繼續?嗎?
我只好分兩段取代了,囧
我找到問題了。因為在 LO 的正規表示式中,全形問號被當成跟半形問號一樣。
所以你的搜尋字串要修正為
「是否(.+)\?」 (注意原來的全形問號前面要加一個反斜線)
取代為
「確定要$1嗎?」
哦哦,原來如此,感謝