Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ulr(key=value&;key=value)Java正则表达式的模式_Java_Regex - Fatal编程技术网

ulr(key=value&;key=value)Java正则表达式的模式

ulr(key=value&;key=value)Java正则表达式的模式,java,regex,Java,Regex,想知道如何编写与此匹配的url的正确模式正则表达式: 键=值。 2对键=值由«&»分隔。 如果值为空或null,请删除键 谢谢如果要从查询字符串中删除空参数,可以使用此正则表达式\w+=[^&]+仅匹配值部分为非空的键值对。例如,如果您有以下字符串 key1=value1&key2=value2&key3=&key4=value4 然后使用上面的正则表达式只匹配URL并过滤掉其余的URL。这段Java代码应该对您有所帮助 String s = "key1=value1&

想知道如何编写与此匹配的url的正确模式正则表达式: 键=值。 2对键=值由«&»分隔。 如果值为空或null,请删除键


谢谢

如果要从查询字符串中删除空参数,可以使用此正则表达式
\w+=[^&]+
仅匹配值部分为非空的键值对。例如,如果您有以下字符串

key1=value1&key2=value2&key3=&key4=value4
然后使用上面的正则表达式只匹配URL并过滤掉其余的URL。这段Java代码应该对您有所帮助

String s = "key1=value1&key2=value2&key3=&key4=value4";
Pattern p = Pattern.compile("\\w+=[^&]+");
Matcher m = p.matcher(s);
StringBuilder sb = new StringBuilder();
while(m.find()) {
    sb.append(m.group()).append("&");
}
System.out.println(sb.substring(0,sb.length()-1));
打印已删除key3值的文件,因为该文件为空

key1=value1&key2=value2&key4=value4
key1=value1&key2=value2&key4=value4
使用Java8 streams,您可以使用这个一行代码来实现

String s = "key1=value1&key2=value2&key3=&key4=value4";
String cleaned = Arrays.stream(s.split("&")).filter(x -> Pattern.matches("\\w+=[^&]+", x)).collect(Collectors.joining("&"));
System.out.println(cleaned);
印刷品