我想从字符串(python)中删除除连字符之外的所有非字母数字字符。
如何更改此正则表达式以匹配除连字符之外的任何非字母数字字符?
re.compile('[\W_]')
Thanks.
您可以只使用否定字符类来代替:
re.compile(r"[^a-zA-Z0-9-]")
这将匹配字母数字范围或连字符之外的任何内容。根据您当前的正则表达式,它还匹配下划线。
>>> r = re.compile(r"[^a-zA-Z0-9-]")
>>> s = "some#%te_xt&with--##%--5 hy-phens *#"
>>> r.sub("",s)
'sometextwith----5hy-phens'
请注意,这也替换了空格(这可能正是您想要的)。
Edit:SilentGhost 建议引擎使用量词进行处理可能会更便宜,在这种情况下您可以简单地使用:
re.compile(r"[^a-zA-Z0-9-]+")
The +
只会导致任何连续匹配的字符同时全部匹配(并被替换)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)