如何在正则表达式中匹配n次的倍数

时间:2014-10-23 11:31:13

标签: python regex binary

我正在编写一个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

我知道我目前无法处理包含空格的字符串,但这超出了这个问题的范围。

我可以使用什么正则表达式来匹配相应的字符串?

2 个答案:

答案 0 :(得分:2)

问题只是你没有锚定你的正则表达式。如果您在最后添加了$,那么它就可以执行您想要的操作。

答案 1 :(得分:1)

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")

试过这个。它正在工作。增加了锚点。