我正在运行这样的代码:
p = re.compile(b'^((?!-)[*A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$')
m = p.match(domain)
&#39;结构域&#39;是来自谷歌DNS的IP地址。我知道解码有问题,所以我在编译后尝试对正则表达式进行编码,但仍然会发现这样的bug,
Traceback (most recent call last):
File "D:\python34\lib\threading.py", line 921, in _bootstrap_inner
self.run()
File "update.py", line 101, in run
if validate_domain(domain):
File "update.py", line 182, in validate_domain
m = pattern.match(domain)
TypeError: can't use a bytes pattern on a string-like object
你能否给我一些关于这种情况的提示
!!!编程语言:python 3.4
答案 0 :(得分:1)
在模式的开头附加b
使其成为字节对象。但是你不能将字符串对象与字节模式匹配。错误很明显:
p = re.compile(b'^((?!-)[*A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$')
# ^
您可能打算使用r''