正規表現で文字列を検索する方法については、emacsLISPのドキュメントのいたるところを検索しています。私が見つけたのは、バッファでこれを行う方法だけです。
足りないものはありますか?文字列を一時バッファに吐き出し、そこで検索する必要がありますか?これは、私が慣れ親しんでいるelispのコーディングスタイルにすぎませんか?この問題に対する標準的な解決策はありますか?すでに存在する変数を直接検索できるはずなのに、バッファーの操作は扱いにくいようです。
Emacs wikiの文字列コンテンツとバッファコンテンツの説明です。 文字列を変数として保存するだけです。
トリッキーなこと 文字列について は、通常、文字列自体を変更しないことです(文字列は配列であるため、文字列に対して配列関数を実行する場合を除きますが、これは通常回避する必要があります)が、変更された文字列。
とにかく、これはelispで文字列を使用する例です。
これにより、文字列の末尾から空白が削除されます。
(setq test-str "abcdefg ")
(when (string-match "[ \t]*$" test-str)
(message (concat "[" (replace-match "" nil nil test-str) "]")))
あなたが探している関数はstring-match
。マッチングを繰り返し行う必要がある場合は、返されるインデックスを次の呼び出しのオプションの「開始」パラメータとして使用します。ドキュメントはELispマニュアルの「正規表現検索」の章にあります。
文字列内のすべての正規表現の一致を置き換えるには、replace-regexp-in-string
を確認してください。
文字列の先頭を検索するには
(defun string-starts-with-p (string prefix)
"Return t if STRING starts with PREFIX."
(and
(string-match (rx-to-string `(: bos ,prefix) t)
string)
t))
文字列の末尾を検索するには
(defun string-ends-with-p (string suffix)
"Return t if STRING ends with SUFFIX."
(and (string-match (rx-to-string `(: ,suffix eos) t)
string)
t))