Как вытащить часть ссылку из строки с помощью java?

Есть файл со строками. Я принимаю по одной строке и проверяю, есть ли href= в ней, если есть, то мне нужно вытащить ссылку в кавычках после этой href=. Как мне это лучше всего сделать?

Такая связка у меня, увы, не работает введите сюда описание изображения

    public static void main(String[] args) {
    try {
        File file = new File("C:/Users/Hertz/Desktop/SpringCourse-master/untitled/src/myFile.txt");
        FileReader fr = new FileReader(file);
        BufferedReader reader = new BufferedReader(fr);
        String line = reader.readLine();
        while (line != null) {
            if(line.contains("href=")) {
                System.out.println(line.substring(line.indexOf('"')+1, line.indexOf('"')));
            }
            line = reader.readLine();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Ответы (1 шт):

Автор решения: Nowhere Man

В представленном коде нет различия между открывающей и закрывающей кавычками, кроме того, в текстовом файле кавычки сдвоенные: href=""http://..."".

Следует задавать смещение на ширину префикса href="", а также искать первую закрывающую кавычку при помощи метода String::indexOf(int c, int from)

Данный код можно исправить без использования регулярных выражений:

File file = new File("C:/Users/Hertz/Desktop/SpringCourse-master/untitled/src/myFile.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;
    String tag = "href=\"\"";
    while ((line = reader.readLine()) != null) {
        int pos = line.indexOf(tag);
        if (pos > -1) {
            int from = pos + tag.length();  
            System.out.println(line.substring(from, line.indexOf('"', from)));
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}
→ Ссылка