Visual Basic.NET - Problema con Expresiones Regulares

 
Vista:

Problema con Expresiones Regulares

Publicado por final (1 intervención) el 08/12/2005 02:00:45
Supongamos ke keremos leer todos los archivos en varios directorios y
desplegar sus nombres o copiarlos en un directorio para esto simplemente
hariamos lo siguiente:

Sub Main()
Dim files() As String = {"C:\prueva\Test.txt", "C:\prueva1\File.txt", "C:\prueva\3.txt"}
Dim destino As String = "C:\dest\"
Dim nombrefich As String
Dim r As New
System.Text.RegularExpressions.Regex("(.:)(\\\w+\\)(?<fichero>\w+\.\w+)", Text.RegularExpressions.RegexOptions.Compiled)
'para copiarlos solo hariamos lo siguiente...
For Each nombre As String In files
If r.Match(nombre).Success Then
nombrefich = r.Match(nombre).Result("${fichero}")
Console.WriteLine("Copiando: " & nombre & " A: " & destino & nombrefich)
System.IO.File.Copy(nombre, destino & nombrefich)
End If
Next
Console.ReadLine()
End Sub

Ok Hasta aki todo anda bien pero... ¿y si el directorio donde se encuentra
contiene uno o mas subdirectorios? es decir si es "C:\prueva1\1\file.txt" o
si tuviese espacios "C:\prueva 1\file.txt" o son las dos cosas?? o si el
nombre del directorio contiene puntos "C:\mis.txt\file.txt" @_@(el solo
pensar en todas las probabilidades me marea) este codigo no funcionaria ya
que busca un caracter seguido de dos puntos "(.:)" seguido de una
antidiagonal seguida de una o mas palabras seguidas de una antidiagonal
"(\\\w+\\)" seguida de una o mas palabras seguidas de un punto seguido de
una o mas palabras y vaciarlo en fichero XD "(?<fichero>\w+\.\w+)" (@_@ Me
encanta lo complejo ke se ve esto jeje sobre todo para explicarlo XDXD pero
no es tanto XDXD) por lo que no encontraria nada en dicha cadena mi pregunta
es: ¿Como Puedo hacerle para que sin importar la profundidad del directorio
o si tiene espacios me encuentre el nombre del fichero? GRACIAS XD

Aunque este no es mi problema real ya que este se solucionaria facilmente
usando la clase system.io.fileinfo sobre cada entrada y posteriormente
obtener el name o fullname segun sea necesario... pero mi problema es que mi
programa obtiene los datos del usuario y los coloca en un array
posteriormente realiza las acciones necesarias con los archivos este es el
ejemplo mas sencillo que se me ocurrio XD para ke kede mas clara mi duda de
otra forma tendria que ponder todo el codigo de la clase en la cual estoy
trabajando XDXD y eso no es muy viable...

ATT Final XD

------Sabio no es aquel que lo sabe todo si no el que sabe donde buscar y
como solucionar sus problemas XD------
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder