1

ここに簡単な例があります

string text = "parameter=120\r\n";
int newValue = 250;

text = Regex.Replace(text, @"(?<=parameter\s*=).*", newValue.ToString());

text"parameter=250\n"交換後になります。Replace() メソッドは '\r' を削除します。改行はデフォルトで UNIX スタイルを使用しますか? \b私の正規表現に追加する(?<=parameter\s*=).*\bと問題は解決しますが、Windows スタイルの改行で行を解析するより良い方法があるはずです。

4

3 に答える 3

1

.デフォルトでは一致しません\n..一致させたい場合は、単一行モードを使用する必要があります..

(?s)(?<=parameter\s*=).*
 ^

(?s)シングルラインモードを切り替えます

于 2013-10-04T08:31:47.253 に答える
1

この回答を見てください。つまり、ピリオド ( )は、ほぼすべての正規表現の実装.を除いて、すべての文字に一致します。\n特に Replace とは関係ありません。任意の数の を削除するように指示しましたが.、それも丸呑みになり\rます。

(?<=parameter\s*=)[^\r\n]*今はテストできませんが、許可しない文字を明示的に記述するように書き直すことができるかもしれません。

于 2013-10-04T08:32:31.220 に答える
1

Try this:

string text = "parameter=120\r\n";
int newValue = 250;

text = Regex.Replace(text, @"(parameter\s*=).*\r\n", "${1}" + newValue.ToString() + "\n");

Final value of text:

parameter=250\n

Match carriage return and newline explicitly. Will only match lines ending in \r\n.

于 2013-10-04T08:41:29.270 に答える