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); } }
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