簡體   English   中英

我如何在正則表達式中匹配多次

[英]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.

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