python re findall 的问题帖子来看看帮忙解答

    技术2022-07-10  159

    文本

    2014年以来,我国啤酒行业年产量就进入了下滑通道,2019年全国规模以上啤酒企业累计销量3765.3万千吨生,较2018年的3812.2万千升下降1.23%(数据来源:国家统计局),但降。12736iuq34yi3g

    正则

    1: .*(生产|产量|销量).*[升吨].* 2: .*((生产)|(产量)|(销量)).*[升吨].*

    很奇怪,我想要取出来句子中,前半部分带有“生产”或者“产量”或者“销量”后半部分有“吨”或者“升”的串。文本就是前面的文本。

    第一个正则pattern=re.compile(".*(生产|产量|销量).*[升吨].*") pattern.findall(text) 但是findall却给我取出来这个结果,单单两个字,我人都懵了啦。我后面不是写了[升吨]了吗,怎么给我整没了?['销量'] 第二个正则pattern=re.compile(".*((生产)|(产量)|(销量)).*[升吨].*") pattern.findall(text) 这结果更离谱……我怕不是学了个假的正则表达……[('销量', '', '', '销量')]

    findall之外的函数

    当然除了findall,还有match和search(iter那个不讨论了)。 直接match,是可以match到的。

    pattern=re.compile(".*(生产|产量|销量).*[升吨].*") pattern.match(text).group() '2014年以来,我国啤酒行业年产量就进入了下滑通道,2019年全国规模以上啤酒企业累计销量3765.3万千吨生,较2018年的3812.2万千升下降1.23%(数据来源:国家统计局),但降。12736iuq34yi3g'

    直接search,也是可以search到的。

    pattern.search(text).group() '2014年以来,我国啤酒行业年产量就进入了下滑通道,2019年全国规模以上啤酒企业累计销量3765.3万千吨生,较2018年的3812.2万千升下降1.23%(数据来源:国家统计局),但降。12736iuq34yi3g'

    但局限就在于,他们只能匹配一个。而我是 我全都要啊。 有个办法,就是按句号分割每段话,出来句子列表然后按句匹配。但是看上去挺麻烦,

    有没办法直接正则呢?

    Processed: 0.010, SQL: 9