簡體   English   中英

Emacs交互式正則表達式替換

[英]Emacs interactive regex replacement

假設你有一些文字里面有這樣的文字:

"foo" ... "bar" ... "file" ... "emacs"

而你想要做的就是替換“with”。我知道只需要進行以下替換即可:

" -> ''

但是假設您想以交互方式和正則表達式進行,對於更復雜的情況,如何才能完成?

我更好地解釋自己:我希望我可以通過這種方式獲得一個命令或一系列命令:

  • 寫一個像"\\\\(.*?\\\\)"這樣的正則表達式並以交互方式查看結果(即當您編輯正則表達式時,當前可見的匹配會突出顯示,並且在您進行更改時始終更新突出顯示)。
  • 對regexp感到滿意后,請指定替換項,例如' '\\1' '
  • 交互式替換所有比賽

終於我發現了!!!!! 以下是要遵循的步驟:

  • Mx isearch-forward-regexp

  • 以交互方式插入正則表達式。 如果你犯了一個錯誤,你可以使用DEL或我並導航你的正則表達式來糾正它。

  • 然后在找到你想要的東西之后立即按M-%並更換你喜歡的並開始更換。

因此,您可以以完全交互式和增量的方式搜索和替換正則表達式。

  • 運行Mx isearch-forward-regexpCMs

  • 當您開始鍵入正則表達式時,第一次出現將立即突出顯示。 嘗試使用光標返回正則表達式將取消搜索,因此如果您犯了錯誤,您應該使用Me來允許編輯,進行更改,然后按Enter繼續搜索。

  • 如果對正則表達式感到滿意,請按M-% ,鍵入替換字符串(或使用向上鍵訪問以前使用的替換字符串),然后按RET開始交互式替換。

  • 對於每次出現,按y鍵替換一次,按n跳過, ! 替換所有, RET退出,或? 看到更多的選擇。

  • 要重復上一次正則表達式搜索,請輸入CMs然后輸入Cs

完整的詳細信息在手冊頁中

命令query-replace-regexp滿足您的要求? 在Emacs的大多數安裝中,它將被綁定到CM-%

由於這不滿足OP的要求,建議再看一下re-builder Emacs手冊或幫助系統中沒有記錄此功能,它只是在Emacs Lisp手冊中記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM