Foros del Web » Programando para Internet » ASP Clásico »

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de ASP Clásico en Foros del Web. Hola otra vez. Para aprender sobre las expresiones regulares, he hecho un código el cual busca en un archivo de texto las posibles concordancias según ...
  #1 (permalink)  
Antiguo 27/04/2008, 10:10
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Expresiones regulares

Hola otra vez.

Para aprender sobre las expresiones regulares, he hecho un código el cual busca en un archivo de texto las posibles concordancias según el patrón de la expresión.
Este es el codigo:
Código:
<%
Function RegExpTest(ExpresionRegular, archivo)
   Dim regEx, Match, Matches, RetStr
   Set regEx = New RegExp
   regEx.Pattern = ExpresionRegular
   regEx.IgnoreCase = True
   regEx.Global = True
   If (regEx.Test(archivo) = True) Then 
   Set Matches = regEx.Execute(archivo)
   For Each Match In Matches
      RetStr = RetStr & "Coincidencia encontrada en la posición "
      RetStr = RetStr & Match.FirstIndex & ". El valor coincidente es '"
      RetStr = RetStr & Match.Value & "'.<br>" & vbCrLf
   Next
   Else
    RetStr = "Fallo"
   End If
   RegExpTest = RetStr
End Function

strFileName = "pruebaz.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(Server.MapPath(strFileName))
Expresion="?<=<b>).+(?=</b>"

Do While Not objTextFile.AtEndOfStream
    strReadLineText = objTextFile.ReadLine
Response.Write(RegExpTest(Expresion, objTextFile))
Loop
%>
Pero da error en No coinciden los tipos: 'regEx.Test' o en 'regEx.Execute'.
He probado con varias expresiones y siempre da error.

Alguien me puede echar una mano.
Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #2 (permalink)  
Antiguo 28/04/2008, 11:46
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: Expresiones regulares

Hola eeeee

Para mi, el problema es lo que estás envíando a la función, lo que hace tu programa es leer secuencialmente un archivo de texto y comprobar línea a línea un patron, entonces debes envíarle la línea de texto, no el objeto.

Código:
Do While Not objTextFile.AtEndOfStream
    strReadLineText = objTextFile.ReadLine
    Response.Write(RegExpTest(Expresion, objTextFile))
Loop
%>
Código:
Do While Not objTextFile.AtEndOfStream
    strReadLineText = objTextFile.ReadLine
    Response.Write(RegExpTest(Expresion, strReadLineText ))
Loop
%>

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 28/04/2008, 12:17
Avatar de eeeee  
Fecha de Ingreso: febrero-2004
Ubicación: Almería
Mensajes: 397
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Expresiones regulares

Hola u_golgman gracias por responder.
Pues si ese es el error ya que después de hacer este post seguí averiguando e hice otro código directo, sin la función y funciona bien, claro, pero le puse probando strReadLineText en vez de objTextFile .

Pero ahora me da error de Cuantificador inesperado, auque se que este error es por la expresión ya que con otras funciona.
Yo quiero que busque cualquier palabra o palabras que estén en negrita, no se de donde cogí esa expresión , pero falla,
Puedes decirme cual es el fallo o la espresión correcta ??
Gracias

Salu2
__________________
Eusol .............
aprendiendo de ustedes
________________________

http://www.alicun.com
  #4 (permalink)  
Antiguo 28/04/2008, 12:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: Expresiones regulares

El problema de las expresiones regulares es que tienes que romperte la cabeza con el patron "correcto" y al otro día no sabes que hacen, a ver, trata este patron:

Código:
Expresion = "<b>(.|\n)+?</b>"
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:05.