首页 > 解决方案 > 正则表达式匹配从字符串中删除

问题描述

当实例之前或之后没有实例时,我需要#!#从字符串中删除实例。#

例如...

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

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

Lorem #!##=> 不匹配

Lorem##!#=> 不匹配

到目前为止我的代码:

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

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

标签: c#regex

解决方案


看起来您的代码在多次出现并且应该只替换其中一个的地方失败了。

您的正则表达式是否应该这样做。但是,问题在于替换代码。而不是跟随

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

你应该使用

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

根据您的初始代码,如果找到匹配项,它将替换字符串中的所有出现,即使它具有前面/后续的 '#'


推荐阅读