Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Expresiones regulares para párrafos
#1

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.
  • Reemplazar \n# por \n[::jump::]#
Saludos.

1 Saludo.
    ¡Gracias!
#2

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.

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
    ¡Gracias!
#3

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

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
    ¡Gracias!
#4

(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

1 Saludo.
    ¡Gracias!
#5

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

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
    ¡Gracias!
#6

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

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
[-] Los siguientes 1 usuarios dice gracias a jguardon por este post:
  • tincho
    ¡Gracias!
#7

(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.

1 Saludo.
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)