如何用常規表示式取代

各位大大好,我想要用常規表示式做類似下列的取代

是否允許*?

取代為

請問要允許
嗎?
*

(後面的問號是全形文字)

類似把ABC取代為DBF,這樣的結構,保留中間內容,只取代前後內容。

Microsoft Office可以找到這取代的教學,但是Libre Office的常規表示說明我看很久弄不出來。求助。

關鍵在正規表示式中括號包起來的部份會被保留,取代時用 $1 $2 來表達。

Edit in 20191122: 注意在 LO 中的正規表示式,全形問號? (U+FF1F) 會被當成跟半形問號 ? 一樣,也就是代表 0 個或 1 個。所以如果要在正規表示式中搜尋問號(不管全形還是半形),要在前面加上反斜線 \?

謝謝。我要問的是,我想取代的可能為:

是否允許?

是否繼續?

是否安裝?

是否同意《隱私原則》?

這之類的,中間的字數也不一定,想請問有沒有代碼可以一次全部取代。謝謝。

我找到的唯一作法是把「是否(允許)?」改成「是否(.+)?」。要留意 LibreOffice 中的正規表示式用的是 greedy algorithm,也就是這種比對如果在一個段落中有兩個以上的?會抓出最大比對成功的字串,也就是第一個「是否」可能到一段的最後一個?中間都會被選中。

原來如此,謝謝d(`・∀・)b

剛剛試了,出來變成

請問要繼續?嗎?

我只好分兩段取代了,囧

我找到問題了。因為在 LO 的正規表示式中,全形問號被當成跟半形問號一樣。

所以你的搜尋字串要修正為

「是否(.+)\?」 (注意原來的全形問號前面要加一個反斜線)

取代為

「確定要$1嗎?」

哦哦,原來如此,感謝