https://foro.gambas-es.org/viewtopic.php?f=1&t=6319
-----------------------------------
shordi
Jueves, 27 Abril 2017, 20:23

Problema Con RegExp
-----------------------------------
No soy ningún especialista con las expresiones regulares, pero me pasan un problema. 
éste código
  
[code linenumbers=false syntax=gambas]str = "A\n\n\n\n\n"

str = RegExp.Replace(str, "([^.])( *\n\n*)", "FirstPart:#&1#Second Part:#&2#")
Print str
[/code]

a priori debería devolver:
FirstPart: #A #Second Part: #

y sin embargo devuelve:

FirstPart: #A #Second Part: #
#FirstPart: #
#Second Part: #
#FirstPart: #
#Second Part: #
#

No entiendo de dónde viene la repetición. Si en la cadena no hay ningún espacio... ¿Alguien puede ayudar al colega?
Adjunto un proyectito que contiene el problema

Gracias.


-----------------------------------
Shell
Viernes, 28 Abril 2017, 00:51

Re: Problema Con RegExp
-----------------------------------
Shordi:

Aunque estoy bastante desentrenado.

¿ Cómo es que usaste el carácter de escape de nueva línea ?. 
Sabes que si lo imprimes y en la cadena existe, te va a crear distintas líneas.

Podías haber probado con una cadena distinta a ver que resultado da.  :roll: 

Saludos


-----------------------------------
shordi
Viernes, 28 Abril 2017, 08:23

Re: Problema Con RegExp
-----------------------------------
[quote user="Shell" post="37849"]Shordi:

Aunque estoy bastante desentrenado.

¿ Cómo es que usaste el carácter de escape de nueva línea ?. 
Sabes que si lo imprimes y en la cadena existe, te va a crear distintas líneas.

Podías haber probado con una cadena distinta a ver que resultado da.  :roll: 

Saludos[/quote]
Es que regexp está para eso... no es lo mismo un replace que un regexp.replace...


-----------------------------------
Shell
Viernes, 28 Abril 2017, 14:06

Re: Problema Con RegExp
-----------------------------------
Shordi:

¿ Qué te parece si explicas a la comunidad como interpretas la expresión regular que has usado ?.  :roll: 
Y dicho sea de paso la instrucción.

Estuve intentando hacerlo en una web y con Python, pero...
"Estoy más oxidado que C3-PO en Tatooine."

Saludos


-----------------------------------
tincho
Sabado, 29 Abril 2017, 14:29

Re: Problema Con RegExp
-----------------------------------
[quote user="shordi" post="37842"]...me pasan un problema. éste código...[/quote]
He probado el código en gambas y pasa lo que dices, y luego probé las expresiones regulares en una pagina de pruebas de regex
https://es.infobyip.com/regularexpressioncalculator.php
Y el resultado es "A".

Como nada funcionaba y no soy experto en regex, hice lo unico que me quedaba hacer el método de prueba y error, y lo mejor es que funciono !!  :mryellow: 

[code linenumbers=false syntax=gambas]
Public Sub form_open()
  Dim str As String
  str = "A\n\n\n\n\n"
  str = RegExp.Replace(str, "([^/\n])(" ")", "FirstPart:#&1#Second Part:#&2#")
  Print str
  Me.Close
End
[/code]

Este es el resultado:
[b]FirstPart:#A#Second Part:##[/b]

Y esta la regex modificada, hay que [i]escapar[/i] el [b]\n[/b] así [b]/\n[/b]:
[b]([^/\n])(" ")[/b]

Saludos.


-----------------------------------
shordi
Sabado, 29 Abril 2017, 18:12

Re: Problema Con RegExp
-----------------------------------
tincho +1 :mryellow:  :mryellow: 

Buen trabajo!


-----------------------------------
shordi
Lunes, 01 May 2017, 10:50

Re: Problema Con RegExp
-----------------------------------
Al final la solución no era esa. El problema venía de un atípico comportamiento de la clase Regexp... os remito a la lista internacional, que no soy capaz de explicarlo así, a bote pronto.

Saludos.


