Python 正则表达式匹配特定长度的数字

Python 正则表达式匹配特定长度的数字,python,regex,Python,Regex,我希望匹配15位数字(作为更大的正则表达式字符串的一部分)。现在,我有 \d\d\d\d\d\d\d\d\d\d\d\d\d\d\d 但是我觉得必须有一种更干净的方法来做到这一点。如果您的正则表达式语言与Perl兼容:\d{15} 在不知道使用此代码段的外部上下文的情况下,很难说出如何处理边缘(这样您就不会意外地抓取额外的数字)。与上下文无关的最终解决方案是: (?<!\d)\d{15}(?!\d) 但是,如果字母紧跟在序列之前或之后,则不起作用。您通常可以按如下方式进行操作: \d{

我希望匹配15位数字(作为更大的正则表达式字符串的一部分)。现在,我有

\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d

但是我觉得必须有一种更干净的方法来做到这一点。

如果您的正则表达式语言与Perl兼容:
\d{15}

在不知道使用此代码段的外部上下文的情况下,很难说出如何处理边缘(这样您就不会意外地抓取额外的数字)。与上下文无关的最终解决方案是:

(?<!\d)\d{15}(?!\d)

但是,如果字母紧跟在序列之前或之后,则不起作用。

您通常可以按如下方式进行操作:

\d{4,7}
这意味着最少4位,最多7位。对于您的特定情况,可以使用单参数变量
\d{15}

这两种形式都受支持,请在该链接中查找文本
{m,n}

请记住,
\d{15}
将匹配行中任意位置的15位数字,包括400位数字。如果您想确保它只有15个,您可以使用如下内容:

^\d{15}$
使用起点和终点锚点的,或

^\D*\d{15}\D*$

允许任意非数字在任意一侧。

我有两种方法来限制数字

使用len

num = 1234
len(str(num)) <= 4
import re
num = 12324
re.match(r'(?:(?<!\d)\d{4}(?!\d))', str(num))
num=1234
len(str(num))

输出将是正则表达式对象或无。

使用内置的python正则表达式库。您的答案是最好的,因为它还允许从较长的字符串中匹配和提取x位数。是的,这是我的问题-我忘了锚定测试。。。。请记住,
$
与换行符匹配;改为使用
\Z
。这允许匹配,但不允许从较长的字符串中提取x位数字。要了解更多信息,请查看
import re
num = 12324
re.match(r'(?:(?<!\d)\d{4}(?!\d))', str(num))