搜索一个字符串并列出所有与该字符串匹配的句子

时间:2019-05-09 14:19:13

标签: string scala full-text-search

我正在尝试在Scala中为以下用例编写代码:

在文本文件中搜索字符串,仅列出与此字符串匹配的句子。

我尝试使用以下内容:

val fileContents = Source.fromFile("/Users/sc/Documents/Scala_Code/input.txt").getLines.mkString

val sentence = fileContents.filter(line => fileContents.contains("string to search"))

即使有一个匹配项,它也会列出整个文本文件。我只需要匹配的句子。

感谢有人可以提供一些输入。

1 个答案:

答案 0 :(得分:1)

我认为很难确保用正则表达式来描述一个句子。不过,这是我的建议:

对于所有句子(如果要对它们进行模式匹配):

"""\A?\b((?!\?+"?|!+"?|\.+)(.|\n))+(\Z|\?+"?|!+"?|\.+)""".r.findAllIn(fileContents.mkString) //.toSeq

对于特定的字符串(例如you):

"""\A?\b((?!\?+"?|!+"?|\.+)(.|\n))+(\Z|\?+"?|!+"?|\.+)""".r.findAllIn(fileContents.mkString).toIterator.withFilter(_.contains("you")) //.toSeq

toSeq(或toList)对于检查少量数据非常有用...

您可以在这里进行测试:https://scalafiddle.io/sf/0znMzyi/8

希望有帮助。