gpt4 book ai didi

java - 查询字符串的正则表达式模式

转载 作者:行者123 更新时间:2023-11-30 09:30:39 25 4
gpt4 key购买 nike

我需要帮助查找 Java 正则表达式模式以从 URI 获取一个查询信息。比如这里的URI是

"GET /6.2/calculateroute.xml?routeattributes=sm,wp,lg,bb&legattributes=mn&maneuverattributes=ac,po,tt,le,-rn,-sp,-di,no,nu,nr,sh&instructionFormat=html&language=en_US&mode=fastest;car;traffic:default&waypoint0=37.79548,-122.392025&waypoint1=36.0957717,-115.1745167&resolution=786&app_id=D4KnHBzGYyJtbM8lVfYX&token=TRKB7vnBguWLam5rdWshTA HTTP/1.1"

我需要从中提取 4 个值,我设法做到了:

GET

/6.2/calculateroute.xml

routeattributes=sm,wp,lg,bb&legattributes=mn&maneuverattributes=ac,po,tt,le,-rn,-sp,-di,no,nu,nr,sh&instructionFormat=html&language=en_US&mode=fastest;car;traffic:default&waypoint0=37.79548,-122.392025&waypoint1=36.0957717,-115.1745167&resolution=786&app_id=D4KnHBzGYyJtbM8lVfYX&token=TRKB7vnBguWLam5rdWshTA

HTTP/1.1

现在的问题是如何为查询字符串中的 app_id 值编写正则表达式。请注意 app_id 不会出现在所有模式中,因此它应该是通用的,如果缺少 app_id 则正则表达式不应失败。请帮助...

最佳答案

您的问题可以简化为:“如何从字符串中提取可选的查询参数”。方法如下:

String appId = input.replaceAll("(.*(app_id=(\\w+)).*)|.*", "$3");

appId 变量将包含 app_id 值(如果存在)否则为空。

下面是一些测试代码,代码被捆绑为一个实用方法:

public static String getParameterValue(String input, String parameter) {
return input.replaceAll("(.*("+parameter+"=(\\w+)).*)|.*", "$3"));
}

public static void main(String[] args) {
String input1 = "foo=bar&app_id=D4KnHBzGYyJtbM8lVfYX&x=y";
String input2 = "foo=bar&XXXXXX=D4KnHBzGYyJtbM8lVfYX&x=y";

System.out.println("app_id1:" + getParameterValue(input1, "app_id"));
System.out.println("app_id2:" + getParameterValue(input2, "app_id"));
}

输出:

app_id1:D4KnHBzGYyJtbM8lVfYX
app_id2:

关于java - 查询字符串的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13193566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com