次のような練習問題(一部)がある.これを日本語に翻訳したいと思っている.
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:
良く見るとこれは数字が異なるだけの問題であるので,regexp で,次の置換をすれば良いことがわかる.
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 が上手くいかないのかわからない.どなたか理由のわかる方教えて下さい.
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:
良く見るとこれは数字が異なるだけの問題であるので,regexp で,次の置換をすれば良いことがわかる.
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 が上手くいかないのかわからない.どなたか理由のわかる方教えて下さい.
Comments
Post a Comment