仅在正则表达式中排除非字母数字字符

时间:2018-10-22 22:33:44

标签: regex regex-negation

我正在尝试使用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循环。

我认为问题在于我如何否定自己的表达。有什么想法吗?

1 个答案:

答案 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