мне нужна помощь по извлечению несколько слов из этого предложения:Замена этим шаблоном не работает, как я ожидал бы, что не так?
String keywords = "I like to find something vicous in somewhere bla bla bla.\r\n" +
"https://address.suffix.com/level/somelongurlstuff";
И мой соответствующий код выглядит примерно так:
keywords = keywords.toLowerCase();
regex = "(I like to find)(.*)(in)(.*)(\\.){1}(.*)";
regex = regex.toLowerCase();
keywords = keywords.replaceAll(regex, "$4 $2"); //"$4 $2");
И я хочу, чтобы извлечь слова между find
и in
и между in
и первая точка. однако, поскольку URL-адрес имеет несколько точек, начинает происходить какой-то странный материал, и я получаю то, что мне нужно, плюс URL-адреса, которые заменяются пустыми местами. Я хочу, чтобы URL-адрес ушел, потому что в моем случае он должен совпадать с (.*)
, и мне нужна только одна точка после моих слов с (\\.){1}
, поэтому мне интересно, что там происходит? Есть идеи?
Добавив (?s)
или удалив все новые строковые символы в строке перед сопоставлением по регулярному выражению, вы получите что-то вроде: somewhere bla bla bla address suffix something vicious
, так что проблема с URL-адресом, не оставив там точки, остается.
Это НЕ только о соответствии многострочного текста.
Добавить '(? S)' перед шаблоном, чтобы включить режим DOTALL и заставить '.' соответствовать любому символу, включая новую строку. И удалите '{1}', что является избыточным. –
@ WiktorStribiżew это не решает проблему, и это не имеет много общего с другим вопросом, на который вы заявили, что этот вопрос является дубликатом. Добавляя (? S) или удаляя все новые строковые символы в строке перед сопоставлением в регулярном выражении, вы получаете что-то вроде: «где-то bla bla bla https: // адрес суффикса что-то порочное», поэтому проблема с URL-адресом, не имея точек остался там ... –
Ну, ваш вопрос звучит довольно нечетко (может быть, форматирование может помочь?). Я думаю, вам просто нужны как DOTALL, так и ленивые соответствия: ['(? S) (мне нравится искать) (. *) (In) (. *?) (\.) (. *)'] (Https: // regex101.com/r/zZ2hG7/1). Или ['(мне нравится искать) (. *) (In) ([^.] *) (\.) (. *)'] (Https://regex101.com/r/zZ2hG7/2). –