我正在使用 StreamReader 读取 HTML 文件。我想删除以 . 开头@*
和结尾的字符串的一部分*@
。可能有多次出现,我想将它们全部删除。
问问题
419 次
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(@"@\*(?:[^*]+|\*[^@])*\*@");
如果我们使用"[@][*].*[*][@]"
那么 next 将无法正常工作
"@* 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 回答