Eri*_*Kim 4 python regex python-3.x
我有一个看起来像这样的字符串:
"aaa\n\t\n asd123asd water's tap413 water blooe's"
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式删除除撇号之外的所有转义字符、数字和标点符号?
我对正则表达式很陌生,如果您能解释每个表达式的含义,如果正则表达式公式很复杂,我将不胜感激
您正在寻找一种搜索和替换方法,在 Python 中应该是re#sub().
只需将非字母和撇号 ( [^a-zA-Z' ]+) 替换为''(nothing)。
- 哦,那转义字符呢?
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)
Run Code Online (Sandbox Code Playgroud)
https://repl.it/repls/ReasonableUtterAnglerfish
如果您能解释每个表达式的含义,将不胜感激
所以,解释:
\\\\- 匹配一个反斜杠(为什么是四个?每一对都会为 Python 字符串的编译转义斜杠,这将变成 a \\which 你如何匹配正则表达式中的反斜杠)。.- 匹配除换行符以外的任何字符。| - OR 表达式,匹配之前或之后的内容。[^...]-不能是这些字符之一(内部)。a-zA-Z' - 匹配从a到z、A到Z、'或的字符 。+ - 量词,这里不需要,但可以减少匹配,从而减少执行时间(这将翻译为“后面的术语出现一次或多次”)。| 归档时间: |
|
| 查看次数: |
8049 次 |
| 最近记录: |