Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: viher en 26 Octubre 2010, 21:22 PM

Título: ayudita expresion regular
Publicado por: viher en 26 Octubre 2010, 21:22 PM
hola,tengo la siguiente expresión regular que sirve para coger urls y funciona perfectamente,pero necesitaria que me buscara urls que acabaran en .swf

aqui os dejo la expresión que tengo

Dim Expresion As String
   
    ' Expresión regular
    Expresion = "(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)" _
             & "?(\/|\/([\w#!:.?+=&%@!\-\/]))?" & Chr(34)


cómo podría añadir para que me busque .swf??

gracias por la ayuda
Título: Re: ayudita expresion regular
Publicado por: raul338 en 26 Octubre 2010, 21:33 PM
(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?\*.swf

Deberia ir en Programacion general esto :P
Título: Re: ayudita expresion regular
Publicado por: viher en 26 Octubre 2010, 21:58 PM
Cita de: raul338 en 26 Octubre 2010, 21:33 PM
(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?\*.swf

Deberia ir en Programacion general esto :P

no me extrae la url con esa expresion  :huh:
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 26 Octubre 2010, 22:11 PM
También podrias usar esta, aunque no incluye validación:
(https?|ftp):\/\/(\S)+.swf

Código (vb) [Seleccionar]
http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.html 'False

http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.swf 'True


DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: raul338 en 26 Octubre 2010, 22:19 PM
^(?:(?>ht|f)tps?://)?(?:\w+[.-]\w+)+(?::\d+)?(?:\/[\w\-\.\?\,\'+&%\$_]*\.swf)*(?:\??(?:[\w\-\._]+=[\w\-\.\?\,\\'\/+%\$_]*&?)*)?(?:\#[\w]+)?$

Ahi esta mi expreg perfecta para swf :)
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 26 Octubre 2010, 22:22 PM
Ook raul, tu ganas!! :laugh: :laugh: :laugh: :laugh:
Muy bueno.

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 27 Octubre 2010, 16:38 PM
Cita de: Mr. Frog en 26 Octubre 2010, 22:11 PM
También podrias usar esta, aunque no incluye validación:
(https?|ftp):\/\/(\S)+.swf

Código (vb) [Seleccionar]
http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.html 'False

http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.swf 'True


DoEvents! :P

me sirvió tu expresión a la perfección. gracias  ;-)
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 28 Octubre 2010, 00:15 AM
Oops! una pequeña corrección, mi RegExp seria asi:
(https?|ftp):\/\/(\S)+\.swf

No me funciona la tuya raul... :-(

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 28 Octubre 2010, 19:09 PM
el problema que me surge ahora es que intento sacar la url desde un texto que tengo en el text2.text,pero no consigo sacarla,aqui va el source:

Código (vb) [Seleccionar]
'Sub que extrae las direccións url : Http, Ftp y Https _
de un archivo utilizando una expresión regular
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Extraer_Url(url_Path As String, Expresion As String)
   'Variables para usar RegExp
   Dim o_RegExp As RegExp
   Dim o_Match As Match
   Dim o_Matches As MatchCollection
  'Variables Fso para abrir y leer el archivo en la variable contenido
  Dim Contenido As String
  'Lee el contenido del fichero y lo almacena en la var
  Contenido = Text2.Text
  'crea nuevo objeto RegExp
  Set o_RegExp = New RegExp
  ' Para que no distinga mayúsculas de minúsculas
  o_RegExp.IgnoreCase = True
  o_RegExp.Global = True
  ' A la propiedad Pattern se le pasa la Expresión regular
  o_RegExp.Pattern = Expresion
  'Ejecuta y busca
  Set o_Matches = o_RegExp.Execute(Contenido)
  ' Recorre en la colección
  For Each o_Match In o_Matches
     'Agrega las url al control List
     List1.AddItem Replace(o_Match.Value, Chr(34), vbNullString)
  Next

End Sub

Private Sub Command1_Click()
   Dim Expresion As String
   ' Expresión regular
   Expresion = "(ftp|http|https):\/\/(\S)+.swf" & Chr(34)
       Call Extraer_Url(Text2.Text, Expresion)
   Text1.Text = List1.List(0)
   List1.Clear
End Sub

Private Sub Command2_Click()
Text2.Text = WebBrowser1.Document.documentElement.innerHTML
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate ("http://www.web.com/")
   Me.Caption = " Ejemplo que utiliza expresiones regulares" _
                & " Para extraer los enlaces de un archivo"

   Command1.Caption = " Abrir archivo y Extraer "
End Sub


y aqui el original que lo hace através de un common dialog y archivos (este funciona perfectamente)

Código (vb) [Seleccionar]
'Sub que extrae las direccións url : Http, Ftp y Https _
de un archivo utilizando una expresión regular
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Extraer_Url(url_Path As String, Expresion As String)


   'Variables para usar RegExp
   Dim o_RegExp As RegExp
   Dim o_Match As Match
   Dim o_Matches As MatchCollection

 
 
  'Variables Fso para abrir y leer el archivo en la variable contenido
  Dim fso As Object, F As Object, Contenido As String
 
  Set fso = CreateObject("Scripting.FileSystemObject")
  'Abre el archivo
  Set F = fso.OpenTextFile(url_Path, 1)
 
  'Lee el contenido del fichero y lo almacena en la var
  Contenido = F.ReadAll
 
  'crea nuevo objeto RegExp
  Set o_RegExp = New RegExp
 
  ' Para que no distinga mayúsculas de minúsculas
  o_RegExp.IgnoreCase = True
  o_RegExp.Global = True
 
  ' A la propiedad Pattern se le pasa la Expresión regular
  o_RegExp.Pattern = Expresion
  'Ejecuta y busca
  Set o_Matches = o_RegExp.Execute(Contenido)
   
  ' Recorre en la colección
  For Each o_Match In o_Matches
     'Agrega las url al control List
     List1.AddItem Replace(o_Match.Value, Chr(34), vbNullString)
  Next
 
  'Cierra el archivo
  F.Close
 

 
 
End Sub

Private Sub Command1_Click()

   Dim Expresion As String
   
   ' Expresión regular
   Expresion = "(ftp|http|https):\/\/(\S)+.swf" & Chr(34)

   With CommonDialog1
       .ShowOpen
   
       If .FileName = "" Then Exit Sub
   
       'Le pasa el path del archivo a leer y la expresión regular anterior
       Call Extraer_Url(.FileName, Expresion)
   Text1.Text = List1.List(0)
   List1.Clear
   End With

End Sub

Private Sub Form_Load()
   Me.Caption = " Ejemplo que utiliza expresiones regulares" _
                & " Para extraer los enlaces de un archivo"

   Command1.Caption = " Abrir archivo y Extraer "
End Sub


pero yo necesito arreglar el primer source para sacarlo directamente del webbrowser? que estoy haciendo mal? gracias
Título: Re: ayudita expresion regular
Publicado por: raul338 en 28 Octubre 2010, 19:20 PM
Código (vb) [Seleccionar]
Expresion = "(ftp|http|https):\/\/(\S)+.swf" & Chr(34)

No entiendo porque usas el Chr(34) porque sin este funciona perfectamente :)

PD: pon el code en vb asi se ve mejor [code=vb][/code]
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 28 Octubre 2010, 19:28 PM
Cita de: raul338 en 28 Octubre 2010, 19:20 PM
Código (vb) [Seleccionar]
Expresion = "(ftp|http|https):\/\/(\S)+.swf" & Chr(34)

No entiendo porque usas el Chr(34) porque sin este funciona perfectamente :)

PD: pon el code en vb asi se ve mejor [code=vb][/code]
Exacto, tiene pinta de ser eso... :P
Por cierto, actualiza la RegExp como dije en mi anterior post, que vi que no la cambiaste. :silbar:

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 28 Octubre 2010, 21:37 PM
pues si ya funciona a la perfección, gracias por la ayuda  ;-)
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 12:38 PM
una última preguntilla,es que no consigo resolverla,quiero sacar lo siguiente,que con una expresion regular sea:

<div class="col_titulo col_superior" >TEXTO A SACAR</div>

es decir una expresión regular que de alguna forma lea desde <div class="col_titulo col_superior" > hasta </div> y me saque el texto que hay dentro del div. Me haría falta esa expresión regular.

Gracias!
Título: Re: ayudita expresion regular
Publicado por: raul338 en 30 Octubre 2010, 14:52 PM
\<div class\=\"col_titulo col_superior\"\>(.+)\<\/div\>

Y lo sacas con los submatches (capturing groups se llaman en realidad)
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 14:58 PM
Error de sintaxis:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
    Dim Expresion As String
    ' Expresión regular
    Expresion = "\<div class\=\"col_titulo col_superior\"\>(.+)\<\/div\>"
        Call Extraer_Url(Text2.Text, Expresion)
    Text1.Text = List1.List(0)
    List1.Clear
End Sub
Título: Re: ayudita expresion regular
Publicado por: raul338 en 30 Octubre 2010, 15:03 PM
jeje, cuando conviertes comillas en vb se transforma en "" jeje :P

Código (vb) [Seleccionar]
Expresion = "\<div class\=\" & Chr$(34) & "col_titulo col_superior\" & Chr$(34) & "\>(.+)\<\/div\>"

o sino

Expresion = "\<div class\=\""col_titulo col_superior\""\>(.+)\<\/div\>"
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 30 Octubre 2010, 15:13 PM
EDIT: No vi tu respuesta raul! :laugh:

Normal, las comillas entre comillas se ponen dobles comillas... :xD (que bien explico eh?  :-*)

Un ejemplo:
CitarHola "amigo" xD

Seria:
Código (vb) [Seleccionar]
sString = "Hola ""amigo"" xD"




Supongo que buscabas algo asi:
Código (vb) [Seleccionar]
Option Explicit

Public Function Get_Text(ByVal sText As String) As Collection
Const sPatern                   As String = "\<div class\=""col_titulo col_superior"" \>\s*(.+)\s*\<\/div\>"
Dim cTemp                       As New Collection
Dim oRegExp                     As Object
Dim oMatch                      As Object
Dim oMatches                    As Object
Dim Q                           As Long
   
   Set oRegExp = CreateObject("VBScript.RegExp")

   With oRegExp
       .Pattern = sPatern
       .Global = True
       .IgnoreCase = True
   End With

   Set oMatches = oRegExp.Execute(sText)
   
   For Q = 0 To oMatches.Count - 1
       Set oMatch = oMatches(Q)
       cTemp.Add oMatch.SubMatches(0)
   Next Q

   Set Get_Text = cTemp
End Function


Private Sub Form_Load()
Dim vItem                   As Variant
Dim S                       As String
   S = "<div class=""col_titulo col_superior"" >¡¡Que vivan</div>" & vbNewLine & _
       "<div class=""col_titulo col_superior"" >las</div>" & vbNewLine & _
       "<div class=""col_titulo col_superior"" >Ranas! :D</div>"
   
   For Each vItem In Get_Text(S)
       Debug.Print vItem
   Next vItem
End Sub


Resultado :
¡¡Que vivan
las
Ranas! :D





Yo que tu me plantearia aprender RegExp en vez de preguntar cada duda que tengas... ;)

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 15:20 PM
Cita de: raul338 en 30 Octubre 2010, 15:03 PM
jeje, cuando conviertes comillas en vb se transforma en "" jeje :P

Código (vb) [Seleccionar]
Expresion = "\<div class\=\" & Chr$(34) & "col_titulo col_superior\" & Chr$(34) & "\>(.+)\<\/div\>"

o sino

Expresion = "\<div class\=\""col_titulo col_superior\""\>(.+)\<\/div\>"

lo he probado pero me devuelve todo, es decir:

<DIV class=col_titulo col_superior>TEXTO A SACAR</DIV>

y yo lo que necesito es que me saque solo el "TEXTO A SACAR" sin los divs por los lados.

gracias!
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 30 Octubre 2010, 15:22 PM
Creo que no has visto mi respuesta... :silbar:
Como bien te dijo el feo de raul, usa SubMatches. :)

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 15:33 PM
Cita de: Mr. Frog en 30 Octubre 2010, 15:22 PM
Creo que no has visto mi respuesta... :silbar:
Como bien te dijo el feo de raul, usa SubMatches. :)

DoEvents! :P


uso el código que me pusiste pero no hace nada...
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 30 Octubre 2010, 15:39 PM
Jajajajajajajajaja :laugh: :laugh: :laugh: :laugh:

Debug.Print te lo imprime en una ventana llamada Inmediato (esta abajo) cuando lo ejecutas.
(http://visualbasic.freetutes.com/learn-vb6-advanced/images3/18.21.jpg)
No obstante puedes cambiar el Debug.Print por MsgBox si lo deseas.

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 16:34 PM
hice las siguiente modificaciones pero no me devuelve ningún valor

Código (vb) [Seleccionar]
Option Explicit

Public Function Get_Text(ByVal sText As String) As Collection
Const sPatern                   As String = "\<div class\=""col_titulo col_superior"" \>\s*(.+)\s*\<\/div\>"
Dim cTemp                       As New Collection
Dim oRegExp                     As Object
Dim oMatch                      As Object
Dim oMatches                    As Object
Dim Q                           As Long

    Set oRegExp = CreateObject("VBScript.RegExp")

    With oRegExp
        .Pattern = sPatern
        .Global = True
        .IgnoreCase = True
    End With

    Set oMatches = oRegExp.Execute(sText)

    For Q = 0 To oMatches.Count - 1
        Set oMatch = oMatches(Q)
        cTemp.Add oMatch.SubMatches(0)
    Next Q

    Set Get_Text = cTemp
End Function
'Sub que extrae las direccións url : Http, Ftp y Https _
de un archivo utilizando una expresión regular
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Extraer_Url(url_Path As String, Expresion As String)
    'Variables para usar RegExp
    Dim o_RegExp As RegExp
    Dim o_Match As Match
    Dim o_Matches As MatchCollection
   'Variables Fso para abrir y leer el archivo en la variable contenido
   Dim Contenido As String
   'Lee el contenido del fichero y lo almacena en la var
   Contenido = Text2.Text
   'crea nuevo objeto RegExp
   Set o_RegExp = New RegExp
   ' Para que no distinga mayúsculas de minúsculas
   o_RegExp.IgnoreCase = True
   o_RegExp.Global = True
   ' A la propiedad Pattern se le pasa la Expresión regular
   o_RegExp.Pattern = Expresion
   'Ejecuta y busca
   Set o_Matches = o_RegExp.Execute(Contenido)
   ' Recorre en la colección
   For Each o_Match In o_Matches
      'Agrega las url al control List
      List1.AddItem Replace(o_Match.Value, Chr(34), vbNullString)
   Next

End Sub

Private Sub Command1_Click()
    Dim Expresion As String
    ' Expresión regular
    Expresion = "\<div class\=\""col_titulo col_superior\""\>(.+)\<\/div\>"
        Call Extraer_Url(Text2.Text, Expresion)
    Text1.Text = List1.List(0)
    List1.Clear
End Sub

Private Sub Command2_Click()
Text2.Text = WebBrowser1.Document.documentElement.innerHTML
End Sub

Private Sub Command3_Click()
    Dim vItem                   As Variant
Dim S                       As String
    S = Text1.Text

    For Each vItem In Get_Text(S)
        Text3.Text = vItem
    Next vItem
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate ("http://www.rinconjuegos.com/just-jhon/")
    Me.Caption = " Ejemplo que utiliza expresiones regulares" _
                 & " Para extraer los enlaces de un archivo"

    Command1.Caption = " Abrir archivo y Extraer "
End Sub
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 30 Octubre 2010, 16:52 PM
.
Si solo necesitas una extracción haz asi:

Código (vb) [Seleccionar]
Option Explicit

Public Function Get_Text(ByVal sText As String) As String
Const sPatern                   As String = "\<div class\=""col_titulo col_superior"" \>\s*(.+)\s*\<\/div\>"
Dim oRegExp                     As Object
Dim oMatch                      As Object
Dim oMatches                    As Object
   
    Set oRegExp = CreateObject("VBScript.RegExp")

    With oRegExp
        .Pattern = sPatern
        .Global = True
        .IgnoreCase = True
    End With

    Set oMatches = oRegExp.Execute(sText)
    Set oMatch = oMatches(0)

    Get_Text = oMatch.SubMatches(0)
End Function

Private Sub Form_Load()
Dim S                       As String
    S = "<div class=""col_titulo col_superior"" > ¡Vivan las ranas!   </div>"
   
    MsgBox Get_Text(S)
End Sub


Personalmente ya no te voy a ayudar mas en este hilo, te estamos haciendo los deberes de una manera exagerada. :¬¬
Creo que debes estudiar mucho, tienes algunos errores muy basicos. :-\
Si te fijas, con las funciones que te di y un poco de sentido comun, no te deberia de costar hacerlo. ;)

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 17:01 PM
vale,solo una cosilla mas,lo que me devuelve tu code es "vivan las ranas",pero yo quiero que me devuelva lo que hay escrito en el Text1.Text y hago lo siguiente:

Código (vb) [Seleccionar]
Dim S                       As String
    S = Text1.Text

    MsgBox Get_Text(S)


pero me da error,porque? gracias!
Título: Re: ayudita expresion regular
Publicado por: raul338 en 30 Octubre 2010, 17:03 PM
Hay algo mal, por ahi no es la expresion regular que necesitas

EDIT:

Cita de: viher en 30 Octubre 2010, 16:34 PM
Código (vb) [Seleccionar]

  For Each o_Match In o_Matches
     'Agrega las url al control List
     List1.AddItem Replace(o_Match.Value, Chr(34), vbNullString)
  Next


Deberías cambiarlo por esto

Código (vb) [Seleccionar]

  For Each o_Match In o_Matches
     'Agrega las url al control List
     List1.AddItem Replace(o_Match.SubMatches(0), Chr(34), vbNullString)
  Next


Porque es como te dije, debes obtener los submatches, no los matches en si
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 17:13 PM
Cita de: raul338 en 30 Octubre 2010, 17:03 PM
Hay algo mal, por ahi no es la expresion regular que necesitas

EDIT:

Cita de: viher en 30 Octubre 2010, 16:34 PM
Código (vb) [Seleccionar]

   For Each o_Match In o_Matches
      'Agrega las url al control List
      List1.AddItem Replace(o_Match.Value, Chr(34), vbNullString)
   Next


Deberías cambiarlo por esto

Código (vb) [Seleccionar]

   For Each o_Match In o_Matches
      'Agrega las url al control List
      List1.AddItem Replace(oMatch.SubMatches(0), Chr(34), vbNullString)
   Next


Porque es como te dije, debes obtener los submatches, no los matches en si

Variable no definida  :-\
Título: Re: ayudita expresion regular
Publicado por: raul338 en 30 Octubre 2010, 17:17 PM
viher fijate las variables o_Match, o_Matches, y o_RegExp .... cambiales el nombre :¬¬

en este pequeño tipo de cosas las deberias hacer por ti mismo

Aunque el fallo fue mio, deberias darte cuenta
Título: Re: ayudita expresion regular
Publicado por: viher en 30 Octubre 2010, 17:31 PM
Cita de: raul338 en 30 Octubre 2010, 17:17 PM
viher fijate las variables o_Match, o_Matches, y o_RegExp .... cambiales el nombre :¬¬

en este pequeño tipo de cosas las deberias hacer por ti mismo

Aunque el fallo fue mio, deberias darte cuenta

gracias raul338,ya lo conseguí  ;-)
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 31 Octubre 2010, 02:56 AM
Cita de: viher en 30 Octubre 2010, 17:31 PM
Cita de: raul338 en 30 Octubre 2010, 17:17 PM
viher fijate las variables o_Match, o_Matches, y o_RegExp .... cambiales el nombre :¬¬

en este pequeño tipo de cosas las deberias hacer por ti mismo

Aunque el fallo fue mio, deberias darte cuenta

gracias raul338,ya lo conseguí  ;-)

hallelujah :laugh: :laugh: :laugh: :laugh:

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 31 Octubre 2010, 12:45 PM
alguien me puede pasar algún tutorial para aprender Regexp?? ya que he estado mirando y no he encontrado ninguno para VB6. Gracias!
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 31 Octubre 2010, 15:13 PM
Tutoriales RegExp en vb6 (ingles) (http://lmgtfy.com/?q=vb6+regexp)
Tutoriales RegExp en vb6 (español) (http://tutoriales%20regexp%20en%20vb6%20(ingles))

Con esto te podrias hacer una idea, y viendo ejemplos hechos tambien... ;)

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 2 Noviembre 2010, 20:38 PM
estuve leyendome unos tutoriales e hice esta expresión regular,pero no me funciona:

\<DIV align\=\""justify""\\>(.+)\<\/DIV\>

lo que quiero es que me saque el texto que hay entre <div align="justify"> TEXTO A SACAR </div>,pero no me funciona,cual es el problema? gracias!
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 2 Noviembre 2010, 21:00 PM
Prueba a ponerlo en minusculas, si funciona pon el IgnoreCase en true(para ignorar mayusculas)
Seria asi:
Código (vb) [Seleccionar]
sPatern = "\<div align\=""justify""\>(.+)\<\/div\>"
Es sentido comun, tampoco creo que te costara mucho cuando se te dio un ejemplo casi igual post atras... :rolleyes:

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 2 Noviembre 2010, 23:20 PM
no me funciona :(

Código (vb) [Seleccionar]
Sub Extraer_Url(url_Path As String, Expresion As String)
    'Variables para usar RegExp
    Dim o_RegExp As RegExp
    Dim o_Match As Match
    Dim o_Matches As MatchCollection
   'Variables Fso para abrir y leer el archivo en la variable contenido
   Dim Contenido As String
   'Lee el contenido del fichero y lo almacena en la var
   Contenido = Text2.Text
   'crea nuevo objeto RegExp
   Set o_RegExp = New RegExp
   ' Para que no distinga mayúsculas de minúsculas
   o_RegExp.IgnoreCase = True
   o_RegExp.Global = True
   ' A la propiedad Pattern se le pasa la Expresión regular
   o_RegExp.Pattern = Expresion
   'Ejecuta y busca
   Set o_Matches = o_RegExp.Execute(Contenido)
   ' Recorre en la colección
   For Each o_Match In o_Matches
      'Agrega las url al control List
      List1.AddItem Replace(o_Match.Value, Chr(34), vbNullString)
   Next

End Sub

Private Sub Command1_Click()
    Text2.Text = WebBrowser1.Document.documentElement.innerHTML
    Dim Expresion As String
    ' Expresión regular
    Expresion = "\<div align\=\""justify""\\>(.+)\<\/div\>"
        Call Extraer_Url(Text2.Text, Expresion)
    Text1.Text = List1.List(0)
    List1.Clear
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate ("http://www.web.com")
End Sub
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 3 Noviembre 2010, 00:16 AM
A ver, de entrada, no has puesto la RegExp que te puse antes...
Cita de: Mr. Frog en  2 Noviembre 2010, 21:00 PM
Prueba a ponerlo en minusculas, si funciona pon el IgnoreCase en true(para ignorar mayusculas)
Seria asi:
Código (vb) [Seleccionar]
sPatern = "\<div align\=""justify""\>(.+)\<\/div\>"
Es sentido comun, tampoco creo que te costara mucho cuando se te dio un ejemplo casi igual post atras... :rolleyes:

DoEvents! :P
Ademas, tienes un ejemplo practicamente igual post atras...
No me gusta tu forma de hacerlo, prefiero una funcion y saltarme tener que añadir las referencias...
Algo asi: (Solo he cambiado un par de cosas)
Código (vb) [Seleccionar]
Option Explicit

Public Function Get_Text(ByVal sText As String, ByVal sPatern As String) As Collection
Dim cTemp                       As New Collection
Dim oRegExp                     As Object
Dim oMatch                      As Object
Dim oMatches                    As Object
Dim Q                           As Long

    Set oRegExp = CreateObject("VBScript.RegExp") 'Evitamos la referencia

    With oRegExp
        .Pattern = sPatern
        .Global = True
        .IgnoreCase = True
    End With

    Set oMatches = oRegExp.Execute(sText)

    For Q = 0 To oMatches.Count - 1
        Set oMatch = oMatches(Q)
        cTemp.Add oMatch.SubMatches(0)
    Next Q

    Set Get_Text = cTemp
End Function

Private Sub Form_Load()
Dim vItem                   As Variant
Dim S                       As String
    S = "<div align=""justify"">¡¡Que vivan</div>" & vbNewLine & _
        "<div align=""justify"">las</div>" & vbNewLine & _
        "<div align=""justify"">Ranas! :D</div>"

    'La RegExp bien hecha
    For Each vItem In Get_Text(S, "\<div align\=""justify""\>(.+)\<\/div\>")
        MsgBox vItem
    Next vItem
End Sub

Te lo repito de nuevo, lee manuales, ya no te digo tanto de RegExp sino de vB.

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 3 Noviembre 2010, 00:43 AM
sige sin devolverme nada

Código (vb) [Seleccionar]
Option Explicit

Public Function Get_Text(ByVal sText As String, ByVal sPatern As String) As Collection
Dim cTemp                       As New Collection
Dim oRegExp                     As Object
Dim oMatch                      As Object
Dim oMatches                    As Object
Dim Q                           As Long

   Set oRegExp = CreateObject("VBScript.RegExp") 'Evitamos la referencia

   With oRegExp
       .Pattern = sPatern
       .Global = True
       .IgnoreCase = True
   End With

   Set oMatches = oRegExp.Execute(sText)

   For Q = 0 To oMatches.Count - 1
       Set oMatch = oMatches(Q)
       cTemp.Add oMatch.SubMatches(0)
   Next Q

   Set Get_Text = cTemp
End Function
Private Sub Command1_Click()
   Text2.Text = WebBrowser1.Document.documentElement.innerHTML
   Dim vItem                   As Variant
Dim S                       As String
   S = Text2.Text
   For Each vItem In Get_Text(S, "\<div align\=""justify""\>(.+)\<\/div\>")
       MsgBox vItem
   Next vItem
   Text1.Text = List1.List(0)
   List1.Clear
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate ("http://www.web.com/")
End Sub
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 3 Noviembre 2010, 01:56 AM
Si te fijas, el code de mi anterior post funciona no?
Pues ahora te queda la intrincada y temible tarea de adaptarlo a tus necesidades! :laugh:
WooooW :o
Seras capaz? >:D
Yo ya no te digo más...

DoEvents! :P
Título: Re: ayudita expresion regular
Publicado por: viher en 6 Noviembre 2010, 20:12 PM
pues no soy capaz,quizás no sea tan listo como tu   :-\
Título: Re: ayudita expresion regular
Publicado por: Psyke1 en 6 Noviembre 2010, 21:25 PM
Cita de: viher en  6 Noviembre 2010, 20:12 PM
pues no soy capaz,quizás no sea tan listo como tu   :-\
No hablo de ser o no listo, hablo de leer manuales y probar, nada más...
Aprenderas 5 veces más que si te damos la solucion a cada problema que tengas.

DoEvents! :P