正则表达式:如何从cookie字符串中提取JSESSIONID cookie值?

时间:2017-09-07 14:31:07

标签: java regex string

我可能会收到以下cookie字符串。 hello=world;JSESSIONID=sdsfsf;Path=/ei

我需要提取JSESSIONID

的值

我使用以下模式,但它似乎不起作用。但是https://regex101.com显示它是正确的。

Pattern PATTERN_JSESSIONID = Pattern.compile(".*JSESSIONID=(?<target>[^;\\n]*)");

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式(^|;)JSESSIONID=(.*);以更简单的方法实现目标。以下是Regex101上的demo(您忘记使用保存按钮链接正则表达式)。看看下面的代码。您必须使用类Matcher提取匹配的值:

String cookie = "hello=world;JSESSIONID=sdsfsf;Path=/ei";
Pattern PATTERN_JSESSIONID = Pattern.compile("(^|;)JSESSIONID=(.*);");
Matcher m = PATTERN_JSESSIONID.matcher(cookie);
if (m.find()) {
   System.out.println(m.group(0));
}

输出值:

  

sdsfsf

当然,结果取决于输入文本的所有可能变体。上面的代码段在每种情况下都适用于JSESSIONID;字符之间的值。

答案 1 :(得分:2)

您可以尝试以下正则表达式:

JSESSIONID=([^;]+)

regex explanation

String cookies = "hello=world;JSESSIONID=sdsfsf;Path=/ei;submit=true";
Pattern pat = Pattern.compile("\\bJSESSIONID=([^;]+)");
Matcher matcher = pat.matcher(cookies);
boolean found = matcher.find();
System.out.println("Sesssion ID: " + (found ? matcher.group(1): "not found"));

DEMO

答案 2 :(得分:1)

你甚至可以通过分割和替换字符串来获得你的目标,下面我分享这对我有用。

synchronized