匹配一个句子

时间:2013-09-26 06:47:14

标签: python regex

我希望将一些文字剪成句子。

我希望匹配所有文本,直到:一个句点后跟一个空格,一个问号后跟一个空格或一个感叹号,后跟一个空格,以非贪婪的方式。

此外,标点符号可以在字符串的最后找到,或者后面跟一个/ r / n。

这几乎可以做到:

([^\.\?\!]*)

但是我错过了表达式中的空格。我该如何解决这个问题?

示例:

I' a.m not. So? Sure about this! Actually.应该给:

I' a.m not
So
Sure about this
Actually

4 个答案:

答案 0 :(得分:2)

您可以使用positive lookahead assertions来实现此类条件。

[^.?!]+(?=[.?!] )

here on Regexr

当您查看演示时,没有跟随空格的行末尾的句子不匹配。您可以通过alternation添加Anchor $并使用修饰符m(使$匹配行的结尾)来解决此问题:

[^.?!]+(?=[.?!](?: |$))

here on Regexr

答案 1 :(得分:1)

试试这个:

(.*?[!\.\?] )

。*全部,

[]是这些字符中的任何一个

然后()给你一个参考组,这样你就可以得到匹配。

答案 2 :(得分:1)

使用与前瞻的非贪婪匹配:

^.*?(?=[.!?]( |$))

请注意,如果这些字符位于字符类[...]中,您将不必逃避这些字符。

答案 3 :(得分:0)

这应该这样做:

^.*?(?=[!.?][\s])