python正则表达式匹配专利号

专利号示例:
CN109583349-A 、US2020258388-A1、WO2020164484-A1、US8055018-B2、TW331307-B1

分析:
前两位为字母,中间为长度6–11的数字,借一个横杠-,再加一位字母和数字(可选)
正则表达式

re = [A-Z]{2}\d{5,13}\-[A-Z](\d){0,1}

表达式分析:

  • [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。
  • {2}表示2位字母
  • \d 表示匹配一个数字字符,等价于0–9
  • {5,13}表示 数字字符串长度最短为5,最长为13.
  • 横杠 -
  • [A-Z] 再匹配一位字母

实例展示:

import re
pn_re = re.compile(r'[A-Z]{2}\d{5,13}\-[A-Z]\d{0,1}', re.S)  #利用compile函数定义用于匹配的正则表达式对象
str_test = 'EP3771993-A1 -- CN109104464-A   UNIV SOUTHEAST (UYSE)   JIN J,  LI Y,  LUO J,  XIONG R;  FR3099613-A1 -- CN109104464-A   UNIV SOUTHEAST (UYSE)   JIN J,  LI Y,  LUO J,  XIONG R'
result = re.findall(pn_re,str_test)  #利用findall方法,找出所有匹配的字符串,并以列表的格式返回
print(result)  
# ['EP3771993-A1', 'CN109104464-A', 'FR3099613-A1', 'CN109104464-A']

如果文章对你有帮助的话,麻烦点一个赞!
python 在线正则表达式测试网站:https://c.runoob.com/front-end/854/
参考
[1] https://ask.csdn.net/questions/715375
[2] https://www.runoob.com/python3/python3-reg-expressions.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值