【问题标题】:Extract last part of url without query string or jsessionid提取没有查询字符串或 jsessionid 的 url 的最后一部分
【发布时间】:2013-05-24 19:00:40
【问题描述】:

我想要一个正则表达式,它总是在查询字符串参数之前返回一个 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

【问题讨论】:

标签: regex url jsessionid


【解决方案1】:

我会用这个regex:

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

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

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

【讨论】:

  • 像 abc.com 这样的网址怎么样?var=val1/dfg。如果它一直到最后一个正斜杠,那么它会给出错误的结果。
  • @Sohaib 我不确定你的意思?这个答案也来自近 3 年前的现在,可能在这一点上可以改进。另外,看起来那里的链接现在已损坏=/
猜你喜欢
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多