模式匹配在JAVA中不适用于字符串

模式匹配在JAVA中不适用于字符串,java,Java,我解码了一个HTTP请求输入字符串,应该检查它是否包含像[$,=?@.%!]^这样的运算符 我在谷歌上搜索并找到了一些工作代码,根据这些代码,我通过运算符传递了值,但它不工作: String urlParameters = httpRequest.getQueryString(); try { String prevURL=""; String decodeURL=urlParameters; while(!prevURL.equals(decodeURL))

我解码了一个HTTP请求输入字符串,应该检查它是否包含像[$,=?@.%!]^这样的运算符

我在谷歌上搜索并找到了一些工作代码,根据这些代码,我通过运算符传递了值,但它不工作:

String urlParameters = httpRequest.getQueryString();
try {
     String prevURL="";
     String decodeURL=urlParameters;  
     while(!prevURL.equals(decodeURL))  
     {
          prevURL=decodeURL;  
          decodeURL=URLDecoder.decode( decodeURL, "UTF-8" );  
      }
      urlParameters=decodeURL;
 }
  catch (Exception e) {
     System.out.println("Exception on decoding:" + e);
}
Pattern pp = Pattern.compile("[$,=?@#'<>.()%!]^");
Matcher mm = pp.matcher(urlParameters);
if (mm.find()) {
    System.out.println("There is an Operator");
}

如果urlParameters具有上述任何运算符,则它应该打印有一个运算符

您在模式的末尾有^Operator-[$,=?@.%!]^

^-用于匹配字符串第一个字符之前的位置

从模式中删除^

如果需要将^作为特殊字符集的一部分,请将其包含在[]中


你不工作是什么意思?你有什么错误吗?还是意外输出?你能分享你得到的结果或错误吗?如果urlParameters有上面提到的任何操作符[$,=?@.%!]^,那么它应该打印有一个操作符,或者可以读取它!有什么问题?什么是输入,什么是输出?@SandeepKumar问题是它没有从urlParameters中检测到任何运算符,例如:urlParameters=waters如果您指出的微小更正确实是唯一的问题,那么您应该作为一个输入错误问题投票结束。@ashishkumar感谢您提供的信息及其工作,但是如何添加^@Tim这不是打字错误,我还需要^symbol进行匹配。@ashishkumar Pattern pp=Pattern.compile[$,=?@'^.%!];这是可行的,但这会有任何影响吗?不,它不会有任何影响。使用您给定的模式,它将在字符串中的任何位置匹配这些字符。如果要明确表示只希望在字符串开头匹配,可以将^
Pattern pp = Pattern.compile("[$,=?@#'^<>.()%!]");
String urlParameters = httpRequest.getQueryString();
try {
     String prevURL="";
     String decodeURL=urlParameters;  
     while(!prevURL.equals(decodeURL))  
     {
          prevURL=decodeURL;  
          decodeURL=URLDecoder.decode( decodeURL, "UTF-8" );  
     }
     urlParameters=decodeURL;
 }
 catch (Exception e) {
     System.out.println("Exception on decoding:" + e);
}

 if (Patern.matches("^[$,=?@#'<>.()%!]",urlParameters)) {
      System.out.println("There is an Operator");
}