我正在尝试从字符串中过滤一些特殊字符,并且使用以下代码和正则表达式条件。
我原以为它会过滤掉除 -
、+
和 #
之外的所有字符,但还有一些字符没有被过滤。
text = "This is a long string~!@#$%^&*()_+|\=-{}[];':<>?with special characters"
print sub(r'[^a-zA-Z0-9 -+#]+', '', text)
显示的结果是:
This is a long string!#$%&*()+'with special characters
我预计打印出来的内容是:
This is a long string with #+- special characters
任何人都可以解释为什么会发生这种情况以及我如何纠正我的正则表达式或代码以过滤掉剩余的字符?
最佳答案
您不得在字符类中间使用未转义的连字符,请使用:
print re.sub(r'[^a-zA-Z0-9 +#-]+', '', text)
关于python - 特殊字符不被正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285866/