Intenté buscar otras respuestas para esto y mi cerebro simplemente explota cuando intento leer algo en Regex, simplemente no puedo comprenderlo, no importa cuántas veces lo lea o qué tan lento.
Estoy intentando eliminar esto de un archivo usando Notepad++:
<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>
Pero no estoy seguro de qué cadena de búsqueda de expresiones regulares necesito usar en Notepad++ para hacer esto. Donde está ALGUNA PALABRA ALEATORIA, esto podría ser literalmente cualquier cosa de cualquier longitud, pero el inicio y el cierre de la etiqueta/página en la que se encuentra es el mismo.
Sólo quiero eliminar cualquier instancia de
<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>
y reemplazarlo por nada.
Respuesta1
En la línea Buscar qué, ingresa lo siguiente:
<a style="text-decoration:none" href=".+">\.</a>
Reemplazar con: dejar vacío.
Luego presione Reemplazar todo.
La clave aquí es usar .+
qué significa encontrar un carácter de cualquier cosa o más. Básicamente, esto significa que cualquier URL que tenga el texto idéntico, pero con cualquier URL, será encontrada y reemplazada. sin nada. Es posible filtrar la URL u otras cosas, pero dado que su publicación especifica que desea reemplazar la cadena completa con nada, esta información no se proporcionó para no confundirlo más.
Asegúrate de seleccionar Expresión regular en la parte inferior, pero creo que ya pensaste en eso.
Además, debes evitar los caracteres especiales, como el . Si sus enlaces tienen texto real en lugar de ., debe reemplazarlo \.
también .+
.
Respuesta2
Estoy enviando otra respuesta, no porque quiera socavar la respuesta aceptada, que es muy buena, sino porque su expresión de búsqueda fue casi correcta.
La confusión es que en máscaras de archivos *
significa una cadena arbitraria de cualquier longitud (incluido cero), mientras que en expresiones regulares significa cualquier número de apariciones del patrón anterior. Entonces, lo que solicitó fue una cadena que contenga cualquier número de barras (solo) entre las comillas de la href=
cláusula.
Lo que necesitaba estaba href="/.*"
en su expresión de búsqueda, y esto usa la otra gran diferencia entre máscaras de archivo, donde ?
coincide con cualquier carácter, y expresiones regulares, donde .
se usa, dando .*
cualquier número de caracteres arbitrarios.
El uso diferente de .
significa que >.</a>
al final de su expresión de búsqueda significa que cualquier carácter entre >
y </a>
coincidirá: para hacer coincidir solo un literal, .
debe decirle a la expresión de búsqueda que desea que coincida con un literal .
, y esto se hace precediendo el .
con el llamadoescaparpersonaje \
. Por lo tanto, \.
coincide con un literal .
y \*
coincide con un literal *
.
Su cadena de búsqueda habría funcionado perfectamente si las expresiones regulares usaran las mismas coincidencias que las máscaras de archivos, pero desafortunadamente no es así, y lo que necesita es:
<a style="text-decoration:none" href="/.*">\.</a>
Como ves, es muy poco diferente de lo que intentaste, con sólo dos personajes adicionales (pero críticos), pero espero que mi explicación te dé la confianza para seguir adelante con ellos: seguramente los necesitarás nuevamente.
No puedo negar que son prohibitivos y no puedo recomendar una manera fácil de entrar, aunque puede que encuentreseste probadorútil (aunque se trata /
como un carácter especial que debe ir precedido por el carácter de escape \
; lo hace en algunos contextos, pero no en el suyo, así que permítalo si lo prueba en su expresión de búsqueda).
No se desanime porque las expresiones parecen una palabrería: he estado trabajando con ellas durante años y todavía hay muchas que se me escapan, especialmente la verificación de números binarios que son múltiplos de 3 en elpágina de wikipedia- He encontrado explicaciones, pero ni siquiera siendo licenciado en matemáticas puedo entender la expresión en detalle.
Usted comprende las máscaras de archivos y, al utilizar las modificaciones simples necesarias para las expresiones regulares, tiene un punto de partida.