Python 正则 findall匹配多条件返回值是元组

a="""$(".palce-fixed").PCCity({
        num: "5",//最大选择个数
        hotCity: "itemid:724,subid:2,subid:28,itemid:725,subid:45,subid:4,itemid:10,itemid:5,itemid:7,itemid:8,itemid:12,itemid:13",//默认显示区域
        hotNum: "18",//默认显示区域最大值
        hotName: "热门地区",//默认显示区域名字
        zIndex: "1",//层数
        valNum: "",//选中区域
        input: "#detailed-place input"//传值得input
    })"""

import re

re.findall("itemid:(.*?),|subid:(.*?),",a)

[('724', ''),
 ('', '2'),
 ('', '28'),
 ('725', ''),
 ('', '45'),
 ('', '4'),
 ('10', ''),
 ('5', ''),
 ('7', ''),
 ('8', ''),
 ('12', ''),
 ('13"', '')]

正则表达式中当没有括号时,就是正常匹配,

正则表达式中有括号()时:有一个括号时,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果;当正则表达式中有两个括号时,其输出是一个list 中包含2个 tuple。

可以使用零宽断言方式提取:

re.findall("(?<=itemid:).*?(?=,)|(?<=subid:).*?(?=,),",a)

['724', '2,', '28,', '725', '45,', '4,', '10', '5', '7', '8', '12', '13"']


版权声明:本文为weixin_42358470原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。