加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[正则]正则表达式 捕获型括号和非捕获型括号

发布时间:2020-12-14 00:46:01 所属栏目:百科 来源:网络整理
导读:正则表达式 捕获型括号和非捕获型括号 对于括号中的子表达式,正则表达式会将匹配的子表达式进行存储。 问题描述 import rePATH= '/Users/Michael/.../app_stat.sh' CREATE_PATT = '.*?exists.*?(w+(_w+)+)(' with open(PATH) as fr: content = fr.read()

正则表达式 捕获型括号和非捕获型括号

对于括号中的子表达式,正则表达式会将匹配的子表达式进行存储。

问题描述

import re
PATH='/Users/Michael/.../app_stat.sh'
CREATE_PATT = '.*?exists.*?(w+(_w+)+)('
with open(PATH) as fr:
    content = fr.read()
    createPatt = re.compile(CREATE_PATT)
    tables = re.findall(createPatt,content)
    print tables

结果如下:

[('mds_anti_app_stat','_stat'),('mds_anti_app_blacklist','_blacklist'),('mds_anti_app_mail','_mail'),('mds_anti_app_few_follow','_follow'),('mds_anti_app_mail_spamfan','_sp
amfan')]

很显然,我想要的结果是

['mds_anti_app_stat','mds_anti_app_blacklist','mds_anti_app_mail','mds_anti_app_few_follow','mds_anti_app_mail_spamfan']

由于
(_w+)+ 夹杂这一个括号,导致多匹配了一个结果。

解决方案

(_w+)+ 改为 (?:w+)+

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读