我已經編寫了這個正則表達式來匹配上述范圍內的數字,但它不能正常工作,例如它匹配“00”和“64”,但我不明白為什么。我的邏輯是“0 或 9 之間的數字”或“10-59 之間的數字”或“60-63 之間的數字”。import redef six_bit_number(n): if re.match("([0-9]|[1-5][0-9]|6[0-3])", str(n)): return True return False
3 回答

叮當貓咪
TA貢獻1776條經驗 獲得超12個贊
re.match
在輸入的開頭查找匹配項,但不介意匹配項后是否還有文本。您可以添加一個錨點以確保它也檢查字符串的結尾:
r"([0-9]|[1-5][0-9]|6[0-3])\Z"

瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
試試下面的正則表達式:
^([0-9]|[1-5][0-9]|(6[0123]))$ [Include Global and Multiline flag]
正則表達式的理解:
[0-9]--> 匹配從 0 到 9 的單個數字
[1-5][0-9]--> 匹配從 10 到 59 的雙位數
(6[0123])--> 匹配 60、61、62 和 63
添加回答
舉報
0/150
提交
取消