java - 自定义 'HTTP GET style' 请求的正则表达式

标签 java regex

我正在尝试解析 (Java) 自定义 GET 样式请求,我想通过正则表达式来完成。
请求格式如下:

GET myCommand?parameter1=value&parameter2=value&parameter3=value&parameter4=value

参数的数量是可变的,但至少需要一个参数。

有人可以帮我处理这个正则表达式吗?

最佳答案

以下是如何使用 4 行将其全部解析为 java 变量:

String command = input.replaceAll("(^\\w+ )|(\\?.*)", "");
Map<String, String> params = new LinkedHashMap<String, String>();
for (String pair : input.replaceFirst(".*?\\?", "").split("&"))
    params.put(pair.split("=")[0], pair.split("=")[1]);

请注意,使用 LinkedHashMap 会按输入顺序进行迭代。

这是一个使用您的输入的小测试(稍作修改以具有不同的值):

public static void main(String[] args) throws Exception {
    String input = "GET myCommand?parameter1=value1&parameter2=value2&parameter3=value2&parameter4=value4";
    String command = input.replaceAll("(^\\w+ )|(\\?.*)", "");
    Map<String, String> params = new LinkedHashMap<String, String>();
    for (String pair : input.replaceFirst(".*?\\?", "").split("&"))
        params.put(pair.split("=")[0], pair.split("=")[1]);
    System.out.println("Command=" + command);
    System.out.println("Params=" + params);
}

输出:

Command=myCommand
Params={parameter1=value1, parameter2=value2, parameter3=value2, parameter4=value4}

关于java - 自定义 'HTTP GET style' 请求的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852899/

相关文章:

Java日期周期比较

java.lang.RuntimeException : Unable to start activity ComponentInfo{. .}java.lang.NullPointerException

java - 如何在 Apache Camel 中循环

java - 动态编译语言 vs 静态编译语言

java - Spring Maven hibernate 类未找到异常

Java拆分正则表达式模式字母和数字

c# - 包含 <> 标签的正则表达式过滤器 "

Java - 正则表达式正向后查找会导致错误

python - 查找 2 个字符之间的所有整数和子字符串

javascript - 你如何阅读这个 JavaScript 正则表达式?