2010-04-12 9 views
5

Necesito una expresión regular .Net que coincida con cualquier cosa que no sea exactamente la coincidencia completa de cadena especificada. Así que, básicamente:.Net Expresión regular: cómo hacer una exclusión de coincidencia exacta en una cadena completa?

^Index$ 

... es la única exclusión que me importa. Las cadenas pueden comenzar con, terminar con o contener "Índice", pero no concuerdan exactamente. Parece que mi cerebro no funciona hoy y no estoy trabajando en esto.

EDITAR

la respuesta debe ser a través del patrón de sí mismo, como estoy pasando un argumento a una biblioteca de terceros y no tienen control sobre el proceso que no sea a través del patrón de expresión.

+0

¿Puede dar más información? Es decir, ¿por qué expresiones regulares? Podrías lograr esto más simplemente con una comparación 'myString! =" Index ", y entonces no necesitas preocuparte por las expresiones regulares. – alastairs

+0

Tengo que pasar un argumento a algo que toma una expresión regular para que coincida con otra cosa. No tengo ningún control sobre cómo funciona esa cosa que no sea "coincida o no coincida de acuerdo con esta expresión regular" –

Respuesta

5

Que debe hacer el truco:

^(?!Index$) 
+0

Sí, esto funciona mejor. ¡Es tan obvio ahora que lo pienso! –

+0

¡Fantástico! :-) - – YOU

+0

Gracias Nathan y S.Mark! – Lucero

4

Si Regex es Must,

Match match = Regex.Match(input, @"^Index$"); 

if (!match.Success){ 
    //do something 
} 

Y con horrible manera

Match match = Regex.Match(input, @"^(.*(?<!Index)|(?!Index).*)$"); 

if (match.Success){ 
    //do something 
} 

Nota: segundo no se prueba, y necesidad motor de expresiones regulares para apoyar mirada llena adelante y mirar detrás

+0

La segunda funciona, ¡Gracias! –

+0

Hay una manera más simple y más rápida que la segunda, ver mi respuesta. – Lucero

+0

Sí, ¡por supuesto! – YOU

0

¿Qué hay de if (!r.Match("^Index$").Success) ...?

+0

No, tiene que estar en la sintaxis de expresiones regulares. El único control que tengo sobre lo que hago aquí es a través del patrón en sí. –

0

puede comprobar !regex.Match.Success

Cuestiones relacionadas