我想我在这里错过了一些简单的东西。这有效:
line = b"hello 001-02-0003 sir"
regex_search1 = re.compile(b"([^0-9_-]|^)\d{3}-\d{2}-\d{4}([^0-9_-]|$)")
line = re.subn(regex_search1, b"\\1XXX-XX-XXXX\\2", line)
print (line)
请注意' b',这一切都很有效。我现在需要从函数中获取正则表达式:
theregex = get_regex_ssn()
regex_search1 = re.compile(theregex)
line = re.subn(regex_search1, b"\\1XXX-XX-XXXX\\2", line)
print (line)
功能get_regex_ssn()
我无法控制且无法改变,但它实际上只是上述正则表达式的字符串:
([^0-9_-]|^)\d{3}-\d{2}-\d{4}([^0-9_-]|$)
所以我得到了可怕的错误:
TypeError: cannot use a string pattern on a bytes-like object
所以我的问题是这个......我现在如何沿着这些方向做点什么?
regex_search1 = re.compile(b,theregex) #clearly isn't the right syntax