我有一个看起来像这样的字符串:
"aaa\n\t\n asd123asd water's tap413 water blooe's"
如何使用正则表达式去除所有转义字符、数字和标点符号,但保留撇号?
我对正则表达式还不太熟悉,如果正则表达式比较复杂,请您解释一下每个表达式的含义。
我有一个看起来像这样的字符串:
"aaa\n\t\n asd123asd water's tap413 water blooe's"
re#sub()
。''
(空)替换非字母和撇号([^a-zA-Z' ]+
)即可。\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
如能解释每个表达式的含义,我将不胜感激。
因此,解释如下:
\\\\
- 匹配一个反斜杠(为什么是四个?每个对都将转义Python字符串的斜杠进行编译,这将变成一个\\
,这就是您在正则表达式中匹配反斜杠的方法)。.
- 匹配除换行符以外的任何字符。|
- 或表达式,可以匹配前面或后面的内容。[^...]
- 必须不是这些字符之一(在括号内)。a-zA-Z'
- 匹配从a
到z
,从A
到Z
,'
或
的字符。+
- 量词,虽然在此处不是必需的,但有助于减少匹配次数,从而减少执行时间(它将被翻译为“在后面的项中出现一次或多次”)。import re
snt="aaa\n\t\n asd123asd water's tap413 water blooe's"
"".join(re.findall("[^\n\t\d:.,]+",snt))
re
的页面了吗?(https://docs.python.org/3/library/re.html)那里解释得非常清楚,我在做正则表达式相关的工作时都会用它作为参考文档。 - Gunee