提取url的最后一部分,不带查询字符串或jsessionid

时间:2013-05-24 19:00:40

标签: regex url jsessionid

我想要一个正则表达式,它总是会在查询字符串参数之前返回url的最后一部分,如果不存在,则返回jessionid。

以下是一些网址示例:

http://www.somesite.com/some/path/test.action;jsessionid=000063vCmvJAn7VWyymA_dPsHZs:16u9pglit?sort=2&param1=1&param2=2
http://www.somesite.com/some/path/test;jsessionid=000063vCmvJAn7VWyymA_dPsHZs:16u9pglit?sort=2&param1=1&param2=2
http://www.somesite.com/some/path/test.action?sort=2&param1=1&param2=2
http://www.somesite.com/some/path/test?sort=2&param1=1&param2=2

到目前为止,这是我的正则表达式:

.*http://.*/some/path.*/(.*);?.*\?.*

它适用于不包含jsessionid的url,但如果存在则返回test;jessionid=...

测试:http://regex101.com/r/fM0mE2

1 个答案:

答案 0 :(得分:0)

我会使用这个regex

.*http:\/\/.*\/some\/path.*\/([^;\?]+);?.*\?.*
                              ^^^^^^ 

基本匹配任何非;?的内容。我认为它可能缩短为:

.*http:\/\/.*\/some\/path.*\/([^;\?]+)