Найти вхождение предложения в строке

У меня есть содержимое файла в виде строки. Мне нужно получить количество частичных предложений, скажем, "My name is scott" в строке, которая может охватывать строки, например

some content ... "My name is scott"  some content ...

some content ... "My name is " +  
    "scott"  some content ...

Было бы здорово, если бы я мог получить две версии, то есть для Firs, чтобы найти данный ввод в одной строке. Во-вторых, можно искать и по строкам?

что ты уже испробовал?

Matt.G 20.05.2018 15:46

Вам только нужно сделать это My\\s+name\\s+is\\s+scott

revo 20.05.2018 16:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать replaceAll, чтобы заменить эту часть разрыва:

" +  
    "

как это :

String text = "some content ... \"My name is scott\"  some content ...\n"
        + "\n"
        + "some content ... \"My name is \" +  \n"
        + "    \"scott\"  some content ...";
String textToMatche = "My name is scott";
text = text.replaceAll("\"\\s*\\+\\s*\n\\s*\"", "");// Note the regex : \"\s*\+\s*\n\s*\"

результат :

some content ... "My name is scott"  some content ...

some content ... "My name is scott"  some content ...

Затем посчитайте количество вхождений:

Версия Java 9+

long count = Pattern.compile(Pattern.quote(textToMatche)).matcher(text).results().count();

До Java 9

Pattern p = Pattern.compile(Pattern.quote(textToMatche));
Matcher m = p.matcher(text);
int count = 0;
while (m.find()) {
    count += 1;
}

Выход

2

демонстрация регулярного выражения

зачем мне pattern.quote, просто Pattern.compile(textToMatche); тоже подойдет?

scott miles 20.05.2018 16:05

@scottmiles считает, что ваш ввод содержит точку или скобки, эти символы являются частью синтаксиса регулярного выражения, поэтому я использую Pattern.compile, чтобы избежать этих символов, которые все

YCF_L 20.05.2018 16:08

Другие вопросы по теме