![](/img/trans.png)
[英]Get regex pattern to match only digits with at least 2 decimal points python
[英]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.