正则表达式分割包含特定单词的句子

时间:2015-12-20 12:55:27

标签: java regex

我需要创建一个正则表达式,通过它我可以找到包含特定单词/正则表达式的所有句子。

例如。如果我有以下文字

  

哈里森福特正在制作一部新电影。这部电影尚未发行

     

这部电影有一个明星演员阵容。电影中收入最高的演员是哈里森·福特。

如果我想得到所有可以找到 Harrison 这个词的句子,我该怎么办呢。正则表达式应返回以下选择

  • 哈里森福特正在制作一部新电影。
  • 电影中收入最高的演员是哈里森·福特。

句子的开头和结尾可以用新的行字符标记,也可以用句号标记,或者如果它是段落的第一行。

我使用了以下正则表达式

.*?((\n|.|^\\s*).*?\\b(Harrison)\\b.*?[.\n]).*

但我无法分割线条。 从开始到第一个哈里森福特,我得到了一句话。

如果您有任何建议,请告知我们

2 个答案:

答案 0 :(得分:1)

如果你可以保证一个句子和一个句子以一个新的行字符或一个句号结尾,那么我建议你首先拆分文本,然后搜索每一行:

String[] sentences = text.split("\\.|\\R+");
for (String se : sentences) {
    if (se.indexOf("Harrison") != -1)
        System.out.println(se.trim());
}

输出:

Harrison Ford is working on a new Film
Most paid actor is Harrison Ford in the film

答案 1 :(得分:0)

您应该使用 global 标志来匹配字符串中的所有出现。 然后使用此正则表达式查找包含“Harrison”的所有句子:

(?:[\w][^.]+)?Harrison[^.]+

Regular expression visualization

查看demo here