我有一个我期待的网址:
www.somewebsite.com/misc-session/;session-id=1FSDSF2132FSADASD13213
我想解析
session-id=1FSDSF2132FSADASD13213
在Java中使用常规表达式,最好的方法是什么?
使用测试正则表达式网站我已经尝试了一些不同的方法,但我想知道什么是最安全的最好的方法,并且受保护的URL实际上形成如下:
www.somewebsite.com/misc-session/;session-id=1FSDSF2132FSADASD13213?someExtraParam=false
或
www.somewebsite.com/misc-session/extra-path/;session-id=1FSDSF2132FSADASD13213?someExtraParam=false
我一直在寻找“session-id”的价值。
编辑: session-id的值不限于数字,并且保证包含两者的组合。
答案 0 :(得分:5)
最安全且受保护的最佳方法是什么。
我认为双方word boundary
匹配就足够了。
正则表达式: \bsession-id=\d+\b
注意: - 如果正在使用的正则表达式需要双重转义,请使用\\d
和\\b
。
<强> Regex101 Demo 强>
以防session-id
范围[A-Za-z0-9]
中的字符使用此正则表达式。
正则表达式: \bsession-id=[A-Za-z0-9]+\b
<强> Regex101 Demo 强>
<强> Ideone Demo 强>
请记住包含
import java.util.regex.Matcher;
import java.util.regex.Pattern;
答案 1 :(得分:3)
试试这个:
String str = "www.somewebsite.com/misc-session/;session-id=213213213";
Pattern p = Pattern.compile("(session-id=\\d+)");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group(0));
}
请注意,始终会给出session-id=
并且您对以下编号感兴趣,该编号用\d
表示(在Java中使用double \\d
)。 +
代表至少一个数字。
但请更好地查看Regex101的详细说明。