Necesito capturar todas las direcciones URL en un párrafo además de las direcciones URL de un dominio/subdominio específico. Por ejemplo, en el siguiente párrafo necesito capturar todas las direcciones URL además de ejemplo.com
"Este es un párrafo name.url.com que contiene direcciones URL aleatorias name-dev.url.com name-qa.url.com www.example.com test.example.com http://TestCaSeSensetivEUrl.com http://www .prueba.com https://www.ejemplo.com prueba.com"
Urls que necesito capturar
Urls que no necesito capturar como se muestra a continuación
prueba.ejemplo.com
Probé la siguiente expresión regular usando el método de mirada negativa detrás, pero no funciona como lo necesito.
/(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?([a-z0-9]+(?<!example)[\-\.]{1}[a-z0-9+]+(?<!example)\.[az]{2,5})/gi
Esto debería ser suficiente para su caso de uso:
/(?<!\S)(?:https?:\/\/)?(?:(?:(?!example)\w+[.-])+[az]{2,11})(?!\S)/giConsulte https://regex101.com/r/NdOxKt/1 para ver una demostración de la expresión regular en funcionamiento. A continuación se muestra una explicación aproximada de lo que está haciendo la expresión regular:
(?<!\S) esencialmente divide la cadena en segmentos en caracteres de espacio, incluidos los espacios en blanco y las líneas nuevas.?: hace que cada conjunto de paréntesis esté en un grupo sin captura, lo que ahorra memoria en la máquina donde se ejecuta y acelera el tiempo de ejecución(?:https?:\/\/)? opcionalmente, coincide con http y https para las URL sin coincidir con los caracteres no válidos : y / en cualquier otro lugar de la URL(?:(?!example)\w+[.-])+ busca una o más palabras que no coincidan con example , seguidas de un guión o un punto[az]{2,11} coincide con la extensión de dominio final, es decir, com , org o enterprisesesto podría ser una solución
^(https?:\/\/)?(?!(?:www\.)?google\.*)([\da-zA-Z.-]+)\.([a-zA-Z\.]{2,6})([\/\w .-]*)*\/?$por ejemplo aquí google está excluido de ser capturado