我可能会收到以下cookie字符串。
hello=world;JSESSIONID=sdsfsf;Path=/ei
我需要提取JSESSIONID
我使用以下模式,但它似乎不起作用。但是https://regex101.com
显示它是正确的。
Pattern PATTERN_JSESSIONID = Pattern.compile(".*JSESSIONID=(?<target>[^;\\n]*)");
答案 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=([^;]+)
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"));
答案 2 :(得分:1)
你甚至可以通过分割和替换字符串来获得你的目标,下面我分享这对我有用。
synchronized