ayudita expresion regular

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

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

viher

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

raul338

(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?\*.swf

Deberia ir en Programacion general esto :P

viher

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:

Psyke1

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

raul338

^(?:(?>ht|f)tps?://)?(?:\w+[.-]\w+)+(?::\d+)?(?:\/[\w\-\.\?\,\'+&%\$_]*\.swf)*(?:\??(?:[\w\-\._]+=[\w\-\.\?\,\\'\/+%\$_]*&?)*)?(?:\#[\w]+)?$

Ahi esta mi expreg perfecta para swf :)

Psyke1

Ook raul, tu ganas!! :laugh: :laugh: :laugh: :laugh:
Muy bueno.

DoEvents! :P

viher

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  ;-)

Psyke1

Oops! una pequeña corrección, mi RegExp seria asi:
(https?|ftp):\/\/(\S)+\.swf

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

DoEvents! :P

viher

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

raul338

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]