尝试这个:
def digit_match_greater(n):
digits = str(n)
variations = []
# Anything with more than len(digits) digits is a match:
variations.append(r"\d{%d,}" % (len(digits)+1))
# Now match numbers with len(digits) digits.
# (Generate, e.g, for 15, "1[6-9]", "[2-9]\d")
# 9s can be skipped -- e.g. for >19 we only need [2-9]\d.
for i, d in enumerate(digits):
if d != "9":
pattern = list(digits)
pattern[i] = "[%d-9]" % (int(d) + 1)
for j in range(i+1, len(digits)):
pattern[j] = r"\d"
variations.append("".join(pattern))
return "(?:%s)" % "|".join("(?:%s)" % v for v in variations)
事实证明,让它匹配大于参数的数字更容易,所以如果你给它 15,它会返回一个匹配数字 16 和更大的字符串,特别是......
(?:(?:\d{3,})|(?:[2-9]\d)|(?:1[6-9]))
然后,您可以将其替换为您的表达式,而不是\d+
,如下所示:
exp = re.compile(r"page%s\.html" % digit_match_greater(last_page_visited))