Extraer URL presentes en una string dada

Dada una string S , la tarea es encontrar y extraer todas las URL de la string. Si no hay URL presente en la string, imprima “-1” .

Ejemplos:

Entrada: S = «Bienvenido a https://www.geeksforgeeks.org Portal de informática»
Salida: https://www.geeksforgeeks.org
Explicación:
La string dada contiene la URL ‘https://www.geeksforgeeks.org’ .

Entrada: S = «Bienvenido al portal https://write.geeksforgeeks.org del Portal de informática https://www.geeksforgeeks.org»
Salida:
https://write.geeksforgeeks.org 
https://www.geeksforgeeks. org
Explicación:
la string dada contiene dos URL ‘https://write.geeksforgeeks.org’ y ‘https://www.geeksforgeeks.org’.

Enfoque: La idea es usar la expresión regular para resolver este problema. Siga los pasos a continuación para resolver el problema dado:

  • Cree una expresión regular para extraer todas las URL de la string como se menciona a continuación:

expresión regular = «\\b((?:https?|ftp|archivo)://[-a-zA-Z0-9+&@#/%?=~_|!:, .;]*[-a -zA-Z0-9+&@#/%=~_|])”

  • Cree una ArrayList en Java y compile la expresión regular usando Pattern.compile() .
  • Haga coincidir la string dada con la expresión regular. En Java, esto se puede hacer usando Pattern.matcher() .
  • Busque la substring desde el primer índice del resultado de la coincidencia hasta el último índice del resultado de la coincidencia y agregue esta substring a la lista.
  • Después de completar los pasos anteriores, si se encuentra que la lista está vacía, imprima «-1» ya que no hay una URL presente en la string S . De lo contrario, imprima toda la string almacenada en la lista.

A continuación se muestra la implementación del enfoque anterior:

Java

// Java program for the above approach
  
import java.util.*;
import java.util.regex.*;
class GFG {
  
    // Function to extract all the URL
    // from the string
    public static void extractURL(
        String str)
    {
  
        // Creating an empty ArrayList
        List<String> list
            = new ArrayList<>();
  
        // Regular Expression to extract
        // URL from the string
        String regex
            = "\\b((?:https?|ftp|file):"
              + "//[-a-zA-Z0-9+&@#/%?="
              + "~_|!:, .;]*[-a-zA-Z0-9+"
              + "&@#/%=~_|])";
  
        // Compile the Regular Expression
        Pattern p = Pattern.compile(
            regex,
            Pattern.CASE_INSENSITIVE);
  
        // Find the match between string
        // and the regular expression
        Matcher m = p.matcher(str);
  
        // Find the next subsequence of
        // the input subsequence that
        // find the pattern
        while (m.find()) {
  
            // Find the substring from the
            // first index of match result
            // to the last index of match
            // result and add in the list
            list.add(str.substring(
                m.start(0), m.end(0)));
        }
  
        // IF there no URL present
        if (list.size() == 0) {
            System.out.println("-1");
            return;
        }
  
        // Print all the URLs stored
        for (String url : list) {
            System.out.println(url);
        }
    }
  
    // Driver Code
    public static void main(String args[])
    {
  
        // Given String str
        String str
            = "Welcome to https:// www.geeksforgeeks"
              + ".org Computer Science Portal";
  
        // Function Call
        extractURL(str);
    }
}
Producción:

https://www.geeksforgeeks.org

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *