2

我正在尝试将段落分割成句子。我选择了“.”、“?” 和 '!' 作为分割符号。我试过了:

format = r'((! )|(. )|(? ))'
delimiter = re.compile(format)
s = delimiter.split(line)

但它给了我sre_constants.error: unexpected end of pattern

我也试过

format = [r'(! )',r'(? )',r'(. )']
delimiter = re.compile(r'|'.join(format))

它也会导致错误。

我的方法有什么问题?

4

1 回答 1

6

.(wildcard) 和?(zero or one, quantifier) 是特殊的正则表达式字符,您需要对它们进行转义才能按字面意思使用它们。

但是,在您的情况下,使用字符类会简单得多(其中这些字符不再特殊):

split(r'[!.?] ')

字符类[...]代表“一个字符,包含在字符类中的任何字符”。

于 2014-04-17T14:50:50.457 回答