正则表达式从“ISBN:9783295359”中提取数字

时间:2016-03-29 15:46:25

标签: regex

我的数据格式如下:

ISBN: 9783295359

如何使用正则表达式仅隔离数字9783295359? 我只需要这个号码,所以我需要排除“ISBN:”。

2 个答案:

答案 0 :(得分:2)

正常版

试试这个RegEx:

ISBN:\s*(\d+)

数据存储在第一个捕获组中。为了使其更安全,请在末尾添加$

Live Demo on RegExr

工作原理:

ISBN:    # (ISBN:)
\s*      # Optional Whitespace
(\d+)    # Capture Digits

最简单的版本

请注意,您可以将其缩短为(\d+)(因为唯一的数字位数是您要提取的数字),或者稍微更安全(\d+)$(以确保数字出现在字符串的结尾)

Live Demo on RegExr

最安全的版本

最安全的版本是:

ISBN:\s*(\d{10})$

{10}指定10位数,即相当于\d\d\d\d\d\d\d\d\d\d

Live Demo on RegExr

如果由于某种原因无法从一个捕获组获取数据,或者只是想要更短的代码,则可以使用Positive Lookbehind来不选择ISBN:部分。您可能需要将ISBN:\s*部分更改为:

(?<=ISBN:\s)

请注意,这只会在:和ISBN号之间留出一个空格。此外,此方法仅在您使用 PCRE 时有效( P 伯尔 C ompatible R egular E Xpressions的)。您还可以删除()

周围的\d+

Live Demo on Regex101

答案 1 :(得分:0)

您使用简单的正则表达式提取此内容。请参阅下面的PCRE示例。

(?<=ISBN:\s)(\d+)

此正则表达式将排除ISBN:并仅捕获数字部分。

请参阅https://regex101.com/r/zK1uM9/1

上的演示