Java 查询字符串的正则表达式模式
我需要一个查找java正则表达式模式的帮助,以从URI获取一个查询信息。 例如,这里的URI是Java 查询字符串的正则表达式模式,java,regex,Java,Regex,我需要一个查找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;ca
"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丢失,regex也不会失败。请帮助…您的问题可以简化为:“如何从字符串中提取可选查询参数”。以下是方法:
String appId = input.replaceAll("(.*(app_id=(\\w+)).*)|.*", "$3");
appId
变量将包含app\u 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:
你能给出一个从哪个app_id中提取的示例字符串吗?[app_id]*表示0次或更多次,可能这会有帮助它必须是正则表达式吗?您是否可以使用现有的帮助器方法,例如?这是regex模式^([^:/?#]+):)(/([^/??#]*))([^?#]*))(([^?#]*))(([^?#]*))(#(.*))?