c# - 正则表达式匹配从字符串中删除
问题描述
当实例之前或之后没有实例时,我需要#!#
从字符串中删除实例。#
例如...
LoremImpsum#!#Dolor
=> 匹配#!#
Lorem #!#ASD##
=> 匹配#!#
Lorem #!##
=> 不匹配
Lorem##!#
=> 不匹配
到目前为止我的代码:
foreach (Match match in Regex.Matches(formattedHtml, @"(?<!#)(#!#)(?!#)")
formattedHtml = formattedHtml.Replace(match.Value, "");
但在我看来,消极的前瞻或后瞻是行不通的。谢谢。
解决方案
看起来您的代码在多次出现并且应该只替换其中一个的地方失败了。
您的正则表达式是否应该这样做。但是,问题在于替换代码。而不是跟随
foreach (Match match in Regex.Matches(formattedHtml, @"(?<!#)(#!#)(?!#)")
formattedHtml = formattedHtml.Replace(match.Value, "");
你应该使用
formattedHtml = Regex.Replace(formattedHtml,@"(?<!#)(#!#)(?!#)","");
根据您的初始代码,如果找到匹配项,它将替换字符串中的所有出现,即使它具有前面/后续的 '#'
推荐阅读
- asp.net-web-api - 检测到与 ASP.NET SignalR 服务器的连接尝试
- javascript - 如何在Javascript的Script Tag中动态访问JSP的forEach标签值。?
- javascript - 将来自 ajax 响应的数据填充到下拉列表中
- python-3.x - 如何在pymqi中控制UserID?
- php - URL重写和重定向地址错误
- javascript - 如何使用 Vuetify.js 制作多页 Web 应用程序?
- row - Python读取多行并将它们写入ASCII文件中的一行
- csv - 文件 A 的输出行,其中第一列与文件 B 匹配
- reactjs - 我的商店有联合减速器。我的商店有很多状态变量。但我不想听特定变量的变化
- java - 从逗号分隔的字符串中删除并获取文本,如果它在java中具有#作为前缀?