簡體   English   中英

用於int的Python正則表達式至少有4位數

[英]Python regex for int with at least 4 digits

我正在學習正則表達式,我在這里有點困惑。 我有一個字符串,我想從中提取一個至少有4位數字且最多7位數的int。 我嘗試了如下:

>>> import re
>>> teststring = 'abcd123efg123456'
>>> re.match(r"[0-9]{4,7}$", teststring)

在那里我期待123456,不幸的是,這根本沒有任何結果。 有人可以幫我一點嗎?

@ExplosionPills是正確的,但你的正則表達式仍然存在兩個問題。

首先, $字符串的結尾匹配。 我猜你也想在字符串的中間提取一個int, 例如 abcd123456efg789返回123456 要解決這個問題,你需要這個:

r"[0-9]{4,7}(?![0-9])"
            ^^^^^^^^^

添加的部分是一個負面的先行斷言 ,意思是“......后面沒有更多的數字。” 讓我通過使用\\d來簡化它:

r"\d{4,7}(?!\d)"

那更好。 現在,第二個問題。 你的正則表達式的左邊沒有約束,所以給定像abcd123efg123456789這樣的字符串,你實際上匹配3456789 所以,你還需要一個負面的lookbehind斷言

r"(?<!\d)\d{4,7}(?!\d)"

.match僅在字符串以模式開頭時匹配。 使用.search

您還可以使用:

re.findall(r"[0-9]{4,7}", teststring)

哪個會返回與你的正則表達式匹配的所有子串的列表,在你的情況下['123456']

如果您只對第一個匹配的子字符串感興趣,那么您可以將其寫為:

next(iter(re.findall(r"[0-9]{4,7}", teststring)), None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM