2017-02-24 6 views
0

に一致していない見つけるために、正規表現式を。そうするために、私は次のようにAnsible 2.2の置き換えモジュールを使用しています:Ansible 2.2:モジュール交換してください - 私は、ファイル(複数の行に存在する)でのログレベルを変更しようとしている変数

- replace: 
    dest: log.xml 
    regexp: '<level value=(?!"{{ log_level }}")' 
    replace: '<level value="{{ log_level }}"' 

私の問題は、それが正しく行を見つけたが、それは古い値を置き換えるものではありませんということです。 LOG_LEVELと例えば 結果:

<level value="INFO"/> 

正しく古い値を削除する正規表現を設定する方法はあります:INFOと古い値が

<level value="INFO""WARN"/> 

期待される結果をWARNに等しいですか?これはあなたのために働く必要があります

答えて

0

- replace: 
    dest: log.xml 
    regexp: '<level value=(?!"{{ log_level }}").*/>' 
    replace: '<level value="{{ log_level }}"/>' 

あなたが一致(および交換)された.*なければ"{{ log_level }}"が続いていないだけで<level value=が、その後半部分にマッチせず。

+0

はい、ありがとうございます。 – jokeirb

+0

私は別の文脈を持っています。「<レベル値=」に続いて別の妥当性があるとしましょう。「デフォルト=真」です。上記のソリューションを使用すると、「デフォルト=真」の妥当性が取り除かれます。私はそれをそのまま保つつもりですか?どうやってやるの ?私はこれを一般的にしたい(それは別の妥当性と一緒に働く)。 – jokeirb

関連する問題