【发布时间】:2018-10-22 22:33:44
【问题描述】:
我正在尝试使用 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 循环。
我认为问题在于我如何否定我的表达。有什么想法吗?
【问题讨论】:
-
试试这个
[^a-z0-9]+ -
你为什么要使用前瞻而不是仅仅匹配你想要的?
标签: regex regex-negation