Emacsでインタラクティブに検索と正規表現による置換を練習するにはどうすればよいですか?


12

正規表現を使用した検索と置換は、これらのアクションを定期的に実行できるEmacsユーザーにとって明らかに強力なツールです。ただし、Emacs(および/またはプログラミング)の初心者として、正規表現を習得する必要があります。

組み込みのEmacsチュートリアルと同様に、Emacsでインタラクティブに正規表現を学習およびトレーニングできますか?そうでない場合、Emacsを利用して検索と置換のための正規表現の使用を練習する他の提案は何ですか?


1
このドキュメントは、完全なものです:wikemacs.org/wiki/Regexp
Ehvince

回答:


17

それに、Visual-regexpregexp-builder検討して、進行中の置換に関する視覚的なフィードバックを提供することもできます。

visual-regexpスナップショット


3
または、さらにanzu同じことを行います。
sanityinc 14年

16

あなたはM-x regexp-builder RETどちらがインタラクティブな正規表現マッチャーであるかを試すことができます、それは悪くありません


7
C-g期待どおりに終了しないときにパニックにならないでください。C-c C-q練習が終了したら、正規表現ビルダーを終了するデフォルトのキーバインドです。
nispio 14年

5

私が使用しregexp-builderますが、テストは対話的に正規表現とフィードバックを得るのを聞かせています。そしてもちろん、それを使い始めたらすぐに「この正規表現をどうやって使うのquery-replace-regexp?」と自問しました。

私が選んだ答えは、EmacsWiki ReBuilderページで定義されている次の関数です。

(defun reb-query-replace (to-string)
  "Replace current RE from point with `query-replace-regexp'."
  (interactive
   (progn (barf-if-buffer-read-only)
          (list (query-replace-read-to (reb-target-binding reb-regexp)
                                       "Query replace"  t))))
  (with-current-buffer reb-target-buffer
    (query-replace-regexp (reb-target-binding reb-regexp) to-string)))

だから私のワークフローは:

  1. M-x re-builder
  2. タイプタイプタイプ
  3. M-x reb-query-replace

3

正規表現を使用して、正規表現のどの部分(特に正規表現グループ)に一致するかを確認することを学習する場合、非常に役立ちます。そして、それをインタラクティブかつ段階的に行うこと。

@immerrの答えに沿って、Iciclesの検索には長い間同様の強調表示がありました。

ここに画像の説明を入力してください



1

emacs内ではなく、http://rubular.com/には基本的regexp-builderにチートシートがあります。サンプルをセットアップして、そのサンプルへのリンクを吐き出すことができます。チームで正規表現について議論するときにこれを使用します。


1
Rubyはemacs風味の正規表現を使用しますか?
nispio 14年

1

Dave Fの代替として、regexp-builder任意のテキストを作成して、パターンマッチングを練習することもできます。

このコマンドの最も便利な機能は、パターンが作成されるときにバッファー内の一致を強調表示して、適切なパターン一致を確認できるようにすることです。

(query-replace-regexp)C-M-%)を使用して正規表現を作成し、必要な置換を実行すると、練習に役立ちます。


これregexp-builderは、まだ提供していない正規表現を「練習」したい人にどのような利益をもたらしますか?問題query-replace-regexpは、正規表現全体を記述し、それに一致するものを見つけるためにコミットする必要があることです。結果が気に入らない場合は、最初からやり直す必要があります。 regexp-builderマッチをオンザフライで表示するので、何をしているのかわからない場合に機能するまで正規表現を微調整できます。
nispio 14年

1
それが欠点だと認めます。あなたは正規表現を使用して精通しているがあればquery-replace-regexp、あなたが特にEmacsでそれを使用するために使用されます
ジョナサン・リーチ・ピピンを

おそらく...しかし、それはOPが求めているものと一致しないようです。「正規表現に精通しているなら」、正規表現を学ぶ必要はまったくありません。
nispio

1
OPは、Emacs初心者としてインタラクティブにそれらをどのように/いつ使用するかを学ぶ方法を求めています。彼らはすでに他の種類の正規表現からの正規表現の知識を持っているかもしれません。
ジョナサンリーチペピン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.