正则表达式匹配从字符串中删除

时间:2020-01-05 13:18:16

标签: c# regex

在实例前后没有#!#的情况下,我需要从字符串中删除#个实例。

例如...

LoremImpsum#!#Dolor =>匹配#!#

Lorem #!#ASD## =>匹配#!#

Lorem #!## =>没有匹配项

Lorem##!# =>没有匹配项

到目前为止,我的代码:

foreach (Match match in Regex.Matches(formattedHtml, @"(?<!#)(#!#)(?!#)")
    formattedHtml = formattedHtml.Replace(match.Value, "");

但是在我看来,消极的前瞻性或后瞻性是行不通的。 谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎在多次出现且仅应替换其中之一的地方编码失败。

您的正则表达式确实可以做到。但是,问题出在替换代码上。而不是关注

foreach (Match match in Regex.Matches(formattedHtml, @"(?<!#)(#!#)(?!#)")
 formattedHtml = formattedHtml.Replace(match.Value, "");

您应该使用

formattedHtml = Regex.Replace(formattedHtml,@"(?<!#)(#!#)(?!#)","");

根据您的初始代码,如果找到匹配项,它将替换字符串中所有出现的内容,即使该字符串的前/后是“#”