删除c#中的字符串部分(多次出现)
我正在使用StreamReader读取HTML文件。 我想删除字符串的一部分,该部分以删除c#中的字符串部分(多次出现),c#,regex,string,C#,Regex,String,我正在使用StreamReader读取HTML文件。 我想删除字符串的一部分,该部分以@*开头,以*@结尾。 可以有多个引用,我想将它们全部删除。使用如下正则表达式: string input; // string containing data to be replaced Regex regex = new Regex("[@][*].*?[*][@]", RegexOptions.Multiline); string replaced = regex.Replace(input, stri
@*
开头,以*@
结尾。
可以有多个引用,我想将它们全部删除。使用如下正则表达式:
string input; // string containing data to be replaced
Regex regex = new Regex("[@][*].*?[*][@]", RegexOptions.Multiline);
string replaced = regex.Replace(input, string.Empty);
这将查找以@*
开头、以*@
结尾的所有字符串,并将其替换为空字符串,从而有效地删除它们
请注意,这需要将整个文件作为字符串加载。更好的解决方案可能是创建一个简单的状态机,读取一个流并将其复制到另一个流中,直到找到字符串
*
,然后停止复制到另一个字符串,直到找到*@
。使用以下正则表达式:
string input; // string containing data to be replaced
Regex regex = new Regex("[@][*].*?[*][@]", RegexOptions.Multiline);
string replaced = regex.Replace(input, string.Empty);
这将查找以@*
开头、以*@
结尾的所有字符串,并将其替换为空字符串,从而有效地删除它们
请注意,这需要将整个文件作为字符串加载。更好的解决方案可能是创建一个简单的状态机,读取一个流并将其复制到另一个流中,直到找到字符串*
,然后停止复制到另一个字符串,直到找到*@
。akton regex更新:
如果我们使用“[@][*].[*][@]”
则next将无法正常工作
"@* That was 2 *@ THIS WILL BE DELETED TOO! @* 2. *@"
作为奖金,(?:)
用于删除内部背景点。akton regex的更新:
如果我们使用“[@][*].[*][@]”
则next将无法正常工作
"@* That was 2 *@ THIS WILL BE DELETED TOO! @* 2. *@"
作为奖金,
(?:)
用于删除内部背景点。用空字符串替换所有匹配的@\*.\*@
str = Regex.Replace(str, @"@\*.*?\*@", "", RegexOptions.Singleline);
用空字符串替换所有匹配的
@\*.\*@
str = Regex.Replace(str, @"@\*.*?\*@", "", RegexOptions.Singleline);
在要删除的子字符串中是否有任何星号浮动的问题,例如,
end;@*那是2*2*@代码>?上述代码仅适用于单线。我有一个例子,@*可以出现在第1行,*@可以出现在第n行。“我还想删除中间的a行。@Devhsalian答案已更新。”。我将RegexOptions.Multiline参数添加到构造函数中。请更新您的regex,Salian应将其检查为answered@Artu谢谢你再接我一次。我改为使用懒惰而不是贪婪版本的*
,这应该具有相同的效果。这难道没有问题吗?要删除的子字符串中有任何星号浮动,例如end;@*那是2*2*@代码>?上述代码仅适用于单线。我有一个例子,@*可以出现在第1行,*@可以出现在第n行。“我还想删除中间的a行。@Devhsalian答案已更新。”。我将RegexOptions.Multiline参数添加到构造函数中。请更新您的regex,Salian应将其检查为answered@Artu谢谢你再接我一次。我改为使用懒惰而不是贪婪版本的*
,这应该具有相同的效果。多行
选项没有任何用处。它所做的只是更改锚的含义(^
和$
),而您没有使用这些锚。另外,@
在正则表达式中没有特殊意义,因此不需要对其进行转义。多行
选项没有任何用处。它所做的只是更改锚的含义(^
和$
),而您没有使用这些锚。而且,@
在正则表达式中没有特殊意义,所以您不需要转义它。