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