2

「行末の等号 ( =$)その直後の「改行文字」」を取得するための正規表現構文は何でしょうか?

次のような不適切な形式の (本当に壊れた) テキストがあります。

Tiens, encore du HTML, batard rouge, et un charact=C3=A8re accentu=C3=A9, P=
=C3=80F

(すべての行は=で終わります)だから、私がつかみたいのは文字通りです

"=
"

以下に貼り付けた関数で処理します。

しかし、行も結合したい、つまり改行を削除したいのですが、M-x regexp-builder最後の "=" 記号の後に続く改行を強調表示することができないので、空の文字列 "" に置き換えることができますしたがって、行に参加します..?

(setq entities
  '(("=C3=A9" "é")
    ("=C3=89" "É")
    ("=C3=A8" "è")
    ("=C3=88" "È")
    ("=C3=A7" "ç")
    ("=C3=87" "Ç")
    ("=C3=A0" "à")
    ("=C3=80" "À")
    ("=C3=B9" "ù")
    ("=C3=99" "Ù")
    ("=C3=AA" "ê")
    ("=C3=8A" "Ê")
    ("=C3=BB" "û")
    ("=C3=9B" "Û")
    ("=C3=AB" "ë")
    ("=C3=8B" "Ë")
    ("=C3=BC" "ü")
    ("=C3=9C" "Ü")
    ("=20" "")
    ("=3D\"" "=\"")
    ("=$" "")))

(defun px-decode-string (string entities)
  "decode a string against a list of entities / chars pairs."
  (setq i 0)
  (while (< i (length entities))
    (setq my-operand (format "%s" (car (car (nthcdr i entities)))))
    (setq my-char (format "%s" (car (cdr (car (nthcdr i entities))))))
    (setq string (replace-regexp-in-string my-operand my-char string 't))
    (setq i (1+ i))
    )
  (format "%s" string))

(alist は であり、テストのみを目的としたものではsetqありません)defvar

テスト:

(px-decode-string "Tiens, encore du HTML, batard rouge, et un charact=C3=A8re accentu=C3=A9, P=
=C3=80F!
" entities)
4

2 に答える 2