如何删除除26个字母以外的所有字母,以及,()'&“?”!来自Python中的字符串?

如何删除除26个字母以外的所有字母,以及,()'&“?”!来自Python中的字符串?,python,regex,string,parsing,Python,Regex,String,Parsing,我有: string = 'Here it is, your gif! am a bot. [^(Report an issue)] ❤ that bot,I ❤ ur mom **YEET** Make a character class of the things you accept (with []) and invert it (with a leading ^, making it [^stuff]): string = re.sub(r'[^a-zA-Z.,()\'"?! ]+'

我有:

string = 'Here it is, your gif! am a bot. [^(Report an issue)] ❤ that bot,I ❤ ur mom **YEET** Make a character class of the things you accept (with 
[]
) and invert it (with a leading
^
, making it
[^stuff]
):

string = re.sub(r'[^a-zA-Z.,()\'"?! ]+', '', string)

string='这是你的gif!我是一个机器人。[^(报告问题)]❤ 那个机器人,我❤ 你的妈妈**YEET**把你接受的东西做成一个字符类(用
[]
)并把它颠倒过来(用一个前导的
^
,使它成为
[^stuff]
):


将您接受的内容制作一个字符类(使用
[]
)并将其反转(使用前导的
^
,使其成为
[^stuff]
):


将此项用于正则表达式:
[^a-zA-Z?!.,()\'“]+

brakets定义了您希望选择的元素集合,前面的插入符号定义了内部元素的否定

这样就给你留下了


将此项用于正则表达式:
[^a-zA-Z?!.,()\'“]+

brakets定义了您希望选择的元素集合,前面的插入符号定义了内部元素的否定

这样就给你留下了


在字符类中,您不需要逃避大多数标点符号;:“特殊字符在集合中失去其特殊意义。”关于唯一需要转义(或小心放置)的内容是
-
(必须是第一个或转义),
]
(必须是第一个或转义),
^
(只有在第一个位置时必须转义),
\
(如果它可能会进行可识别的转义)以及为字符串选择的引号字符。去掉不必要的反斜杠使它更容易阅读。感谢您指出这一点,我不知道!regex101.com告诉我它是有效的,所以对我来说足够好了^^我更新了答案以反映这一点。谢谢@ShadowRanger,我学到了一些东西!在字符类中,您不需要逃避大多数标点符号;:“特殊字符在集合中失去其特殊意义。”关于唯一需要转义(或小心放置)的内容是
-
(必须是第一个或转义),
]
(必须是第一个或转义),
^
(只有在第一个位置时必须转义),
\
(如果它可能会进行可识别的转义)以及为字符串选择的引号字符。去掉不必要的反斜杠使它更容易阅读。感谢您指出这一点,我不知道!regex101.com告诉我它是有效的,所以对我来说足够好了^^我更新了答案以反映这一点。谢谢@ShadowRanger,我学到了一些东西!谢谢当它允许我的时候,我会给它绿色的支票。但你所说的“反转”是什么意思?“反转它(带前导“^”@Renoldus:通常情况下,字符类匹配其中的任何内容,因此
[a-z]
只匹配小写字母字符。将
^
放在类的开头意味着它匹配所有内容,但不匹配其中的内容,因此
[^a-z]
将匹配除小写字母字符外的所有字符;这是“反转”类匹配的内容集。我明白了。知道这会很方便。谢谢。如果允许,我会给它绿色复选框。但是“反转”是什么意思?“反转它(带前导^”@雷诺德斯:通常情况下,字符类匹配其中的任何内容,因此
[a-z]
只匹配小写字母字符。将
^
放在类的开头意味着它匹配所有内容,但不匹配其中的内容,因此
[^a-z]
将匹配除小写字母字符以外的所有字符;它是“反转”类匹配的东西集。我明白了。知道这会派上用场的。
pattern = r'[^a-zA-Z?!.,()\'" ]+'
string = re.sub(pattern, ' ', string)