日期:2014-05-18  浏览次数:20730 次

关于C# 正则转义的问题.


一个字符串

string rule = ")))))))))))))))))).............[匹配的内容]............+++++++++++++++????????????";


这个字符串除了 [匹配的内容] 是以知的外......其他的都是由用户输入的...然后保存到数据库.


从数据库取出后 , 把[匹配的内容] 替换为 (.+?) , 然后用 Regex.Match 匹配 可是用户会输入一些 正则的元字符 .+?  


如何把这些属于正则表达式语法的符号 转义为 \) \. \+ 这样的

不想用rule.Replace(".", "\.");

这样..貌似效率很低..而且有些属于正则表达式语法的符号我都不知道...



不知道C#里面有没有 把字符串自动转义 为 正则使用的 字符串的方法  

PHP里面有一个  

preg_quote() 以 str 为参数并给其中每个属于正则表达式语法的字符前面加上一个反斜线。如果你需要以动态生成的字符串作为模式去匹配则可以用此函数转义其中可能包含的特殊字符。 



可是我在C# 类库里面找呢半天...都没找到一个类似的方法.





------解决方案--------------------
好说,用正则来替换以下嘛
rule = Regex.Replace(rule,"([.()\[\]\\+?*{}])","\\$1");