如何用Regex从文件路径中提取指定格式的零件编号?
提取零件编号的正则解决方案
直接用这个正则表达式就能精准匹配你要的零件编号:
([A-Z0-9]{3}-[A-Z0-9]{2}-[A-Z0-9]{2}-[A-Z0-9]{3})(?=\sOP\d+\s?(RAN)?\.NC)
规则解释
([A-Z0-9]{3}-[A-Z0-9]{2}-[A-Z0-9]{2}-[A-Z0-9]{3}):捕获组,严格匹配XXX-XX-XX-XXX格式,[A-Z0-9]限定为大写字母和数字(需要支持小写的话,在正则末尾加i修饰符即可),数字对应各段的长度要求。(?=\sOP\d+\s?(RAN)?\.NC):正向预查,确保匹配的零件号后跟着固定格式后缀:\s:匹配空格OP\d+:匹配OP加任意位数的数字(比如OP1、OP100)\s?:可选的空格(RAN)?:可选的RAN字符串\.NC:匹配.NC后缀
示例验证
针对不同场景的路径都能正确提取:
- 原路径:
\D6-DC\Users$\name\Profile\Desktop\New folder\XXX-XX-XX-XXX OP1 RAN.NC→ 提取结果:XXX-XX-XX-XXX - 无RAN的路径:
\some\path\ABC-12-34-567 OP5.NC→ 提取结果:ABC-12-34-567 - 长数字OP的路径:
\foo\bar\XYZ-AB-CD-EFG OP123 RAN.NC→ 提取结果:XYZ-AB-CD-EFG
代码示例(Python)
import re file_path = r"\D6-DC\Users$\name\Profile\Desktop\New folder\XXX-XX-XX-XXX OP1 RAN.NC" regex_pattern = r"([A-Z0-9]{3}-[A-Z0-9]{2}-[A-Z0-9]{2}-[A-Z0-9]{3})(?=\sOP\d+\s?(RAN)?\.NC)" match_result = re.search(regex_pattern, file_path) if match_result: print("提取到的零件编号:", match_result.group(1))
内容的提问来源于stack exchange,提问作者Maru
相关产品推荐
相关产品推荐

