正则转义

前端之家收集整理的这篇文章主要介绍了正则转义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在使用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")表示在匹配字符钱加一个斜杠

猜你在找的正则表达式相关文章