仅在前面至少有x位数的情况下才能获得数字选择

A. *_*Lau 4 python regex

说我有一个号码:6278041121932517

如果我想得到11219325

我有一个正则表达式:

re.search(r"((1|2)\d{7})", "6278041121932517")
Run Code Online (Sandbox Code Playgroud)

但问题是,它可能以1或2开头.所以我想事先添加一个最小缓冲区,比如4位数.我想到了后视,但它不支持n长度.

Wik*_*żew 5

看来你可能会用

^\d{4,}?([12]\d{7})
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节:

  • ^ - 字符串的开头
  • \d{4,}? - 4位或更多位数,但尽可能少
  • ([12]\d{7}) - 第1组(您的价值):
    • [12]- 1或2
    • \d{7} - 7位数

参见Python演示:

import re
m = re.search(r"^\d{4,}?([12]\d{7})", "6278041121932517")
if m:
    print(m.group(1))
# => 11219325
Run Code Online (Sandbox Code Playgroud)