Сокращение URL java

 Map<String, Integer> map = new HashMap<>();

        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] data = line.split("\\s+");
                String url = data[6];
                Pattern pattern = Pattern.compile ("[a-z0-9-]+\\.(ru|com|net|de|cn|uk|org|info|nl|tk)");
                Matcher matcher = pattern.matcher(url);

Если URL представлен в виде DNS, сокращаем его до второго уровня(например так, с помощью регулярок)

 Pattern pattern = Pattern.compile ("[a-z0-9-]+\\.(ru|com|net|de|cn|uk|org|info|nl|tk)");
                Matcher matcher = pattern.matcher(url);

Если URL в виде IP, нужно отцепить от него номер хоста, как это прописать?

Пример входных данных:

1360425956.912      0 192.168.50.8 TCP_DENIED/403 3494 CONNECT 128.140.168.69:80 - HIER_NONE/- text/html
1360425962.515      1 192.168.50.8 TCP_DENIED/403 3849 CONNECT e.mail.ru:443 - HIER_NONE/- text/html

Должно получиться в итоге:

128.140.168.69
mail.ru

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

Автор решения: Aziz Umarov

Я так понимаю у Вас продолжение темы. Не стал заморачиваться с RegEx полностью. Результат ожидаемый

  public static void main(String[] args) throws Exception {
    File file = new File("C:\\java\\access.txt");
    List<String> addressList = new ArrayList<>();

    try (BufferedReader br = new BufferedReader(new FileReader(file))) {
      String line;
      while ((line = br.readLine()) != null) {
        String[] data = line.split("\\s+");
        String URL = data[6];
        String regex =
            "((([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5]))|([a-z0-9]+\\.(ru|com|net|de|cn|uk|org|info|nl|tk))";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(URL);
        matcher
            .results()
            .forEach(result -> addressList.add(URL.substring(result.start(), result.end())));
      }
      System.out.println(addressList);
    }
  }
→ Ссылка