Comunidad Gambas-es
[SOLUCIONADO] Expresiones regulares para párrafos - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forumdisplay.php?fid=3)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forumdisplay.php?fid=8)
+--- Tema: [SOLUCIONADO] Expresiones regulares para párrafos (/showthread.php?tid=357)



Expresiones regulares para párrafos - tincho - 19-04-2021

Hola a todos.
Resulta que el texto que sale de un pdf no esta formateado correctamente, pero si que se pueden hacer algunas cosas para mejorarlo.
Si por ejemplo una cadena termina en ".\n" (punto+nueva-linea) estamos casi con seguridad en el final de un párrafo.
Pero luego hay situaciones en las que se trata de un título y que la linea de texto no termina en "." pero por suerte sucede que luego la siguiente linea comienza por una mayúscula.
Bien ahora la pregunta ¿Cual es la expresión regular, u otra forma para reemplazar \n# por \n[::jump::]#? donde # es cualquier letra mayúscula. Saludos.


RE: Expresiones regulares para párrafos - jguardon - 19-04-2021

Eso tiene bastante miga. La pregunta que me surge es si [::jump::] es literal o representa otra cosa. Voy a darle un vistazo con las herramientasa online para probar Regex a ver si logro algo.


RE: Expresiones regulares para párrafos - jguardon - 19-04-2021

Bueno, suponiendo que [::jump::] sea literal, es decir, haya que presentarlo tal cual en lugar del salto de línea, esta sería mi solución.

Claro está que luego hay que integrarlo en gambas, pero la regex es así:

https://regex101.com/r/ULt5sU/1

Tienes todas las explicaciones en la misma página, ahora voy a ver si soy capaz de hacerlo en gambas.

Saludos


RE: Expresiones regulares para párrafos - tincho - 19-04-2021

(19-04-2021, 19:01)jguardon escribió:  Eso tiene bastante miga. La pregunta que me surge es si [::jump::] es literal o representa otra cosa. Voy a darle un vistazo con las herramientasa online para probar Regex a ver si logro algo.

[::jump::] es un texto que se me ocurrio intentando poner algo que es poco probable que exista en el texto original, podria ser cualquier cosa
Estoy probando en el sitio:
https://regexr.com/

El texto es:
Cita:Capitulo 1 Regex y la madre que
Este es el párrafo que sigue al título
La expresión que detecta el sitio entre el [enter] y la letra "E" pero que podría ser cualquier mayúscula es:
(\n[A-Z])
Pero el problema que no logro resolver todavía es insertar y no reemplazar la letra mayuscula

Saludos


RE: Expresiones regulares para párrafos - jguardon - 19-04-2021

Fíjate en mi ejemplo. El grupo de captura entre paréntesis no incluye el \n porque esa captura tienes que añadirla después al texto a reemplazar. Es justamente la primera letra mayúscula después del salto de línea.

Para usar el grupo de captura que incluye solamente esa letra mayúscula, tienes que usar $1, que corresponde al contenido de lo que haya entre paréntesis, pero has de usarlo dentro de la expresión regular de sustitución, que de momento no sé como se hace en gambas.

Saludos


RE: Expresiones regulares para párrafos - jguardon - 19-04-2021

Bueno, aquí lo tienes finalmente:

GAMBAS
  1. TextArea2.Text = RegExp.Replace(TextArea1.Text, "\\n([A-Z])", "[::jump::]&1")



Y el ejemplo:

[Imagen: OCF7zLv.png]

Espero que te sirva, saludos


RE: Expresiones regulares para párrafos - tincho - 19-04-2021

(19-04-2021, 19:53)jguardon escribió:  Espero que te sirva, saludos

Si, sirvió Smile
use este codigo con un \n mas
GAMBAS
  1. str = RegExp.Replace(str, "(\n[A-Z])", "\n[::jump::]&1")


Saludos.