Problema con expresiones regulares

20/10/2008 - 16:25 por Julian Mejio | Informe spam
Hola.
Tengo un problema (de ignorancia). Necesito una expresión regular que me permita
capturar dos elementos de una cadena de texto que entro como parámetro en una
función.
Cuando es solo un elemento, no hay problema (uso @"([^\.]+)$" como expresión
regular para capturar la extensión de un archivo, y funciona bien), pero cuando
quiero capturar más de un elemento, no me da (uso @"(.+)\\(.+)$" para capturar
el directorio y el nombre del archivo, pero me arroja una colección vacía).
Sé que mi problema consiste en la construcción de las expresiones regulares, ya
que he venido trabajando con otros lenguajes de programación las expresiones
regulares, pero es primera vez que trabajo con C#. Si alguien tiene alguna
información acerca de la construcción de expresiones regulares en .Net o por lo
menos que me oriente en esto, les agradecería.

Preguntas similare

Leer las respuestas

#1 xcal
20/10/2008 - 16:47 | Informe spam
y por qué no te sirve

path = @" c:\Docs\... ";
Path.GetFileName(path )
Path.GetDirectory(path )
Path.GetFileNameWinthoutExtension(path )

creo que esos son los nombres de los métodos que precisas, tienes que
verificar
espero ayude, Carlos.

"Julian Mejio" wrote in message
news:uf221%
Hola.
Tengo un problema (de ignorancia). Necesito una expresión regular que me
permita
capturar dos elementos de una cadena de texto que entro como parámetro en
una
función.
Cuando es solo un elemento, no hay problema (uso @"([^\.]+)$" como expresión
regular para capturar la extensión de un archivo, y funciona bien), pero
cuando
quiero capturar más de un elemento, no me da (uso @"(.+)\\(.+)$" para
capturar
el directorio y el nombre del archivo, pero me arroja una colección vacía).
Sé que mi problema consiste en la construcción de las expresiones regulares,
ya
que he venido trabajando con otros lenguajes de programación las expresiones
regulares, pero es primera vez que trabajo con C#. Si alguien tiene alguna
información acerca de la construcción de expresiones regulares en .Net o por
lo
menos que me oriente en esto, les agradecería.
Respuesta Responder a este mensaje
#2 Julian Mejio
20/10/2008 - 17:13 | Informe spam
Bueno, no puedo gastar muchos recursos del sistema, así que trato de usar sólo
lo necesario, y en este caso no quiero meterme muy de lleno al sistema de
archivos, así que si ya tengo la ruta, pues sólo manejaría la ruta en sí y no
tendría que cargar otras cosas que no estaría utilizando.
Pero bueno, ya he solucionado el problema y sigo usando expresiones regulares,
simplemente cambié Regex.Matches() por Regex.Match(cadTxt).Result("${nom"}),
donde "${nom}" es la identificación de un subgrupo de la expresión regular,
declarado dentro de la misma expresión: new Regex(@"^(?<sec>.+)\\(?<nom>.+)$",
RegexOptions.Compiled).

xcal wrote:
y por qu� no te sirve

path = @" c:\Docs\... ";
Path.GetFileName(path )
Path.GetDirectory(path )
Path.GetFileNameWinthoutExtension(path )

creo que esos son los nombres de los m�todos que precisas, tienes que
verificar
espero ayude, Carlos.

"Julian Mejio" wrote in message
news:uf221%
Hola.
Tengo un problema (de ignorancia). Necesito una expresi�n regular que me
permita
capturar dos elementos de una cadena de texto que entro como par�metro en
una
funci�n.
Cuando es solo un elemento, no hay problema (uso @"([^\.]+)$" como expresi�n
regular para capturar la extensi�n de un archivo, y funciona bien), pero
cuando
quiero capturar m�s de un elemento, no me da (uso @"(.+)\\(.+)$" para
capturar
el directorio y el nombre del archivo, pero me arroja una colecci�n vac�a).
S� que mi problema consiste en la construcci�n de las expresiones regulares,
ya
que he venido trabajando con otros lenguajes de programaci�n las expresiones
regulares, pero es primera vez que trabajo con C#. Si alguien tiene alguna
informaci�n acerca de la construcci�n de expresiones regulares en .Net o por
lo
menos que me oriente en esto, les agradecer�a.


Respuesta Responder a este mensaje
#3 xcal
20/10/2008 - 17:53 | Informe spam
"no puedo gastar muchos recursos del sistema"

errado, usar un nuevo namespace, en este caso System.IO, no te consume mas
memoria, a menos creo, que estes usando sistemas "embedded", si el namespace
ya esta instalado es solo usar.

espero ayude, Carlos.

"Julian Mejio" wrote in message
news:
Bueno, no puedo gastar muchos recursos del sistema, así que trato de usar
sólo
lo necesario, y en este caso no quiero meterme muy de lleno al sistema de
archivos, así que si ya tengo la ruta, pues sólo manejaría la ruta en sí y
no
tendría que cargar otras cosas que no estaría utilizando.
Respuesta Responder a este mensaje
#4 xcal
20/10/2008 - 17:59 | Informe spam
bueno, no te consume mas memoria, si solo haces uso directo, caso construyas
algo,
dependiendo del caso, obvio que si vas a usar mas memoria, pero en caso
directo,
usar métodos existentes, etc, creo que si hay mas gasto adicional de memoria
este es insignificante

"xcal" wrote in message
news:

"no puedo gastar muchos recursos del sistema"

errado, usar un nuevo namespace, en este caso System.IO, no te consume mas
memoria, a menos creo, que estes usando sistemas "embedded", si el


namespace
ya esta instalado es solo usar.

espero ayude, Carlos.

"Julian Mejio" wrote in message
news:
Bueno, no puedo gastar muchos recursos del sistema, así que trato de usar
sólo
lo necesario, y en este caso no quiero meterme muy de lleno al sistema de
archivos, así que si ya tengo la ruta, pues sólo manejaría la ruta en sí y
no
tendría que cargar otras cosas que no estaría utilizando.


Respuesta Responder a este mensaje
#5 Julian Mejio
20/10/2008 - 18:57 | Informe spam
En efecto serían muchísimas lecturas en el sistema de archivos, cosa que
ralentizaría tanto el proceso, como la escritura y lectura en disco, en vez de
sólo, por lo menos, procesar cadenas de texto. A eso me refería. Igualmente croe
que voy a tener que utilizar System.IO en algunas funciones, así que también la
solución que me diste me puede servir.
Gracias por la ayuda.

xcal wrote:
bueno, no te consume mas memoria, si solo haces uso directo, caso construyas
algo,
dependiendo del caso, obvio que si vas a usar mas memoria, pero en caso
directo,
usar m�todos existentes, etc, creo que si hay mas gasto adicional de memoria
este es insignificante

"xcal" wrote in message
news:
"no puedo gastar muchos recursos del sistema"

errado, usar un nuevo namespace, en este caso System.IO, no te consume mas
memoria, a menos creo, que estes usando sistemas "embedded", si el


namespace
ya esta instalado es solo usar.

espero ayude, Carlos.

"Julian Mejio" wrote in message
news:
Bueno, no puedo gastar muchos recursos del sistema, as� que trato de usar
s�lo
lo necesario, y en este caso no quiero meterme muy de lleno al sistema de
archivos, as� que si ya tengo la ruta, pues s�lo manejar�a la ruta en s� y
no
tendr�a que cargar otras cosas que no estar�a utilizando.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida