0

我必须从 url 而不是 jsessionid 字符串中获取 jsessionid 代码。可以匹配某些东西并排除它吗?

https://esgf-data.dkrz.de/esgf-idp/idp/login.htm;jsessionid=436100313FAFBBB9B4DC8BA3C2EC267B

Result = 436100313FAFBBB9B4DC8BA3C2EC267B

从评论中添加的代码:

Pattern pattern = Pattern.compile("/jsessionid=([a-z0-9]+)/i"); 
Matcher matcher=pattern.matcher(connection.getURL().toExternalForm()); 
4

3 回答 3

0

试试这个:

    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));
    }
于 2013-03-20T16:41:49.003 回答
0

如果您的 JSESSIONID 末尾有一个路由标识符1 2 ,请注意,这些前面的正则表达式可能会失败。我发现这也会选择路由表达式(Regex101)。

^([A-F0-9]+)((\.[A-Za-z0-9]+)*)$
于 2014-08-26T01:25:31.110 回答
0

/=([A-Z0-9]+)/将获取等号后的所有大写字母和数字=并将它们移动到反向引用#1

$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 = "";
}
于 2013-03-20T10:01:27.040 回答