elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda con expresión regular
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con expresión regular  (Leído 3,554 veces)
betopuck

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con expresión regular
« en: 3 Octubre 2017, 16:38 pm »

Hola

Tengo estas rutas:

PhysicalDisk\0 C:\% Disk Write Time
PhysicalDisk\1 D:\% Disk Write Time
PhysicalDisk\2 E:\% Disk Write Time

PhysicalDisk\_Total\% Disk Write Time

De las cuales necesito crear una expresión regular para excluir "_Total".

La siguiente expresión me manda todo:

/PhysicalDisk\\.*[a-z0-9-].*\\% Disk Write Time/

Pero cuando intento excluir a "_Total" con lo siguiente no me resulta:

/PhysicalDisk\\.*(?!_Total|[a-z0-9-].*).*\\% Disk Write Time/

¿Logran visualizar algún error ?

Gracias



En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con expresión regular
« Respuesta #1 en: 3 Octubre 2017, 20:19 pm »

QUé tal este:
Código:
/PhysicalDisk\\(?!_Total\\).*[a-z0-9-].*\\% Disk Write Time/

Simplemente, que busque los caracteres como en tu primera expresión, solo que si encuentra un "_Total\" de primeras, no sirve. (La \ espara evitar que falle un fragmento que tan solo empiece por "_Total", como: PhysicalDisk\_Total sd\% Disk Write Time. Si quieres que esto también falle, basta quitarle el "\".


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Ayuda con expresión regular
« Respuesta #2 en: 4 Octubre 2017, 16:50 pm »

Simplifícalo...
Si todas las rutas 'requeridas' empiezan por un número, pués queda bastante claro

/PhysicalDisk\\[0-9].*\\% Disk Write Time/
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda con expresión regular
« Respuesta #3 en: 4 Octubre 2017, 17:40 pm »

Pero cuando intento excluir a "_Total" con lo siguiente no me resulta:

¿Logran visualizar algún error ?

Hola.

Al formular una pregunta relacionada con la programación, empieza por especificar en qué lenguaje de programación estás construyendo esa expresión regular.

La sintaxis de una expresión regular no es algo universal, aunque una expresión "simple" va a funcionar en cualquier lenguaje, pero cada lenguaje de programación tiene su motor de RegEx con sus propias reglas sintácticas y semánticas para muchas cosas, que vuelve incompatible una expresión regular construida bajo las reglas de cierto lenguaje/motor, con el de otro diferente.

Basicamente la respuesta a la pregunta "¿cómo excluir una palabra de la captura?" y si el motor RegEx del lenguaje que uses te lo permite, sería construir una expresión de vista negativa (o Negative Lookahead por su nombre en Inglés).
Aquí tienes info al respecto y para diferentes lenguajes:

En C# / VB.NET la solución se aplicaría mediante esta sintaxis:
Código:
"PhysicalDisk\\(?!_Total).+\\.+"

De todas formas lo más simple sería seguir la solución alternativa propuesta por @NEBIRE:
Simplifícalo...
Si todas las rutas 'requeridas' empiezan por un número, pués queda bastante claro

Código:
/PhysicalDisk\\[0-9].*\\% Disk Write Time/

Y ya puestos, todavía algo más simplificado sería tal que así:
Código:
PhysicalDisk\\\d.+\\.+

O incluso:
Código:
[a-zA-Z]+\\\d.+

O reducido al máximo:
Código:
.+\\\d.+

Cualquiera de esas expresiones están libres de falsos positivos siempre y cuando las cadenas de texto a analizar tengan el mismo formato que has descrito al principio. Todo depende de lo que realmente necesites, pero no es estrictamente necesario recurrir a un lookahead negativo.

Nota: El metacaracter "\d" por lo general solamente captura dígitos del 0 al 9, pero según el lenguaje de programación en el que se aplique tiene un comportamiento diferente (captura distintos caracteres).

Nota 2: En varios lenguajes de programación puedes simplificar el patrón de captura de caracteres alfabéticos en minúscula y mayúscula "[a-zA-Z]" por: "[A-z]" (nótese primero una "A" MAYÚSCULA seguido de "z" minúscula, no al revés).

Saludos.
« Última modificación: 4 Octubre 2017, 17:57 pm por Eleкtro » En línea



ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con expresión regular
« Respuesta #4 en: 4 Octubre 2017, 19:52 pm »

En varios lenguajes de programación puedes simplificar el patrón de captura de caracteres alfabéticos en minúscula y mayúscula "[a-zA-Z]" por: "[A-z]" (nótese primero una "A" MAYÚSCULA seguido de "z" minúscula, no al revés).

[A-z] no hace lo que esperas. Entre la A y la z hay más caracteres que letras. No confundir con [A-Za-z].
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda con expresión regular
« Respuesta #5 en: 4 Octubre 2017, 20:19 pm »

[A-z] no hace lo que esperas. Entre la A y la z hay más caracteres que letras. No confundir con [A-Za-z].

Soy consciente de que aparte de capturar cualquer caracter en minúscula en el rango "a" hasta "z", y cualquer caracter alfabético en mayúscula en el rango "A" hasta "Z", también capturará algunos símbolos como "[" y "]", pero eso no influye en la solución que proporcioné. De todas formas me parece correcto que lo hayas advertido.

Saludos
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Expresión Regular
Desarrollo Web
Shell Root 4 4,421 Último mensaje 10 Abril 2011, 22:26 pm
por Shell Root
ayuda con una expresion regular :(
Programación General
Elemental Code 6 4,735 Último mensaje 23 Mayo 2012, 04:10 am
por Elemental Code
ayuda expresión regular [SOLUCIONADO]
.NET (C#, VB.NET, ASP)
soru13 0 1,779 Último mensaje 16 Marzo 2013, 17:41 pm
por soru13
Ayuda Expresion Regular
Ingeniería Inversa
macmaikel 2 2,663 Último mensaje 11 Junio 2013, 03:36 am
por macmaikel
Ayuda con expresion regular texto y contenido dentro de llaves.
Programación General
0roch1 0 2,431 Último mensaje 25 Julio 2019, 22:56 pm
por 0roch1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines