Поиск строки и список всех предложений, соответствующих этой строке - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь кодировать в 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 Ответ

1 голос
/ 09 мая 2019

Я думаю, что сложно описать предложение в регулярном выражении. Тем не менее, вот мое предложение:

для всех предложений (если вы хотите сопоставить их с шаблоном):

"""\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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...