正则表达式提取需求:匹配No开头的数字及后续字母(下划线结尾)
正则表达式解决方案
需求明确
你需要提取的子串需满足:
- 以
No开头,大小写不敏感(no/NO/No均有效) - 必须紧跟至少一个数字
- 数字后若有字母,需将字母一并提取
- 结合你提供的新旧字符串结构,目标子串通常以上划线
_作为前缀
正确正则表达式
.*?_((?i)No\d+[a-z]*).*
正则解析
.*?_:匹配任意字符直到倒数第一个下划线,确保定位到目标子串的前缀分界(?i)No:开启不区分大小写匹配,覆盖所有No的大小写变体\d+:匹配至少一个数字,满足数字序列的核心要求[a-z]*:匹配0个或多个字母(数字后的字母可选,存在则完整提取)- 括号
():将符合要求的目标子串捕获为分组1,直接提取该分组即可得到结果
测试验证
用你的新字符串测试:
test674.re_test_no3243.ffe→ 提取结果:no3243test238.re_test_no1253e.jfe→ 提取结果:no1253etest_43.e_test_no535264→ 提取结果:no535264
旧字符串同样适配:
test352532_No223→ 提取结果:No223test123_no32_fer→ 提取结果:no32
灵活调整
如果目标子串不一定以上划线为前缀,可简化正则为(?i)No\d+[a-z]*,直接匹配所有符合规则的子串即可。
内容的提问来源于stack exchange,提问作者lemurdroid
相关产品推荐
相关产品推荐

