3

誰かがこの Emacs 正規表現の理由を説明できますか?

find_class \(\w+|([^)]+)\) \(\w+|([^)]+)\)

これらの行のいずれにも一致しませんか?

let _, scn, _ = find_class (obj :: cs) c in scn

aux (find_class (obj :: cs) scn) (cn :: desc)

let _, scn, ms = find_class c cs in

かなり単純に思えます: 引数が単一の単語または括弧で囲まれた任意の文字列として表示される関数の呼び出しを探しています。同等の式 ( find_class (\w+|\([^)]+\)) (\w+|\([^)]+\))) を Ruby にプラグインすると、希望どおりに動作しますが、ここでは動作しません。何か不足していますか?

Emacs の正規表現は実際に使用するには非常に扱いにくいと感じており、エディターの選択を再考しています。これを改善する合理的な方法 (つまり、より簡潔な構文、より多くの文字クラス) がある場合、それを聞きたくてたまらないのですが、まだ何も見つけられていません。

4

2 に答える 2

3

Ruby\|と同じ効果を得るには、emacs正規表現が必要だと思います。|

于 2012-07-11T01:51:57.610 に答える
3

Re: 面倒です。Emacs の正規表現のドキュメントを参照すると役立ちます。

http://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-of-Regexps.html

セクション 3、「正規表現のバックスラッシュ」には、すでに nhahtdh によって指摘されている質問に対する回答が含まれています。Emacs の正規表現構文は POSIX 標準よりも古いことを忘れないでください。

于 2012-07-11T02:07:04.747 に答える