python正则表达式,删除除撇号外的转义字符和标点符号

标签 python regex python-3.x

我有一个看起来像这样的字符串:

"aaa\n\t\n asd123asd water's tap413 water blooe's"

如何使用正则表达式删除撇号以外的所有转义字符、数字和标点符号?

我对正则表达式很陌生,如果你能解释每个表达式的含义,如果正则表达式公式很复杂,我将不胜感激

最佳答案

您正在寻找一种搜索和替换方法,在 Python 中应该是 re#sub()

只需将非字母和撇号 ([^a-zA-Z' ]+) 替换为 ''(无)。

- 哦,那么转义字符呢?
R: 在字符串里面会变成单个字符,比如\n会变成换行符,不是字母也不是'.

相反,如果您实际上已经对字符串中的转义字符进行了转义(例如:"abc\\nefg"),您应该添加一个\\\\.| 在正则表达式的开头,它将匹配反斜杠 + 任何其他字符(因此它将是:\\\\.|[^a-zA-Z' ])

这是工作示例:

import re
s = "aaa\n\t\n asd123asd water's tap413 water blooe's"
replaced = re.sub("[^a-zA-Z' ]+", '', s)
print(replaced)

https://repl.it/repls/ReasonableUtterAnglerfish


Would appreciate it if you can explain what each expression means

所以,解释:

  • \\\\ - 匹配一个反斜杠(为什么是四个?每对都将转义 Python 字符串编译的斜杠,这将变成 \\ 这是如何匹配正则表达式中的反斜杠)。
  • . - 匹配除换行符字符之外的任何字符。
  • | - OR 表达式,匹配之前或之后的内容。
  • [^...] - 必须NOT是这些字符之一(内部)。
  • a-zA-Z' - 匹配从 az,从 A 的字符Z'
  • + - 量词,此处不需要,但有助于减少匹配,从而减少执行时间(这将翻译为“后面的术语出现一次或多次”)。

关于python正则表达式,删除除撇号外的转义字符和标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47561298/

相关文章:

python - 绘图、图形和标题函数错误

PHP正则表达式定界符,有什么意义?

php - 如何使用php正则表达式

Python Title Case,但保留预先存在的大写

python - python中堆叠图像时出现ValueError

Python - 将 x 行 csv 文件写入 json 文件

python - 如何以编程方式创建像 z3c.form 那样的详细事件?

python - 网址设计 : ways to hide pk/id from url

python - 在 Python 中分隔字符串,排除一些包含分隔符的元素

python-3.x - 如何只匹配一次出现的双倍空格?