我有一个看起来像这样的字符串:
"aaa\n\t\n asd123asd water's tap413 water blooe's"
如何使用正则表达式删除除撇号之外的所有转义字符,数字和标点符号?
我对正则表达式很新,如果你能解释每个表达式的含义,如果正则表达式是复杂的话,我会很感激
答案 0 :(得分:4)
您正在寻找一种搜索和替换方法,在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
如果你能解释每个表达的含义
,我将不胜感激
所以,解释:
\\\\
- 匹配一个反斜杠(为什么四个?每个对都会转义Python字符串编译的斜线,这将转换为\\
,这就是你在正则表达式中匹配反斜杠的方法。) / LI>
.
- 匹配除换行符字符以外的任何字符。|
- OR表达式,匹配OR之前的内容。[^...]
- 必须不成为其中一个字符(内部)。a-zA-Z'
- 将a
与z
,A
与Z
,'
或
中的字符匹配。+
- 量词,这里不需要,但最好减少匹配,从而减少执行时间(这将转化为“一个或多个术语落后”)。答案 1 :(得分:1)
import re
snt="aaa\n\t\n asd123asd water's tap413 water blooe's"
"".join(re.findall("[^\n\t\d:.,]+",snt))
答案 2 :(得分:-1)
我不确定您具体浏览的内容,但((\\n|\\t|\.|\ |\,|\;)+)+
可以选择您的规范...在regexr.com