关于python中的re模块

时间:2016-07-07 14:45:49

标签: python regex decode encode bytecode

我正在运行这样的代码:

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

1 个答案:

答案 0 :(得分:1)

在模式的开头附加b使其成为字节对象。但是你不能将字符串对象与字节模式匹配。错误很明显:

p = re.compile(b'^((?!-)[*A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$')
#              ^

您可能打算使用r''