请教一个正则表达式中用转义字符的疑惑
我在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>
写成这样就可以了