はじめに
最近JavaScriptで文書の置換ソフトを作ろうとしているんですが、VSCodeでまず正規表現を試そうとしてうまくいかなかったので、その対処法を備忘録的に紹介します。
JavaScriptにて
直感的な方から先に紹介します。例えば、以下のようなLaTeXの数式が混在しているMarkdownがあるとします。
ああああああ$ABC$テストです。 $$ x = 2y $$$a$意味もない数式$x$を使って$$ y = ax$$と表せる
これを、JavaScriptで行の数式("$$
~~$$
")だけ置換しようとすると以下のようなコードが書けます。
`ああああああ$ABC$テストです。 $$ x = 2y $$$a$意味もない数式$x$を使って$$ y = ax$$と表せる`.replace(/\$\$([\s\S]+?)\$\$/g, "{$1}") // -> // "ああああああ$ABC$テストです。 // { // x = 2y // }$a$意味もない数式$x$を使って{ // y = ax}と表せる"
普通の正規表現で置換することができました。
VSCodeにて
正規表現\$\$([\s\S]+?)\$\$
をそのまま使って検索をすると、以下のように間違った部分がハイライトされます。
うーん、これは良くないですね。
そこで、正規表現に改行を明示的に含めることにします。\$\$([\s\S\n]+?)\$\$
とします。
すると正常にハイライトされました。この状態であれば思い通りに置換することができます。
最後に
VSCodeのドキュメントも読んでいないのでもしかしたらこれが仕様かもしれません。