正規表現でシンボルを一致させる方法は?


9

現在のメジャーモード設定に従って、シンボル、つまり関数名などに一致する正規表現を構築しようとしています(正しく覚えている場合は、構文テーブルと呼ばれます)。調査の結果、これらの有用な正規表現が見つかりました。

  • \_< シンボルの始まりに一致

  • \_> シンボルの終わりに一致

次に、記号構成文字を表す方法を見つける必要があると思います。我々は持っている\w単語構成文字のために、私はシンボルのための何かを見つけることができません。シンボルに一致する正規\s表現は、次のようになります(シンボル構成文字に一致すると想定)。

\_<\s+\_>

何か不足していますか?シンボルを一致させる方法は?


単語のマッチングは機能しません。些細な例はfoo-bar、Emacs Lispモードのシンボルのようなものですが、単語で-はありません(単語を構成する文字ではないため)。


3
私は通常使用します(re-search-forward "\\_<\\(?:\\sw\\|\\s_\\)+\\_>" nil t)。それは機能しますが、もっと短い方法があるのだろうかと思います。
abo-abo 2016年

2
abo-abo:醜いので、AFAIKはあなたがしなければならないことですが、与えられたシンボルはシンボル構成文字ワード構成文字の両方を含むことができます。あなたはそれを答えにするべきです。マーク、それは\sあなたの仮定とは完全に異なるので、あなたは実際に何が意味するのかを見るためにマニュアルをチェックしたいと思うでしょう。
phils 2016年

@phils、私はそれ\sがEmacsの正規表現でなんらかの意味があることさえ知らなかった、例えば私はそのシンボルを選んだだけだ。
Mark Karpov 2016年

@Mark:Elispのマニュアル、ノードRegexp Backslashを参照してください。
2016年

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.