我的数据格式如下:
ISBN: 9783295359
如何使用正则表达式仅隔离数字9783295359? 我只需要这个号码,所以我需要排除“ISBN:”。
答案 0 :(得分:2)
试试这个RegEx:
ISBN:\s*(\d+)
数据存储在第一个捕获组中。为了使其更安全,请在末尾添加$
工作原理:
ISBN: # (ISBN:)
\s* # Optional Whitespace
(\d+) # Capture Digits
请注意,您可以将其缩短为(\d+)
(因为唯一的数字位数是您要提取的数字),或者稍微更安全(\d+)$
(以确保数字出现在字符串的结尾)
最安全的版本是:
ISBN:\s*(\d{10})$
{10}
指定10
位数,即相当于\d\d\d\d\d\d\d\d\d\d
如果由于某种原因无法从一个捕获组获取数据,或者只是想要更短的代码,则可以使用Positive Lookbehind来不选择ISBN:
部分。您可能需要将ISBN:\s*
部分更改为:
(?<=ISBN:\s)
请注意,这只会在:
和ISBN号之间留出一个空格。此外,此方法仅在您使用 PCRE 时有效( P 伯尔 C ompatible R egular E 强> Xpressions的)。您还可以删除()
\d+
答案 1 :(得分:0)
您使用简单的正则表达式提取此内容。请参阅下面的PCRE示例。
(?<=ISBN:\s)(\d+)
此正则表达式将排除ISBN:
并仅捕获数字部分。