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']
相关推荐
ServBay3 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户8356290780514 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户8356290780514 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
荣码12 小时前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780511 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟1 天前
乐企版式文件生成平台
java·后端·python
学测绘的小杨2 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3102 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐2 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱3 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构