使用正则表达式将段落拆分为javascript中的句子

时间:2013-11-14 11:44:45

标签: javascript regex

我正在尝试使用正则表达式从段落中提取句子。请注意我正在尝试使用java脚本来实现这一点。我试过用其他语言完成的一些方法,导致语法错误。我想不要考虑先生,夫人这样的头衔。等等。作为句子的结尾。同样要对像“Michel G.”这样的字符串敏感而不是将其解释为句末。请在下面找到我的正则表达式。我尝试了很多方法,但仍然无法使其正常工作。任何帮助将不胜感激。

var sentences = $(this).text()
.replace(/(((?![.!?]['".”]?\s).)*[.!?]['".”]?)(\s|$)/g,
'<span class="sentence"> $1 </span> $3<div class="commentform">' + formdialog + '</div>');

要提取的段落

“他正在试图推动,”一位不愿透露姓名的美国高级官员表示,由于此事的精细性,他说,由于短期的刺激因素导致谈判陷入僵局。在解决基本问题上进展缓慢。“克里先生是一个不知疲倦的人,经常出现在耶路撒冷和拉马拉,导致7月恢复谈判,他最近与以色列总理本雅明·内塔尼亚胡会晤数小时。和巴勒斯坦权力机构主席马哈茂德阿巴斯,在纽约,伦敦和罗马等中立地点。现在,在经过短暂的一段时间处理其他问题之后,他正回到该地区,让自己重新回到这个过程中。

迈克尔·戈登(Michael R. Gordon)对沙特阿拉伯利雅得的报道做出了贡献。

1 个答案:

答案 0 :(得分:2)

啊,是的。你是not doing bad,但是你遇到的问题是当没有结束句子时,例如Mr. KerryMichael R. Gordon。我担心没有简单的解决办法。

根据您对提取的段落的了解,您可以尝试在单个字母后跟一个点和常用缩写后跟一个点后禁止匹配,但之后您仍然会绊倒'先生。克里对总统说。“ “你认为你要去哪里,先生。” 因此,你必须决定多少不好的误报(实际上只有一个句子分成两部分)和负面消息(当它应该被分开时不分开)并相应地调整你的解决方案。

请注意,这是严重问题 通常,像OpenOffice和Word这样的文字处理器会尝试检测句子何时结束,以自动将后续字母转换为大写。大多数智能手机键盘也尝试这样做。我从来没有遇到任何完美的事情;例如我给他们的例子。