如何使用正则表达式捕获未指定长度的前几个数字?

时间:2012-07-28 20:54:40

标签: python regex

我有一些未指定的长度,后跟一个15位数字。

例如:

(未指定长度的随机数)+ 15位数 - > 3 + 15位数字

(未指定长度的随机数)+ 15位数 - > 32831 + 15位数字

(未指定长度的随机数)+ 15位数 - > 31 + 15位数字

我可以在Python中使用RegEx捕获“第1部分”(长度不确定)和最后15位数字作为“第2部分”吗?

3 个答案:

答案 0 :(得分:7)

在我看来,你需要的是除了最后15个字符之外的所有内容,为什么要使用正则表达式来执行这个简单的任务?我们可以简单地获取字符串的一部分(如果它之前是一个数字,只需转换为字符串,执行此操作,然后转换回来):

>>> a = "3123456789123456" #3 + 15 digit number
>>> (a[:-15], a[-15:])
('3', '123456789123456')
>>> a = "32831123456789123456" #32831 + 15 digit number
>>> (a[:-15], a[-15:])
('32831', '123456789123456')
>>> a = "31123456789123456" #31 + 15 digit number
>>> (a[:-15], a[-15:])
('31', '123456789123456')

很好,也很容易。

答案 1 :(得分:2)

试试这个正则表达式:

^(\d+)(\d{15})$

说明:

^      Start of string
$      End of string
\d     Any digit
{15}   Repeat 15 times
+      Repeat one or more times.
(...)  Capturing group

答案 2 :(得分:2)

当然,请使用正则表达式(\d*)(\d{15})或过度使用(?<!\d)(\d*)(\d{15})(?!\d)