如何使用正则表达式提取__appianCsrfToken的对应值?
提取__appianCsrfToken对应值的可行方案
问题背景
需要从包含RequestsCookieJar的字符串中提取__appianCsrfToken的值,现有正则表达式因匹配逻辑不符合字符串格式,无法正确获取目标值。
解决方案
方案1:优化正则表达式
原字符串中Cookie的格式为__appianCsrfToken=xxx for ...,值的结束标志是空格而非分号,因此调整正则以匹配空格前的内容:
import re cookie_jar = "<RequestsCookieJar[<Cookie JSESSIONID=EA47DC319D1977863BBEC8E4AFB408DF.node60877 for tah.appiancloud.com/suite>, <Cookie SCS_REMEMBER_ME_COOKIE=jA0EAwMC3Bc7KwH4uMsB0kUBOqr2TjQT9LIqoOmfUaCFiPtA7JqG9A8lihrCrKyg6yK2EYEqkHvCfEQwVTcKP9CYYFtwGkG7rGDH8UY6IPhJPKa2tsg for tah.appiancloud.com/suite>, <Cookie SPRING_SECURITY_REMEMBER_ME_COOKIE=TExNTXNyJTJGQjBqVTN6OWFZQ0xSV1RuOVhVcEhtczdhNlFXd0swJTJCd2VGOEElM0Q6TGRQU0MlMkZHRVgyYVhKZldBTVQwQWdQVTMzWTA5VENvaUY0NWxBdlhiYSUyRlklM0Q for tah.appiancloud.com/suite>, <Cookie __appianCsrfToken=d815e694-2118-4b3e-92c7-6b750b9557d2 for tah.appiancloud.com/suite>, <Cookie __appianMultipartCsrfToken=f80ce677-9adf-409e-a755-89105f51437e for tah.appiancloud.com/suite>]>" # 调整后的正则:匹配__appianCsrfToken=后到空格前的内容 match = re.search(r'__appianCsrfToken\s*=\s*([^\s]+)', cookie_jar) if match: print(match.group(1)) # 输出: d815e694-2118-4b3e-92c7-6b750b9557d2
正则说明:
__appianCsrfToken\s*=\s*:匹配__appianCsrfToken=,并忽略前后可能存在的空格([^\s]+):捕获一个或多个非空格字符(即Token值,因为值后紧跟空格和for)
方案2:若处理实际RequestsCookieJar对象(非字符串)
如果cookie_jar是真实的RequestsCookieJar对象而非字符串,无需正则,直接调用对象方法即可:
from requests.cookies import RequestsCookieJar # 假设cookie_jar是已初始化的RequestsCookieJar对象 csrf_token = cookie_jar.get('__appianCsrfToken') print(csrf_token) # 直接输出目标值
说明
方案1针对字符串形式的CookieJar内容,通过调整正则匹配逻辑准确捕获Token;方案2适用于实际的RequestsCookieJar对象,是更高效且不易出错的方式。
内容的提问来源于stack exchange,提问作者Ajay Kk
相关产品推荐
相关产品推荐

