2011-08-12 10 views
5

pregunta sencilla .. Tal vezExpresión regular: tomar literalmente cadena con caracteres especiales re-

String text = "fake 43 60 fake"; 
String patt = "[43.60]"; 

Match m = Regex.Match(text, patt) 

En esta situación, m.Success = true porque el punto de reemplazar cualquier carácter (también el espacio). Pero debo hacer coincidir la cadena literalmente en el patt.

Por supuesto, se puede utilizar el '\' antes del punto en el Patt

String patt = @"[43\.60]"; 

Así que la m.Success = falso, pero no hay más caracteres especiales en la expresión-regular mundo.

Mi pregunta es, ¿cómo puedo usar la expresión regular que una cadena se tomará literalmente como se establece. Entonces '43 .60 'debe coincidir exactamente con '43 .60'. '43? 60 'debe coincidir con '43? 60' ....

gracias.

Respuesta

14

Para obtener una expresión regular de fallos literal:

string escaped = Regex.Escape(input); 

Por ejemplo, para que coincida con el literal [43.60]:

string escaped = Regex.Escape(@"[43.60]"); 

da la cadena con contenido: \[43\.60].

Puede utilizar este contenido escapado para crear una expresión regular; por ejemplo:

string find = "43?60"; 
string escaped = Regex.Escape(find); 
bool match = Regex.IsMatch("abc 43?60", escaped); 

Tenga en cuenta que en muchos casos usted querrá combinan la cadena escapada con algún otro fragmento de expresiones regulares para hacer un patrón completo.

+0

¡Gracias! Sé que hay algo para estas situaciones ... – robertpnl

Cuestiones relacionadas