Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Expresiones regulares (http://www.forosdelweb.com/f15/expresiones-regulares-580459/)

eeeee 27/04/2008 10:10

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

u_goldman 28/04/2008 11:46

Re: Expresiones regulares
 
Hola eeeee :-D

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

eeeee 28/04/2008 12:17

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

u_goldman 28/04/2008 12:39

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


La zona horaria es GMT -6. Ahora son las 10:33.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.