[英]How do I match to a multiple of a n times in regex
我正在編寫一個python程序,將二進制轉換為十六進制,然后將十六進制轉換為二進制(這是一項學習工作,不勝枚舉),為了確定我要傳遞給函數的字符串是否格式正確,我正在針對正則表達式進行檢查。
我目前正在嘗試匹配4位二進制格式10101010...
任何內容,因此,任意4位n次。 我正在嘗試使用的正則表達式是
([01]{4})+
但是,這允許字符串的長度不是4的倍數。 “整個”功能是
def biToHex(biStr):
biRegex = "([01]{4})+"
if bool(re.match(biRegex, biStr)) == 0:
return "BIN NOT FOUND"
nibbles = [biStr[i:i+4] for i in range(0, len(biStr), 4)]
print nibbles
我知道我目前無法處理包含空格的字符串,但這超出了此問題的范圍。
我可以使用什么正則表達式來匹配適當的字符串?
問題很簡單,就是您沒有錨定正則表達式。 如果您在末尾添加了$
,那么它會做您想要的。
def biToHex(biStr):
biRegex = "^([01]{4})+$"
if bool(re.match(biRegex, biStr)) == 0:
return "BIN NOT FOUND"
nibbles = [biStr[i:i+4] for i in range(0, len(biStr), 4)]
print nibbles
print biToHex("010101011010")
嘗試了這個,它正在工作,添加了錨點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.