2017-12-06 19 views
0

私は、次のファイルがあります。非貪欲正規表現の置き換え

STRING1 

    "string3" = 1 ; 

をによって:私は交換したい

STRING1 
    "string2" = 1 ; 
STRING1 
    "string4" = 1 ; 
STRING1 

    "string3" = 1 ; 
STRING1 
"string5" = 1 ; 

STRING1 

    "string3" = 2 ; 

(STRING1.*?".*?".*?=)(.*?)\;(あるいは(STRING1.*?"string.?".*?=)(.*?)\;)を使用して、I個々のSTRING1 ... ;ブロックに一致することができますが、もし私が(STRING1.*?"string3.?".*?=)(.*?)\;を使うとxはstring3ブロックまでのすべてにマッチします。

+0

正規表現を使用する必要がありますか?あなたが記述した小さなファイルでは、ファイル全体を文字列に読み込み、replace()メソッドを使用して新しい文字列をファイルに書き戻すことができます。あなたは彼らの言うことを知っている:あなたは問題がある。あなたは正規表現でそれを解決することに決めました。今あなたは2つの問題があります:-) – Apollo2020

+0

これはファイルの内容の抜粋ですが、それははるかに大きくなります。私は正規表現を使用する必要はありませんが、 "文字列*"の配置がランダムになる可能性があるので、私は考えることはできませんが、誤って置き換えられる可能性があります。たとえば、1つのファイルに「文字列*」\ r \ n = 1; –

答えて

1

.*?にはに特定の文字が含まれていないことがわかっている場合は、STRING1.*?を使用しないでください。この場合、確かに.*?[^;"]*と書かれているように見えます。 ".*?=ケースでも同様の代用を行います。

(STRING1[^;"]*"string3"[^"=]*=)[^;]*;

あなたはまだあなたのファイルで表現されているどのように引用符で囲まれた文字列の場合に対処する必要があるかもしれませんよ。それらの文字列の1つにあなたの質問全体が含まれているとどうなりますか?

実際に完全に信頼できる修正は、ファイル全体を解析して変更を行いますが、それはあなたの状況に対して過度の可能性があります。

関連する問題