我有一个看起来像这样的字符串:
"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'
- 匹配从a
到z
,从A
到的字符Z
、'
或+
- 量词,此处不需要,但有助于减少匹配,从而减少执行时间(这将翻译为“后面的术语出现一次或多次”)。
关于python正则表达式,删除除撇号外的转义字符和标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47561298/