我正在尝试匹配所有包含引号的句子,而与引号的长度或引号中的句子数量无关。
正如 Alfe 指出的那样,获得完美的正则表达式可能不可行,但如果可能的话,我想改进我正在使用的正则表达式。
现在我这样做是为了找到报价:
def split_by_quotes(text):
pattern = r'([A-Z].*?\".*?\".*?\.)'
quotes = re.findall(pattern, text)
return(quotes)
但我想确保引用出现在一个句子中,然后捕获整个句子。
我所说的一句话是指一段文字:
- 通常前面有一个空格
- 以大写字符或引号开头
- 以 a 结尾。或者 !或者 ?或(有时直接跟在“或”之后)
- 通常后跟一个空格
正如 Alfe 指出的那样,这不会捕获所有句子,但如果我能在这些条件下匹配就足够了。
例如:
“这是一个报价,应该匹配”
这是多个回车后换行没有引号的文本,不应匹配。
更复杂的例子:
查尔斯·巴贝奇说:“有两次,[国会议员]问我,‘请祈祷,巴贝奇先生,如果你把错误的数字输入机器,正确的答案会出来吗?’ 我无法正确理解会引发这样一个问题的那种混乱的想法。”
整个句子会匹配。
但,
他们称 Garfield Minus Garfield 和 Lolcats,但当约翰逊看到一段他认为特别搞笑的片段时,有人摔倒,然后被一只带键盘的猫“弹下台”,他的朋友们认为这是蹩脚的。“我说,这会很大。”他说,“我的朋友们说,‘不,这只是一只猫。’”
将匹配如下:
他们称 Garfield Minus Garfield 和 Lolcats,但当约翰逊看到一段他认为特别搞笑的片段时,有人摔倒,然后被一只带键盘的猫“弹下台”,他的朋友们认为这是蹩脚的。
和
“我说,这会很大。”他说,“我的朋友们说,‘不,这只是一只猫。’”