開始發問
0

如何用常規表示式取代

提問於 2019-11-19 04:37:52 +0100

Wetty 大頭貼

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

是否允許
取代為
請問要允許嗎?
(後面的問號是全形文字)

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

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

編輯 重新標籤 舉報濫用 關閉 合併 刪除
0

已回答 2019-11-19 06:52:04 +0100

Franklin Weng 大頭貼

updated 2019-11-22 13:46:26 +0100

影像描述

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

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

編輯 舉報濫用 刪除 連結 更多

評論

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

是否允許?
是否繼續?
是否安裝?
是否同意《隱私原則》?

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

Wetty 大頭貼Wetty ( 2019-11-19 09:32:13 +0100 )編輯

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

Franklin Weng 大頭貼Franklin Weng ( 2019-11-19 14:42:57 +0100 )編輯

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

剛剛試了,出來變成
請問要繼續?嗎?

我只好分兩段取代了,囧

Wetty 大頭貼Wetty ( 2019-11-22 03:51:51 +0100 )編輯

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

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

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

取代為

「確定要$1嗎?」

Franklin Weng 大頭貼Franklin Weng ( 2019-11-22 13:43:20 +0100 )編輯

哦哦,原來如此,感謝

Wetty 大頭貼Wetty ( 2019-11-22 14:33:01 +0100 )編輯
登入或註冊回答問題

提問工具

1 位粉絲

統計

已提問: 2019-11-19 04:37:52 +0100

已讀: 18 次

最後更新時間: Nov 22