ISBN 正则表达式及代码示例

文章目录

  • [1. ISBN](#1. ISBN)
  • [2. 正则匹配](#2. 正则匹配)
  • [3. 示例](#3. 示例)

1. ISBN

ISBN(International Standard Book Number)是国际标准图书编号的缩写,是一种用于标识图书的唯一标识符。它是由国际 ISBN 机构(International ISBN Agency)管理的一种国际标准。ISBN 通常用于书籍的出版、销售和库存管理等方面。

以 ISBN-13 为例,由13个数字组成,分为5个部分:

  1. Prefix Element(前缀元素): 通常为978或979,用于表示出版者或国家/地区。
  2. Registration Group(注册组): 由1到5位数字组成,用于表示出版者或出版组织。
  3. Registrant(出版者): 由1到7位数字组成,用于表示特定的出版者。
  4. Publication(出版物): 由1到6位数字组成,用于表示特定出版物。
  5. Check Digit(校验位): 由一位数字或字母组成,用于检验其他部分的准确性。

ISBN 用于帮助唯一标识每一本书,使得图书在国际范围内可以被准确地识别和跟踪。它通常出现在图书的背面或版权页上,以供扫描或手动输入。ISBN 在图书行业中广泛应用,有助于图书销售、库存管理、图书检索等工作的进行。

2. 正则匹配

以下是匹配 ISBN-10 和 ISBN-13 的正则表达式,注意以下不是严谨的匹配规则,仅是验证 ISBN 的必要条件:

  1. ISBN-10 的正则表达式:
python 复制代码
(?:[0-9]+\-?){9}[0-9X]

解释:

  • (?:[0-9]+\-?):这是一个非捕获组,用 (?: ... ) 包围起来。它匹配一个或多个数字 [0-9]+,后面跟着一个可选的连字符 \-?,\- 匹配一个连字符 -,? 表示这个连字符是可选的。
  • {9}:表示前面的非捕获组正好出现9次,即匹配9个数字和可选的连字符的组合。
  • [0-9X]:匹配最后一位的数字或字母 X。这个字符集匹配一个数字 0 到 9 或者是一个大写的字母 X,表示校验位。

包含了9个数字和一个可选的连字符,以及一个数字或字母 X 作为校验位。

  1. ISBN-13 的正则表达式:
python 复制代码
(?:978|979)\-?(?:[0-9]+\-?){10}

解释:

  • (?:978|979):这是一个非捕获组,匹配数字序列978或979,这是ISBN-13号的前缀。
  • \-*:匹配零个或多个连字符。
  • (?:[0-9]+\-?):这是一个非捕获组,匹配一个或多个数字,后面可能跟一个连字符。
  • {10}:表示前面的非捕获组正好出现10次,即匹配10个数字和可选的连字符的组合。

包含了978或979作为前缀,零个或多个连字符,然后是10个数字和可选的连字符。

  1. ISBN-10 加 ISNB-13 的正则表达式
python 复制代码
(?:[0-9]+\-?){9}[0-9X]|(?:978|979)\-?(?:[0-9]+\-?){10}

3. 示例

python 复制代码
isbn_re = "(?:[0-9]+\-?){9}[0-9X]|(?:978|979)\-?(?:[0-9]+\-?){10}"
text = 'This is a sample text with 0-596-52068-9, 0596520689, ISBN-13 978-1-4028-9462-6 and another 9781402894626'
results = re.findall(isbn_re, text)
print(results)

输出:

bash 复制代码
['0-596-52068-9', '0596520689', '978-1-4028-9462-6', '9781402894626']
相关推荐
2601_967979125 分钟前
纯手写:Python安装pip完整教程,搞了几小时,终于成功
python·教程·pip·安装·包管理
Norna24 分钟前
缓存文件从没写出来:一个 .json 被当成目录用了
python
aifannihao3 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
yuyuxun13 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
如夏倾城4 小时前
百度文心(容易被忽略的好用AI)使用方式
人工智能·python·百度·语言模型·dubbo
用户019027581614 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?
python
少司府5 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
打工仔折腾 AI5 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
火云代理5 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
2601_967979127 小时前
Python第七十四讲 异常处理完全精通 try-except零基础保姆级教程
python·异常处理·编程教程·错误处理·try-except