python正则表达式处理括号

时间:2018-02-01 23:28:32

标签: python regex

string = '1f23wsedrfth 567tgyh112'
expectedChecksum = re.search( "[0-9a-f]{5}",string ).group(0)


 Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: 'NoneType' object has no attribute 'group'

为什么会导致错误?我认为expectChecksum应该是'1f23w'

我使用{4}尝试了以下代码,然后就可以了。

expectedChecksum = re.search( "[0-9a-f]{4}",string ).group(0)
expectedChecksum
'1f23'

2 个答案:

答案 0 :(得分:0)

在你的正则表达式中,你检查从a到f的字符,但在你的字符串中有一个w在第5位。这可能会导致错误。 当你尝试使用{4}时,你没有为w做错,所以它不会抛出错误。

答案 1 :(得分:0)

数字0-9和字母a-f的字符串是唯一与您指定的正则表达式[0-9a-f]匹配的字符串。因此,search function在评估与您的正则表达式不匹配的字符串时会返回NoneType object,因为group没有属性Nonetype object,因此会引发错误

我猜你想要的正则表达式是[0-9a-z],除非会有更复杂的组合和排序。

您可以使用pythex进一步测试正则表达式,以查看与正则表达式匹配的字符串。