基于双模式匹配截取子串:提取TestAPIurl后首个sessionId的正则实现问题
解决方案
正则调整逻辑
要先定位到首次出现的TestAPIurl,再向后非贪婪匹配到第一个sessionId后捕获对应值,同时开启单行匹配模式(让.可以匹配换行符,兼容日志里的换行场景)。
调整后代码
import re # 开启re.S(DOTALL)模式,让.匹配包括换行在内的所有字符 m = re.search(r'TestAPIurl.*?sessionId"\s*:\s*"([^"]+)', file, flags=re.S) if m: target_session_id = m.group(1)
正则说明
TestAPIurl:锚定到首次出现的目标字符串位置.*?:非贪婪匹配任意字符(配合re.S匹配换行),保证不会跳过第一个sessionId匹配到更靠后的内容sessionId"\s*:\s*":匹配sessionId键名,兼容前后任意数量的空格([^"]+):捕获组1,匹配所有非双引号的字符,精准提取sessionId值,不会误匹配双引号外的内容
额外提示
如果你的file变量是bytes类型,匹配前先执行file = file.decode('utf-8')解码为普通字符串。
内容的提问来源于stack exchange,提问作者Dick McManus
相关产品推荐
相关产品推荐

