Python正则:如何用同名分组匹配不同条件解析Cookie头
合并正则表达式中互斥的命名分组
完全可以实现,直接把原本分在两个分支里的value捕获逻辑合并到同一个(?P<value>)命名分组中就行——因为带引号和不带引号的分支是互斥的,不会同时匹配,所以不会出现分组值冲突的问题。
修改后的正则如下:
((?P<name>\w+)(=(?P<value>"[\w;,#\.\/\\=]+"|[\w#\.\/\\]+))?)[;,]?
简单解释下改动:
- 移除了原来的
(?P<value1>)和(?P<value2>)两个分组 - 把整个「引号包裹值」「无引号值」的分支,直接放到同一个
(?P<value>)分组内部 - 这样不管匹配的是带引号还是不带引号的value,结果都会被捕获到
value这个统一的命名分组里,和原来的匹配逻辑完全一致,但分组更简洁。
内容的提问来源于stack exchange,提问作者Woody1193
相关产品推荐
相关产品推荐

