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']
相关推荐
jz_ddk7 小时前
[指南] UltraEdit正则表达式完全指南
正则表达式·ultraedit
CeshirenTester8 小时前
9B 上端侧:多模态实时对话,难点其实在“流”
开发语言·人工智能·python·prompt·测试用例
Starry_hello world8 小时前
Python (2)
python
ID_180079054738 小时前
Python爬取京东商品库存数据与价格监控
jvm·python·oracle
-To be number.wan10 小时前
Python数据分析:时间序列数据分析
开发语言·python·数据分析
Faker66363aaa10 小时前
YOLO13-C3K2-AdditiveBlock:水果质量智能检测系统_3
python
2401_8288906411 小时前
实现扩散模型 Stable Diffusion - MNIST 数据集
人工智能·python·深度学习·stable diffusion
jz_ddk11 小时前
[指南] Python循环语句完全指南
开发语言·python·continue·循环·for·while·break
Evand J11 小时前
【Python代码例程】长短期记忆网络(LSTM)和无迹卡尔曼滤波(UKF)的结合,处理复杂非线性系统和时间序列数据
python·lstm·滤波
workflower12 小时前
易用性和人性化需求
java·python·测试用例·需求分析·big data·软件需求