StreamReader を使用して HTML ファイルを読み込んでいます。@*
で始まり、で終わる文字列の一部を削除したい*@
。複数のオカレンスが存在する可能性があり、それらをすべて削除したいと考えています。
3 に答える
1
次のような正規表現を使用します。
string input; // string containing data to be replaced
Regex regex = new Regex("[@][*].*?[*][@]", RegexOptions.Multiline);
string replaced = regex.Replace(input, string.Empty);
これは、で始まり、@*
で終わるすべての文字列を検索*@
し、それらを空の文字列に置き換えて、効果的に削除します。
これには、ファイル全体を文字列としてロードする必要があることに注意してください。より良い解決策は、ストリームを読み取り、文字列が見つかるまで別のストリームにコピーし、文字列@*
が見つかるまで他の文字列へのコピーを停止する単純なステート マシンを作成する*@
ことです。
于 2012-09-17T12:44:27.647 に答える
1
akton正規表現の更新:
Regex regex = new Regex(@"@\*(?:[^*]+|\*[^@])*\*@");
使用する"[@][*].*[*][@]"
と、次は正しく機能しません
"@* That was 2 *@ THIS WILL BE DELETED TOO! @* 2. *@"
ボーナス(?: )
は内部バックポイントの削除に使用されます。
于 2012-09-17T13:29:24.090 に答える
1
@\*.*?\*@
のすべての一致を空の文字列に置き換えます。
str = Regex.Replace(str, @"@\*.*?\*@", "", RegexOptions.Singleline);
于 2012-09-17T13:41:48.620 に答える