我正在尝试使用re.sub从Python中的此字符串中删除符号:
re.sub(r"(?![a-z0-9])", "_", "some:long:str-:that:can't+have+symbols".lower())
我正在寻找的答案是:
some_long_str__that_can_t_have_symbols
但是它不起作用。我绝对可以使用findall()然后使用join()匹配字母数字字符以创建一个新字符串,但这完全消除了该字符,因此我最终编写了一些效率低下的for循环。
我认为问题在于我如何否定自己的表达。有什么想法吗?
答案 0 :(得分:1)
使用方式:
import re
result = re.sub(r"([^a-z0-9])", "_", "some:long:str-:that:can't+have+symbols".lower())
print(result)
输出:
some_long_str__that_can_t_have_symbols