python - 特殊字符不被正则表达式替换

标签 python regex python-2.7

我正在尝试从字符串中过滤一些特殊字符,并且使用以下代码和正则表达式条件。

我原以为它会过滤掉除 -+# 之外的所有字符,但还有一些字符没有被过滤。

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/

相关文章:

python - Django + Uvicorn

c# - 提取单词仅包含给定字符串中的字母数字

python - 使用正则表达式标记最短的重叠匹配

python - which 和 type 在 vi​​rtualenv 中显示 IPython 可执行文件的不同路径,在 IPython 中导入失败,在标准解释器中导入成功?

python - 从模型实例列表中删除重复项

python - 如何用漂亮的汤跳过<span>

python - 如何格式化字符串以在 Python 中使用 mysqldb 进行查询?

javascript - 如何从字符串中删除空格和一组字符

python - Python 中的混洗位

python - python 如何正确使用2to3?