求助一则全字匹配的算法

swjtu1988 2016-03-24 10:58:08
最近遇到一个问题,需要用全字匹配的方式替换字符串,例如我指定输入字符串InputStr,需要将其中的一部分字符串替换掉,但发现用正则表达式的时候,如果遇到需要替换的字符串中包含了特殊的转义字符,如+-*/()%等,就会替换失败,例如输入字符串:“大气系统#大气压强(气压高度<90km)% + 参数1 >0“,如果替换”大气系统#大气压强(气压高度<90km)%“就会失败,有没有什么好的方式可以能识别所有的特殊字符,能够直接把特殊字符也当做普通字符,进行全字匹配?
...全文
158 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dalmeeme 2016-03-24
  • 打赏
  • 举报
回复
正则库中有个方法专门干这事: Regex.Escape(@"你的正则表达式")
xuzuning 2016-03-24
  • 打赏
  • 举报
回复
Regex.Escape(String) 通过替换为转义码来转义最小的字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。这将指示正则表达式引擎按原义解释这些字符而不是解释为元字符。
swjtu1988 2016-03-24
  • 打赏
  • 举报
回复
关键是根本不知道会有什么样的特殊字符,这些特殊字符是动态随机出现的
Poopaye 2016-03-24
  • 打赏
  • 举报
回复
在你担忧的字符前面加上反斜杠
xuzuning 2016-03-24
  • 打赏
  • 举报
回复
不知道你是怎么写的
            var InputStr = "大气系统#大气压强(气压高度<90km)% + 参数1 >0";
var pattern = "大气系统#大气压强(气压高度<90km)%";
Console.WriteLine(Regex.Replace(InputStr, pattern, ""));
Console.WriteLine(Regex.Replace(InputStr, Regex.Escape(" + 参数1 >0"), ""));
swjtu1988 2016-03-24
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
Regex.Escape(String) 通过替换为转义码来转义最小的字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。这将指示正则表达式引擎按原义解释这些字符而不是解释为元字符。
这个我试过了 ,我发现没办法成功,我刚刚用字符串:InputStr:大气系统#大气压强(气压高度小于20km)%, repStr:大气系统#大气压强(气压高度小于20km)%,替换为par,结果字符串仍然没有变化

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧