想知道如何为我的网址编写正确的模式正则表达式以匹配此内容: 键=值。 2对键=值用«&»分隔。 如果值为空或为空,则删除键
谢谢
答案 0 :(得分:-1)
如果要从查询字符串中删除空参数,则可以使用此正则表达式\w+=[^&]+
仅匹配其值部分为非空的键值对。例如如果您有以下字符串,
key1=value1&key2=value2&key3=&key4=value4
然后仅匹配使用上述正则表达式的网址,并过滤掉其余部分。这段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
使用Java8流,您可以使用这一代码代码来实现,
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);
打印
key1=value1&key2=value2&key4=value4