web-dev-qa-db-ja.com

Emacs:クエリ置換、正規表現、検索結果の再利用

query-replaceのようなものを、検索結果を部分的に再利用する正規表現の検索と置換と組み合わせるにはどうすればよいですか?

私の場合、変換する方法

プログラマーは、サブルーチン「load_students」と「compute_student_grade」にバグがないことを「ある程度」確信しています。

プログラマーは、サブルーチン\ texttt {load_students}と\ texttt {compute_student_grade}にバグがないことを「ある程度」確信しています。

2つのquery-replaceを使用して、「はい」と「いいえ」をハンマーで叩くことができますが、大きなドキュメントの場合は遅いようです。また、検索に空白を含めることを考えました(1つは "と1つはですが、... that's not the way to use "load_students", rather ...などの場合は機能しません。

このための組み込みのものはありますか、それともElispコードを記述しますか?

2
Emanuel Berg

したがって、_query-replace-regexp_を使用できます。

_M-x query-replace-regexp RET
\"\([^[:space:]]+\)\" RET
\\texttt{\1} RET
_

クエリ文字列は次のように読み取ることができます。1つ以上の非スペース文字のシーケンスを一致グループ1に一致させます(括弧はグループ化用です)。これらはすべて引用符で囲まれています。

置換文字列の_\1_は、一致グループを挿入します。

textttの前の二重バックスラッシュは、バックスラッシュ文字を解釈からエスケープするためのものです。

代わりに、一致させたいのがアンダースコア付きのマルチワードシンボルのみである場合は、一致文字列を\(\w+_\w+\)のようなものに変更する必要があります。

5
Juancho