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

У меня есть строка xxxxxxxxsrc="/slm/attachment/63338424306/Note.jpg"xxxxxxxx Теперь я хочу извлечь подстроки slm/attachment/63338424306/Note.jpg & Note.jpg из строки в переменные i.e. temp1 & temp2.

Как это сделать с помощью регулярных выражений в Java?

Примечание: 63338424306 может быть любым случайным номером.& Note.jpg может быть что-нибудь вроде Note.png или abc.jpg или xxxx.yyy и т. Д.

Пожалуйста, помогите мне извлечь эти две строки с помощью регулярных выражений.

Ответы [ 2 ]

1 голос
/ 07 марта 2019

В соответствии с вашим комментарием, принимая строку, как объявлено ниже в моем коде:

Пожалуйста, уточните, если ваша входная строка не такая, или я что-то упустил.

public static void main(String[] args) {

    String str = "xxxxxxxxsrc=\"/slm/attachment/63338424306/Note.jpg\"xxxxxxxx";
    String url = null;

    // The below pattern will grab string between quotes
    Pattern p = Pattern.compile("\"([^\"]*)\"");
    Matcher m = p.matcher(str);
    while (m.find()) {
        System.out.println(m.group(1));
        url = m.group(1);
    }

    // and this will grab filename from the path(url)
    p = Pattern.compile("(?:.(?<!/))+$");
    m = p.matcher(url);
    while (m.find()) {
        System.out.println(m.group());
    }
}
1 голос
/ 07 марта 2019

Вы можете использовать отрицательный взгляд, чтобы получить имя файла

((?:.(?<!/))+)\"

и ниже регулярное выражение, чтобы получить полный путь

/(.*)\"

Пример кода

public static void main(String[] args) {
    Pattern pattern = Pattern.compile("/(.*)\"");
    Pattern pattern1 = Pattern.compile("((?:.(?<!/))+)\"");
    String matchString = "/slm/attachment/63338424306/Note.jpg\"xxxxxxxx";
    Matcher matcher = pattern.matcher(matchString);
    String fullString = "";
    while (matcher.find()) {
        fullString = matcher.group(1);
    }
    matcher = pattern1.matcher(matchString);
    String fileName = "";
    while (matcher.find()) {
        fileName = matcher.group(1);
    }

    System.out.println(fullString + " " + fileName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...