自動的に作成されたLinuxスクリプトを修正したかったのですが、私はfindAll(String, String)
の機能を使って"$APP_ARGS"
を変更しています。Groovyでドル記号で二重引用符で囲まれた文字列の部分文字列を見つける方法
私が試してみましたバリアント:
replaceAll('"$APP_ARGS"', 'simulators ' + '"\\\\$APP_ARGS"') - doesn't find
replaceAll('\"\$APP_ARGS\"',... - doesn't find
replaceAll('"\$APP_ARGS"',... - doesn't find
replaceAll('\\"\\$APP_ARGS\\"',... - editor warning - excessive escape
replaceAll('"\\\\$APP_ARGS"',... - doesn't find
replaceAll('\\\\"\\\\$APP_ARGS\\\\"',... - doesn't find
replaceAll($/"$$APP_ARGS"/$, ...) - does not find
replaceAll('"[$]APP_ARGS"', 'something simple') - finds.
replaceAll('"[$]APP_ARGS"', '"\\\\$APP_ARGS"') - fails.
見ての通り、私は正規表現の形式を使用している場合、発見は[OK]を動作します。しかし、エスケープな仕事をする方法はありますか?私はそれも置換文字列に$
が必要です。
Groovyのマニュアルによれば、/../ stringはスラッシュを除いてエスケープする必要はありません。しかし、
replaceAll(/"$APP_ARGS"/,...
も、メッセージで不明なプロパティ 'APP_ARGS'を取得できませんでした。
この関数の動作にはロジックがないと思われ、正しい解決策を実験で見つける必要があります。
あなたはGStringsとRegExpを一度に戦っています。 'replace'だけを使うと、一重引用符で囲まれた文字列を使うことができ、正規表現の引用符を扱う必要はありません。例えば'' $ ARGS'.replace( '$ ARGS'、 "-l") ' – cfrick
純粋な文字列である2番目のパラメータと同じ問題ではないと私は信じていました。また、最初のパラメータBTWもPatternではなくString型です。これは私が話していることです:最初のパラメータはStringとして宣言されていますが、Pattern - partlyとして動作します。論理なし。 – Gangnus
あなたが何かを試していない限り、これは第二引数とは関係ありません。それは私の質問ではっきりしません。 $ ARGS "'、' -l" $ ARGS "')'を置き換えてください。それがあなたが期待していないものなら、詳しく記述してください。 'replaceAll'は最初のparamとして正規表現を望んでいます(あなたの文字列を1つに変換します)。 – cfrick