Java 使用Regex获取jsessionid
我必须从url获取JSSessionID代码,而不是JSSessionID字符串。是否可以匹配某个内容并将其排除 从注释中添加的代码:Java 使用Regex获取jsessionid,java,regex,Java,Regex,我必须从url获取JSSessionID代码,而不是JSSessionID字符串。是否可以匹配某个内容并将其排除 从注释中添加的代码: Pattern pattern = Pattern.compile("/jsessionid=([a-z0-9]+)/i"); Matcher matcher=pattern.matcher(connection.getURL().toExternalForm()); /=([A-Z0-9]+)/将获取等号后的所有大写字母和数字=,并将它们移到backr
Pattern pattern = Pattern.compile("/jsessionid=([a-z0-9]+)/i");
Matcher matcher=pattern.matcher(connection.getURL().toExternalForm());
/=([A-Z0-9]+)/
将获取等号后的所有大写字母和数字=
,并将它们移到backreference#1
试试这个:
String data = "https://esgf-data.dkrz.de/esgf-idp/idp/login.htm;jsessionid=436100313FAFBBB9B4DC8BA3C2EC267B";
Pattern pattern = Pattern.compile("jsessionid=(\\w+)");
Matcher matcher = pattern.matcher(data);
while (matcher.find()) {
System.out.println("Result is : " + matcher.group(1));
}
作为一个警告,如果在JSESSIONID的末尾有一个路由标识符,那么前面的这些正则表达式可能会失败。我发现这也将获得路由表达式()
你试过什么?另外,您使用什么语言读取url,因为您可能不需要RegExp
/jsessionid=([a-z0-9]+)/i
就可以解析url并获取参数。谢谢您的回复。我正在用Java开发它。对不起,我弄错了。我试过这样做:Pattern=Pattern.compile(“/jsessionid=([a-z0-9]+)/I”);Matcher Matcher=pattern.Matcher(connection.getURL().toExternalForm());因为它是十六进制的,所以这里不需要[a-z]
,所以[a-f0-9]
对于验证来说是足够和最佳的。我已经尝试了上面的代码,但是matcher.find()和matcher.matches()返回false。感谢您的回复@unata,但它似乎不起作用。我在regexpal.com上测试了您的正则表达式,但它没有捕获代码。我使用Java和Pattern/Matcher进行开发,但即使使用=([A-Z0-9]+),Matcher也不匹配任何东西。@user2032199:如果使用find()
而不是matches()
$subject = 'https://esgf-data.dkrz.de/esgf-idp/idp/login.htm;jsessionid=436100313FAFBBB9B4DC8BA3C2EC267B';
if (preg_match('/=([A-Z0-9]+)/', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
String data = "https://esgf-data.dkrz.de/esgf-idp/idp/login.htm;jsessionid=436100313FAFBBB9B4DC8BA3C2EC267B";
Pattern pattern = Pattern.compile("jsessionid=(\\w+)");
Matcher matcher = pattern.matcher(data);
while (matcher.find()) {
System.out.println("Result is : " + matcher.group(1));
}
^([A-F0-9]+)((\.[A-Za-z0-9]+)*)$