如何使用正则表达式提取文本中的工单编号?
解决正则提取工单编号的问题
问题分析
你的正则表达式存在几个语法错误,导致报错:
- 匹配数字的
d需要转义成\d,否则会匹配字母d - 正则末尾多了一个多余的右括号
- 没有匹配文本中的
#符号 {7}后不需要加+,{7}已经指定了匹配7次数字- 字符串引号使用了HTML实体
",在Python代码里应该用普通的单引号或双引号
修正后的正则表达式
针对目标文本TICKET #IM40135514 OPENED,正确的正则写法可以是:
import re filetext = "TICKET #IM40135514 OPENED" number = re.findall(r"TICKET #(\w{2}\d{7})", filetext) print(number) # 输出: ['IM40135514']
正则说明
r"...":使用原始字符串避免转义字符冲突TICKET #:精准匹配文本中的固定前缀(\w{2}\d{7}):捕获组,提取2个字母+7个数字的工单编号\w{2}:匹配2个字母、数字或下划线(这里对应工单的前缀IM)\d{7}:匹配7位数字
额外说明
你给出的预期结果是IM40133514,但原文本中的工单编号是IM40135514,如果是笔误可以忽略;如果确实需要提取IM40133514,需要确认文本内容是否正确。
内容的提问来源于stack exchange,提问作者marina
相关产品推荐
相关产品推荐

