ISBN 正则表达式及代码示例

news/2024/4/30 5:51:56/文章来源:https://blog.csdn.net/qq_36803941/article/details/137581465

文章目录

  • 1. ISBN
  • 2. 正则匹配
  • 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 的正则表达式:
(?:[0-9]+\-?){9}[0-9X]

解释:

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

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

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

解释:

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

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

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

3. 示例

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)

输出:

['0-596-52068-9', '0596520689', '978-1-4028-9462-6', '9781402894626']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1046028.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据应用OneID:ID-Mapping Spark GraphX实现

前言 说明 以用户实体为例,ID 类型包含 user_id 和 device_id。当然还有其他类型id。不同id可以获取到的阶段、生命周期均不相同。 device_id 生命周期通常指的是一个设备从首次被识别到不再活跃的整个时间段。 user_id是用户登录之后系统分配的唯一标识&#xff…

3D数据发布工具HOOPS Publish如何将3D模型转换成PDF格式?

在现代科技发展的推动下,3D技术在各个行业中扮演着越来越重要的角色。从工程设计到医疗保健,从建筑规划到教育培训,3D模型都成为了理解、沟通和展示复杂数据的主要工具。而将这些3D模型转换成PDF格式,能够使其更易于共享、存档和展…

配置交换机端口安全

1、实验目的 通过本实验可以掌握: 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法。 2、实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 3、实验步骤 &#xff…

nginx配置证书和私钥进行SSL通信验证

文章目录 一、背景1.1 秘钥和证书是两个东西吗?1.2 介绍下nginx配置文件中参数ssl_certificate和ssl_certificate_key1.3介绍下nginx支持的证书类型1.4 目前nginx支持哪种证书格式?1.5 nginx修改配置文件目前方式也会有所不同1.6 介绍下不通格式的证书哪…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.3 月末操作:外币评估

2.6.3 月末操作:外币评估 企业的外币业务在记账时一般使用期初的汇率或者即时汇率,但在月末,需要按照月末汇率对外币的余额或者未清项进行重估(revaluation)。 企业在资产负债表日,应当按照下列规…

【springboot开发】Gradle VS Maven

前言: java构建工具的主要作用是依赖管理和构建的生命周期管理。gradle和maven是目前java中最流行的两个构建工具,springboot常用maven,Android studio使用gradle。 目录 1. 简介2. Maven2.1 安装2.2 依赖管理2.3 构建生命周期管理 3. Gradle…

VirusTaxo:病毒物种注释

https://github.com/omics-lab/VirusTaxo 安装 git clone https://github.com/omics-lab/VirusTaxo mamba create -n VirusTaxo python3.10 mamba activate VirusTaxo cd VirusTaxo python3 -m venv environment source ./environment/bin/activate pip install -r require…

SpringCloud系列(2)--SpringCloud和SpringBoot技术选型

前言:SpringCloud是微服务架构的一揽子解决方案,SpringBoot是一种技术,要使用SpringCloud,也需要使用到SpringBoot,所以要使用SpringCloud时,必须也要考虑到SpringBoot的适配问题 1、查看SpringCloud和与之…

最好的 iPhone 解锁器解决方案功能、优点和缺点

现最受好评的 iPhone 解锁器,例如 奇客解锁、iPassGo 等。深入了解它们的优缺点和兼容性,以做出明智的决定。了解如何解锁 iPhone 并解决有关解锁方法、PIN 绕过和潜在风险的常见问题。 1、奇客手机解锁 奇客手机解锁是一款适用于 iOS 的多功能解锁工具…

2024春算法训练4——函数与递归题解

一、前言 感觉这次的题目都很好,但是E题....(我太菜了想不到),别人的题解都上百行了,晕; 二、题解 A-[NOIP2010]数字统计_2024春算法训练4——函数与递归 (nowcoder.com) 这种题目有两种做法:…

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中,关键词布局是一个至关重要的环节。首先,我们需要确定核心关键词,然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后,接下来的任务就是对这些扩展后的关键词进行筛选。那么,如何进行有效的…

pytorch3d、Detectron2编译安装

基础环境: python:3.6 ubuntu:18.04 pytorch:1.8 cuda:10.2 一、pytorch3d编译 官方指南 GitCode - 开发者的代码家园 注意:cuda11以下的版本,需要安装CUB libaray,cuda11以上的版…

开源项目one-api的k8s容器化部署(上)-- 制作镜像及部署准备

一、背景 最近需要对开源项目one-api进行k8s容器化部署,主要分以下几个步骤: 制作docker镜像申请mysql和redis数据库docker-compose部署方式k8s部署方式 整个的篇幅比较长,将会分成上下两篇来阐述。 二、制作docker镜像 开源项目one-api…

Idea集成Docker的快捷部署

Idea集成Docker的快捷部署 配置Docker远程访问1.1 修改 `/lib/systemd/system/docker.service`1.2 替换`ExecStart`1.3 重启docker服务1.4 监听端口是否被占用1.5 服务器防火墙开启2375端口1.6 测试配置IDEA2.1 下载docker插件2.2 添加docker连接2.3 配置容器镜像加速器2.4 配置…

Gradle 在 Spring 中的使用ApiHug准备-工具篇-006

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

Redis Cluster集群模式

目录 一、理论 1.1 概念 1.2 集群的作用 1.3 redis集群的数据分片 1.4 Redis集群的主从复制模型 二、实践 2.1 Redis集群模式的搭建 2.1.1 cluster集群前期工作 2.1.2 开启群集功能 2.1.3 启动redis节点 2.1.4 启动集群 2.2 测试集群 总结 一、理论 1.1 概念 集群&a…

vulhub之Webmin篇

Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 影响版本&…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况: ①OOM:内存溢出,是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出&#xff0c…

自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南

文章目录 一、构建方法1、api/request.js2、api/requestHandler.js3、api/index.js 二、测试方法1、api/axios.js2、main.js3、app.vue4、vue.config.js5、index.html 三、打包1、配置package.json2、生成库包3、配置发布信息4、发布 四、使用1、安装2、使用 五、维护1、维护和…

基于FPGA的DDR相关知识导航界面

个人觉得想要真正理解DDR,那就要从SDRAM入手,SDRAM读写控制器也可以作为入门FPGA的一个判断标准,说实话I2C、UART、SPI这些接口难度太低了,会写这些接口说明不了什么。 很常见的问题,现在DDR3、SDRAM、DDR4官方都有IP&…