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']
相关推荐
笨鸟先飞,勤能补拙4 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能5 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂5 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study6 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境6 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境6 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1236 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102167 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb007 小时前
一个项目带你入门AI应用开发01
python
0566468 小时前
Python康复训练——常用标准库
开发语言·python·学习