2016-06-21 4 views
0

=文字の正規表現検索を行いたいと思います。いずれの辺にもスペースが含まれていてもいなくてもかまいません。行の先頭または末尾にある可能性があります。私は、カップルを試してみた:それは==と一致するためEmacsでは、=、==、<=、!=、〜=などの正規表現は検索できません。

  • =は、>=動作しないなど、それはすぐに=文字の前と後の2つの文字をキャプチャするため
  • [^<>=]=[^<>=]が動作しない、これ私は\_<\_>が役に立つかもしれないと思ったが、私は、これらはVimの中

のためのものであるかを把握することができない、ある望ましくない

  • です\zs\zeは、一致の開始と終了を示しているので、周囲の文字と照合することができます。しかし、Emacsはこれらを持っていません。

    これはEmacsで可能ですか?

  • +0

    Emacsでは何でもできます。 これはあなたのためには機能しませんか: '[^ <> =!〜]?=?[^ =]'。あなたはどのコマンドを使って検索していますか? – elethan

    +0

    @elethanそれは、私が望むよりも*さらに*文字をキャプチャします。私は私が言ったように「=」だけをキャプチャしようとしています。 – rityzmon

    +0

    ああ私はそれを前に読んだけど、今あなたが意味することを理解している。それは、あなたが否定的な先読みやlookbehindを必要とするように思えます、そして、私はそれらがlisp regexpsでサポートされていないと思います。少なくともそれは私が覚えているものですが、私はデスクトップに戻ったときにそれを調べます。 – elethan

    答えて

    2

    あなたの質問は未定です。 =の直前と直後に禁止する文字は何ですか?スペース文字を許可します(他の空白についてはどうでしょうか?)。しかし、の空白文字(または空白)のみを許可しますか?

    例:a=bは一致しますか?もしそうなら、おそらく文字は許されないでしょうか?

    =の直前と直後に許可する文字と許可しない文字を明確に指定したら、正規表現を書くことができます。しかし、一致するコンテキスト内の=だけを「キャプチャ」したいので、=の正規表現グループを使用し、すべてのものをマッチングした後に一致するものだけを取得する必要があります。

    たとえば、[ ]*=[ ]*は、おそらくスペース文字で囲まれた=と一致します。しかし、そのコンテキストで=だけをキャプチャする場合は、[ ]*\\(=\\)[ ]*を使用し、次に(match-string 1)を使用して=を取得する必要があります。

    バッファ内または文字列内のテキストを一致させるかどうかは指定しないでください。

    あなたはこれをインタラクティブに行うのか、Lispプログラムから行うのかは言いません。

    必要なコードは、これらのものによって異なります。対話的に、例えば検索のために、バックスラッシュを二重にする必要はありません。バッファの代わりに文字列の場合は、文字列をmatch-stringの2番目の引数として渡す必要があります。

    一般的に、あなたの質問は明確ではなく、答えにはこれらのことを指定する必要があります。特に一致させるコンテキスト(一致する前後の文字は=の前後)と一致するコンテキストの部分(=または=に加えて、前後の文字の一部)を取得したいとします。

    関連する問題