Python从字符串u中提取会话id

2024-09-30 20:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网址:

mywebsite.com/idp/profile/SAML2/Redirect/SSO;jsessionid=CED11D31669BEAB45B4CDA651C7EBF3B.idp03?execution=e1s1

我想提取分号后面.idp03之前的jsessionid值:CED11D31669BEAB45B4CDA651C7EBF3B

如何使用Python实现这一点?在


Tags: comidpsaml2profileredirectmywebsite网址execution
3条回答
  1. (?<;=jsessionid=)匹配左开头为jsessionid=

  2. \w+匹配任何单词字符(字母、数字)

代码:

import re
s = "mywebsite.com/idp/profile/SAML2/Redirect/SSO;jsessionid=CED11D31669BEAB45B4CDA651C7EBF3B.idp03?execution=e1s1"
print(re.findall(r"(?<=jsessionid=)\w+",s)) # ['CED11D31669BEAB45B4CDA651C7EBF3B']

这里我将使用一个更谨慎的模式,它将检查jsessionid的终止条件之一:

  • 一。万一有延期
  • 是吗?如果没有扩展名.idp03
  • $,以防没有扩展名和查询参数

把这些放在一起我们就得到了:

input = '/idp/profile/SAML2/Redirect/SSO;jsessionid=CED11D31669BEAB45B4CDA651C7EBF3B.idp03?execution=e1s1'
result = re.search(r'jsessionid=(.*?)(?=[.?]|$)', input)

if result:
    print "jsessionid : ", result.group(1)
else:
    print "no jsessionid found"
import re

s = '/idp/profile/SAML2/Redirect/SSO;jsessionid=CED11D31669BEAB45B4CDA651C7EBF3B.idp03?execution=e1s1'

re.findall('jsessionid=(.*)\.',s)
# ['CED11D31669BEAB45B4CDA651C7EBF3B']

相关问题 更多 >