Python 正则表达式匹配特定长度的数字
我希望匹配15位数字(作为更大的正则表达式字符串的一部分)。现在,我有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{
\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))