У меня есть ниже код в моем приложении:Регулярное выражение^\ Q & \ E
private String getRequestPath(HttpServletRequest req) {
String path = req.getRequestURI();
path = path.replaceFirst("^\\Q" + req.getContextPath() + "\\E", "");
path = URLDecoder.decode(path);
System.out.println("req.getRequestURI()="+req.getRequestURI());
System.out.println("path="+path);
return path;
}
В выходе можно увидеть ниже сообщения, когда я пытаюсь получить доступ к сервлет, который этот метод принадлежит:
req.getRequestURI()=/MyApp/test
path=/test
Как ^\\Q
& \\E
работает в регулярных выражениях.
Вы все равно не должны их использовать. Вместо этого используйте 'Pattern.quote' - это безопаснее – nhahtdh