【发布时间】:2016-08-04 07:24:51
【问题描述】:
我正在学习正则表达式并尝试将文本拆分为句子。
这是我的文字
“Smith 先生以 150 万美元买下了cheapsite.com,也就是说,他为此付出了很多。他介意吗?小亚当·琼斯认为他不介意。无论如何,这不是真的...嗯,0.9 的概率不是。”
还有我的正则表达式和代码
result = re.match(r"(.*\.{1}\s{1})[A-Z].*",line)
result.group(1) 给我
“Smith 先生以 150 万美元买下了cheapsite.com,也就是说,他为此付出了很多。他介意吗?小亚当·琼斯认为他不介意。无论如何,这不是真的...”
我希望它只给我一个句子,直到第一次出现“。”。 我知道这是一场贪婪的比赛,但无法弄清楚如何实现这一目标,因此寻求帮助。
注意:我在网上找到了许多将文本分成句子的正则表达式,但我想自己做。谢谢!!!
【问题讨论】:
-
为什么不只是
.*?\.?.*之后的?使它变得懒惰。请注意,您似乎想将其吐到Mr.,`Smith 以 1. 的价格购买了便宜的网站。,com 等。 -
想自己做 - 那为什么还要问呢?你知道第一个
.是在缩写Mr之后吗? -
我想确保只有一个“。”后跟一个空格,然后是一个大写字符。
-
在这种情况下,使用
.*?\. [A-Z] -
等我搞清楚后,我会为 Mr. Dr. Mrs. etc 工作。