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

时间:2019-01-31 04:30:47

标签: java regex

想知道如何为我的网址编写正确的模式正则表达式以匹配此内容: 键=值。 2对键=值用«&»分隔。 如果值为空或为空,则删除键

谢谢

1 个答案:

答案 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