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

时间:2017-11-29 20:30:10

标签: python regex python-3.x

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

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

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

我对正则表达式很新,如果你能解释每个表达式的含义,如果正则表达式是复杂的话,我会很感激

3 个答案:

答案 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'  - 将azAZ' 中的字符匹配。
  • + - 量词,这里不需要,但最好减少匹配,从而减少执行时间(这将转化为“一个或多个术语落后”)。

答案 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

中尝试自己的正则表达式
相关问题