我正在尝试解析 (Java) 自定义 GET 样式请求,我想通过正则表达式来完成。
请求格式如下:
GET myCommand?parameter1=value¶meter2=value¶meter3=value¶meter4=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¶meter2=value2¶meter3=value2¶meter4=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/