删除c#中的字符串部分(多次出现)

时间:2012-09-17 12:38:23

标签: c# regex string

我正在使用StreamReader读取HTML文件。 我想删除以@*开头并以*@结尾的字符串部分。 可能会出现多次,我想将它们全部删除。

3 个答案:

答案 0 :(得分:1)

使用正则表达式,如:

string input; // string containing data to be replaced
Regex regex = new Regex("[@][*].*?[*][@]", RegexOptions.Multiline);
string replaced = regex.Replace(input, string.Empty);

这会查找所有以@*开头并以*@结尾的字符串,并将其替换为空字符串,从而有效删除它们。

请注意,这需要将整个文件作为字符串加载。一个更好的解决方案可能是创建一个简单的状态机来读取流并将其复制到另一个流中,直到找到字符串@*,然后停止复制到另一个字符串,直到找到*@

答案 1 :(得分:1)

更新 akton 正则表达式:

Regex regex = new Regex(@"@\*(?:[^*]+|\*[^@])*\*@");

如果我们使用"[@][*].*[*][@]",则接下来将无法正常使用

"@* That was 2 *@  THIS WILL BE DELETED TOO!  @* 2. *@"

奖励(?: )用于删除内部后点。

答案 2 :(得分:1)

@\*.*?\*@的所有匹配替换为空字符串。

str = Regex.Replace(str, @"@\*.*?\*@", "", RegexOptions.Singleline);