对于一个具体的例子,我想将文本文档分成句子。我正在考虑使用跟随正则表达式(仍然可能需要调整):
<input name="search-filter" class="form-control" type="search" ng-model="searchBox.properties.title" />
<input name="search-filter" class="form-control" type="search" ng-model="searchBox.properties.owners" />
匹配标点符号/空格(句子之间的东西 - 分隔符)[!?][\s]*|[.\n][!?\s]+[.!?\s]*
:它捕获任何字符串后跟标点符号或换行符(完整句子 - 我想要的内容)一般来说,哪种方法更受欢迎?在我的特定背景下,我想跟踪每个句子的开始和结束索引,所以我不能做一些像String#split这样简单的事情。
感谢。
答案 0 :(得分:1)
假设您打算使用vanilla Pattern
和Matcher
处理,第一个正则表达式通常会捕获更多,更少的字符(最多结束标点符号和一些空格字符),因此应该是最快的。如果您正在解析一个非常庞大的文档,这可能会有所不同。
但是,为每个句子提取开始和结束索引可能更为笨拙,因为您需要来自两个连续匹配的信息才能分隔整个句子。第二个正则表达式直接将句子映射到单个匹配,并启用最简单的代码。
所以这里没有免费午餐。两者都可以完成工作,尽管根据您要定位的文档类型,您可以使它们更加强大。特别要注意句子中间出现意外的标点字符,如:
......“?”角色可以用来......