私はJavaを使用してJavaScriptファイルを解析しています。スコープが使用している環境で予想とは異なるため、ieのすべてのインスタンスを置き換えようとしています。
test = value
と
window.test = value
以前、私はちょうど使用していました
writer.append(js.getSource().replaceAll("test", "window.test"));
これは明らかに一般化できませんが、固定データセットの場合は正常に機能していました。
ただし、使用することになっている新しいファイル、古いファイルの更新バージョンでは、処理する必要があります。
window['test'] = value
と
([[test]])
test
どちらの場合も一致させたくありませんが、新しいフォーマットがあるのはこの2つだけのようです。だから私の計画は、最初のキャラクター以外のものと一致するように正規表現を行うことでした'
。[
それは([^'\[])test
; ただし、実際には最初の文字を置き換えたくはありません。一致させたくない2つの文字のいずれでもないことを確認してください。
これは私にとって新しい状況でした。なぜなら、私はRegExpsとの置き換えにそれほど取り組んでおらず、パターンマッチングだけを行っているからです。それで私は周りを見回して、私が考えた解決策、「非捕獲グループ」と呼ばれるものを見つけました。Oracleページの説明は私が探していたもののように聞こえましたが、正規表現をに書き直したとき、(?:[^'\\[])test
何も変更していない場合とまったく同じように動作しました。前の文字を置き換えましたtest
。StackOverflowを見回しましたが、発見したことで、自分がやっていることはうまくいくはずだという自信がつきました。
期待どおりに機能しないのは何が間違っているのでしょうか。パターンを誤用していますか?