专利号示例:
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