Как извлечь слово в Java после заданного слова с помощью регулярных выражений в Java - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь извлечь слово после данного слова.Например: если моя строка "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan",", то я хочу извлечь слово, которое когда-либо следует за application (предположим, что приложение встречается в строке только один раз).

В этом случае я хочуИзвлечение 1007. На данный момент я пробовал это с использованием Java

(.*?^)(.*?)application/[0-9]*.

Это дает мне вывод как http://localhost:8080/api/rest/loan/application/1007. Но я хочу только 1007 в качестве моего вывода.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Вы можете использовать положительный взгляд, чтобы убедиться, что сопоставленному тексту предшествует application/ с использованием этого регулярного выражения,

(?<=application/)[^/]+

Здесь, [^/]+ part будет захватывать любой текст кроме /, давая вам желаемый текст 1007

Regex Demo

Java-код,

String s = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
Pattern p = Pattern.compile("(?<=application/)[^/]+");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group());
}

печать

1007

Еще один более простой и эффективный способ выполнить ту же задачу - использовать следующий шаблон группировки

.
/application/([^/]+)

и захватить содержимое группы 1.

Regex Demo с шаблоном группировки

Обратите внимание, это намного быстрее, а также будет работать в широком смысле, так как осмотр иногда не поддерживается на некоторых диалектах.

Java-код,

String s = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
Pattern p = Pattern.compile("/application/([^/]+)");
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(1));
}

Печать

1007 
0 голосов
/ 17 апреля 2019

Как насчет

    String a = "http://localhost:8080/api/rest/loan/application/1007/applicant/951/pan";
    a = a.replaceAll("(.*?^)(.*?)application/", "");
    String[] b = a.split("/");
    System.out.println(b[0]);

string replace функция принимает точную строку в качестве ввода, в то время как replaceAll принимает регулярное выражение в качестве входного аргумента.

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