日期:2014-05-16  浏览次数:20534 次

正则表达式中的转义字符在Java代码中和在数据库中不同表示

项目中发现一个关于正则表达式的问题:

?

在code中

Pattern.compile("http://blog.sina.com.cn/s/blog_[A-Za-z0-9]+\\.html");

?在table中

http://blog.sina.com.cn/s/blog_[A-Za-z0-9]+\.html

?

注意“\\.html”

不同在于转义字符的使用,代码中需要两个\\,而数据库中只需一个\

?

原因分析

我猜是java代码中定义字符串变量时使用双引号,而斜线\本身是java字符串语法中的转义字符,因此我们如果期望获得一个java正则表达式中的转义字符,则需再code中再加一个斜线\,否则只用一个的话,会被java编译器识别为java字符串的转义字符。