('
私はこれをに置き換えようとして(\'
い')
ましたが、 RegExp\')
に慣れていないため、試行回数はほとんどありませんでした。
私が試したmyText.replace(/\(\'/g, "(\')");
のはmyText.replace(/\'\)/g, "\')");
('
私はこれをに置き換えようとして(\'
い')
ましたが、 RegExp\')
に慣れていないため、試行回数はほとんどありませんでした。
私が試したmyText.replace(/\(\'/g, "(\')");
のはmyText.replace(/\'\)/g, "\')");
これは、正規表現なしで 1 行で実行できます。
myText = myText.split("('").join("(\\'").split("')").join("\\')");
問題は正規表現ではなく、代替品です。バックスラッシュをエスケープする必要があります。そうしないと、(不必要に) エスケープされます'
:
myText = myText.replace(/\('/g, "(\\'");
myText = myText.replace(/'\)/g, "\\')");
もう少し高度な手法 (つまり、キャプチャ グループと先読み) を使用すると、これらを 1 つの正規表現に組み合わせることができます。
myText = myText.replace(/(\()'|'(?=\))/g, "$1\\'");
正規表現は、('
または'
が続く場合に一致します)
(実際には一致しません)。同時に、(
そこにある場合は「キャプチャ」します。$1
置換文字列の は、キャプチャ(
された場合は元に戻し、単に を書き出します\'
。)
後ろに書く必要はありません。先読みを使用したため、それが試合の一部になることはありませんでした。