正则转义

在使用solr是,需要将特殊字符转义,在网上搜索,大多数结果为

  
  
static public function escape($value)
{
//list taken from http://lucene.apache.org/java/docs/queryparserSyntax.html#Escaping%20Special%20Characters
$pattern = '/(\+|-|&|\||!|\(|\)|\{|}|\[|]|\^|"|~|\*|\?|:|;|~|\/)/';
$replace = '\\\$1';
return preg_replace($pattern,$replace,$value);
}
但是在使用时,发现不能正确使用。

经过摸索,最终得到正确的结果:

Regex regex1 = new Regex("([+\\-&|!(){}\\[\\]^\"~*?:(\\)])");
var test = regex1.Replace(content,"\\$1");

对这个正则解释下:

([+\\-&|!(){}\\[\\]^\"~*?:(\\)])

1、 最外面是一个括号,意思是这里面的当成一个组。”组“的解释为:将 \( 和 \) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个 临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。链接为http://baike.baidu.com/link?url=oSRwAnr6GMDEp3T9_BicqhUUE218ISEzOmvGKND26UOtLKuEVLZlt3pw3qpDSu_zk3WGn_ypH8AHnggxm9H4da#7

2、大括号里面是中括号,表示匹配中括号中的任何一个字符

3、regex1.Replace(content,"\\$1"); $1表示正则中匹配到的字符, 具体含义在上面的链接中。

\\$1表示在正则中匹配的字符钱再加一个斜杠。此处两个斜杠中的前一个斜杠是转义。

regex1.Replace(content,"\\$1")表示在匹配字符钱加一个斜杠

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...