Hacer coincidir párrafos html con al menos una palabra en mayúsculas

Hacer coincidir párrafos html con al menos una palabra en mayúsculas

Usando expresiones regulares o cualquier cosa, necesito hacer coincidir cualquier párrafo que contenga al menos una palabra en mayúsculas.

Luego transfórmalo en un encabezado y escribe en mayúscula todo el contenido del título. En el siguiente ejemplo, la palabraAquídebe ser cambiado aAQUÍ. Esto incluye caracteres acentuados.

¿Cómo puedo hacer esto?

<P STYLE="margin-bottom: 0cm"><BR>
    </P>
</DIV>
<P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm; line-height: 0.42cm">
<FONT SIZE=4><B>TITLE Here</B></FONT></P>

Estoy usando Linux.

Respuesta1

Es casi seguro que puedes hacer esto usando los comandos de la consola, pero esto suena como un trabajo de reparación único en lugar de una tarea normal, por lo que usaría mi herramienta gráfica de expresiones regulares favorita, el muy útil editor de texto para programadores de código abierto llamado jEdit. (Verjedit.orgpara detalles.)

Una vez que haya instalado jEdit, puede abrir el cuadro de diálogo "Buscar y reemplazar" presionando Ctrl+F o yendo al menú "Buscar" y seleccionando el elemento "Buscar".

En el cuadro de diálogo "Buscar y reemplazar", debe seleccionar la opción "Buscar en" que desea utilizar. "Búfer actual" cambiará solo el archivo actual, "Todos los búferes" cambiará todos los archivos abiertos actualmente en jEdit y la opción "Directorio" le permitirá cambiar todos los archivos en el directorio (que usted especifica en la parte inferior del cuadro de diálogo ) que coincidan con el filtro que especifique (como *.htmlo *.php). La opción "Directorio" es muy poderosa y posiblemente sea la opción que necesita, pero tenga mucho cuidado con ella y verifique con mucho cuidado que su búsqueda/reemplazo no cause cambios inesperados al coincidir de maneras que no consideró.

A continuación debes marcar la casilla "Expresiones regulares" en el medio del cuadro de diálogo.

Ahora escriba en el cuadro de texto "Buscar" la expresión regular que desea utilizar para apuntar al texto que debe cambiarse. Si entiendo su requisito, este patrón de expresiones regulares podría hacer el trabajo:

(?<=>)([^<]*\p{Lu}{2,}[^<]*)(?=<)(?!</script)

Este patrón dice "seleccione el texto que está precedido por a >y que contiene cualquier número de caracteres que no sean, <luego, al menos dos caracteres mayúsculos consecutivos, luego cualquier número de caracteres que no lo sean <, y que finalmente sea seguido por a <pero NO por </script".

Luego debe seleccionar la opción "Valor de retorno de un fragmento de BeanShell" y escribir en el cuadro de texto "Reemplazar con":

_1.toUpperCase()

Este fragmento de BeanShell simplemente dice "el texto capturado en el primer grupo de captura que coincide con la expresión regular, convertido a mayúsculas".

Probé esto y se ejecuta felizmente en un archivo HTML y encuentra secuencias consecutivas de texto sin formato que contienen dos o más caracteres mayúsculos consecutivos. Tenga en cuenta que cualquier párrafo que contenga algo inocente como UK o USB también coincidirá con esta expresión regular, por lo que es posible que desee cambiar el {2,}cuantificador para {4,}que tenga que haber al menos cuatro caracteres mayúsculos consecutivos para que una secuencia coincida.

También asegúrese de realizar pruebas con mucho cuidado antes de liberar esto en un archivo o conjunto de archivos valiosos (y asegúrese de haber realizado una copia de seguridad de todos los originales primero para poder restaurarlos si algo sale mal y no se da cuenta hasta has guardado los cambios).

información relacionada