正则表达式替换python中的多个标点符号

时间:2016-01-27 15:39:16

标签: python regex

我想找到多次出现感叹号,问号和句点(例如!!?!...?...!)并将其替换为最后一个标点符号。

即。 !?!?!?将成为?

....!将成为!

这可能吗?

2 个答案:

答案 0 :(得分:3)

text = re.sub(r'[\?\.\!]+(?=[\?\.\!])', '', text)

也就是说,删除任何?!.个字符序列,这些字符将跟随另一个?!.字符。

[...]是一个字符类。它匹配括号内的任何字符。

+表示“其中一个或多个”。

(?=...)是一个先行者。它看起来会看到字符串中接下来会发生什么。

答案 1 :(得分:0)

text = re.search('[.?!]*([.?!])', text).group(1)

这种方法的工作方式是括号创建捕获组,允许您通过group函数访问匹配的文本。