
私はemacsで次のパターンを持ついくつかの文字列を検索しています。
^*DEFUN*event*$
だからgrepを使用しました。
grep -nR "^*DEFUN*event*$" *
しかし、一致するものがなく、代わりに多くの項目があります。たとえば、次のようになります。
DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,
何が問題なの?
答え1
grep
正規表現が必要なワイルドカード(「ワイルドカード」とも呼ばれる)を使用しています。ただし、正規表現では、*
「すべての文字シーケンス」ではなく、「0個以上の前の文字」を意味します。式の最初の文字(または「行の先頭」記号の直後^
)として使用される場合は、次のことを示します。言葉アスタリスク。
したがって、式は^*DEFUN*event*$
次の行を検索します。
- 一つで始まる
*
- 今続ける
DEFU
- その後に0個以上が続きます。
N
- その後の単語
even
t
行が終わるまでゼロ以上続けます。
探している正規表現は次のとおりです。
^.*DEFUN.*event.*$
または簡単に言うと(コメントでStéphane Chazelasが述べたように)
DEFUN.*event