ayudita expresion regular

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

0 Miembros y 3 Visitantes están viendo este tema.

Psyke1

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

viher

pues si ya funciona a la perfección, gracias por la ayuda  ;-)

viher

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!

raul338

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

Y lo sacas con los submatches (capturing groups se llaman en realidad)

viher

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

raul338

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\>"

Psyke1

#16
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

viher

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!

Psyke1

Creo que no has visto mi respuesta... :silbar:
Como bien te dijo el feo de raul, usa SubMatches. :)

DoEvents! :P

viher

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...