我正在编写一个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
我知道我目前无法处理包含空格的字符串,但这超出了这个问题的范围。
我可以使用什么正则表达式来匹配相应的字符串?
答案 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")
试过这个。它正在工作。增加了锚点。