首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用RE正则表达式筛选需求字符组合表达式

使用RE正则表达式筛选需求字符组合表达式

原创
作者头像
用户11552255
发布2026-04-12 06:34:26
发布2026-04-12 06:34:26
720
举报
文章被收录于专栏:PYTHONPYTHON

使用RE正则表达式筛选需求字符组合表达式

工作需要从一些标注里面提取复用段编号,格式如下,字母M,4位或者5位数字,最后一位可能A-D字符。

最开始使用str.find函数来判断字符M存在,并且"-"存在,然后就进行查找提取,提取到不符合要求的组合。无-字符都没有提取出来。

再次使用re.search进行判断和字符位置数字比较,但是没有找到返回None, 然后运行报错。

想到没有找到字符和None直接比较。再进行下一步处理。就可以正常输出符合要求的字符组合了。

详细代码如下

代码语言:javascript
复制
import re          #Python3 标准库,正则表达式处理函数

# 定义ANSI转义序列开始红色文本的代码
red   = '\033[31m'
green = '\033[32m'
blue  = '\033[34m'
# 定义ANSI转义序列结束颜色的代码
c_end = '\033[0m'

test=['test','MS02','MM','M12345----','M1234D----','M67890复用段','M12SS','NCPM']
pattern1 = r'M\d'  #匹配M1  ,字母M以及至少一位数字。 排除只单独字符M.
pattern2 = r'M[0-9]+[ABCD]|M\d+'  #匹配M12345A,M12345B,M12345C,M12345D,或者M12345,M1

print(f"方案一,使用find函数")
for f in test:
    start= f.find("M")
    if start >-1:
        end=f.find("-",start)
        if end>-1 :
            print(f"{red}找到符合复用段:{f[start:end]}{c_end}")

print(f"方案二,使用re.search函数先判断")
for f in test:
    if  re.search(pattern1, f) is  None:
        print(f"没有找到复用段:{f}")
    else:
        print(f"{red}找到符合复用段:{re.search(pattern2, f).group()}{c_end}")

print(f"方案三,使用re.search函数先判断,not")
for f in test:
    if  not re.search(pattern1, f) is  None:
        print(f"{red}NOT 找到符合复用段:{re.search(pattern2, f).group()}{c_end}")
    else:
        print(f"NOT 没有找到复用段:{f}")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档