ayudita expresion regular

Iniciado por viher, 26 Octubre 2010, 21:22 PM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

Tutoriales RegExp en vb6 (ingles)
Tutoriales RegExp en vb6 (español)

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

DoEvents! :P

viher

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!

Psyke1

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

viher

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

Psyke1

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

viher

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

Psyke1

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

viher

pues no soy capaz,quizás no sea tan listo como tu   :-\

Psyke1

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