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:
"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
/PhysicalDisk\\[0-9].*\\% Disk Write Time/
Y ya puestos, todavía algo más simplificado sería tal que así:
O incluso:
O reducido al máximo:
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.