首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

请问一个正则表达式中用转义字符的疑惑

2012-09-08 
请教一个正则表达式中用转义字符的疑惑我在web.xml文件下配置XML codeinit-paramparam-namepattern/p

请教一个正则表达式中用转义字符的疑惑
我在web.xml文件下配置

XML code
         <init-param>          <param-name>pattern</param-name>          <param-value[color=#FF0000]>.*\\.do$|.*\\.jsp$[/color]</param-value>      </init-param>


参数值通过filterConfig拿出来怎么是.*\\\\.do$|.*\\\\.jsp$啊,为什么会出现这种情况,但是你后台打印的话它会帮你转义出来所以你看到的是.*\\.do$|.*\\.jsp$ 这样问题就出来了,我开始不知道是这个情况,

然后我就拿去匹配当然和我预想的结果不一样,匹配不上。那么怎样解决这个问题了,当然可以直接在文件中写死不去传,
如果还是想通过传参数该怎么解决,谢谢大侠们的指教啊

[解决办法]
首先在web.xml中的,

要表达.do,要用'\'来转义'.' 所以变成 ‘\.do’ 但 ‘\’在正则里也是有特殊意义的,也需要'\' 转义一下,所以最终变成'\\.do' 

在java类里,‘\’也需要转义,'\\' 表示 一个 '\' 。所以要表示两个'\',就需要四个'\'
[解决办法]
<param-value>.*\.(?:do|jsp)$</param-value>

写成这样就可以了

热点排行