## Thursday, March 24, 2016

### パターンのある文の翻訳 (Emacs Lisp)

The $200$ is the $\\green{\\text{whole}}$. We are trying to find the $\\pink{\\text{part}}$ that makes up $11\\%$ of it:
The $25$ is the $\\green{\\text{whole}}$. We are trying to find the $\\pink{\\text{part}}$ that makes up $12\\%$ of it:

The $$$.*$$$ is the $$$.*$$$. We are trying to find the $$$.*$$$ that makes up $$$.*$$$ of it:
$\1$ は $\2$ です．私達はその $\4$ となるだけの $\3$ を探しています:

しかし，

The $200$ is the $\\green{\\text{whole}}$. We are trying to find the $\\pink{\\text{part}}$ that makes up $11\\%$ of it:

The $$$.*$$$ is the $$$.*$$$. We are trying to find the $$$.*$$$ that makes up $$$.*$$$ of it:

にするのも面倒であるので，これもコンピュータにやってもらおうと

(query-replace-regexp "\\$[^\\$]+\\$" "$\\\$$.*\\\$$$") と書いたのであるが，なぜかこの regexp では$\\green{\\text{whole}}$の部分がマッチしない． 仕方ないので，次のようなプログラムを書いた． (let ((finishp nil)) (while (null finishp) (progn (setq match-start (search-forward "$" nil t))
(setq match-end   (search-forward "$" nil t)) (setq finishp (or (null match-start) (null match-end))) (if (null finishp) (progn (kill-region match-start match-end) (insert "\$$.*\$$$"))))))

これは上手く働くのだが，しかしどうして上記の regexp が上手くいかないのかわからない．どなたか理由のわかる方教えて下さい．