2011-04-27 15 views
28

En C#, escribo la siguiente cadena a una variable de cadena, retorno de carro y todo:C# expresión regular para que coincida con CUALQUIER carácter?

asdfasdfasdf 
asdfas<test>asdfasdf 

asdfasdf<test>asdfasdf 

En Notepad2, utilizo esta expresión regular:

<test>.*<test> 

Se selecciona este texto como se esperaba:

<test>asdfasdf 

asdfasdf<test> 

Sin embargo, cuando hago esto en C#:

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty); 

No quita la cuerda. Sin embargo, cuando ejecuto este código en una cadena sin ningún retorno de carro, funciona.

Así que lo que estoy buscando es una expresión regular que coincida con CUALQUIER personaje, independientemente de si es un código de control o un personaje normal.

Respuesta

47

que se olvidó de especificar que la operación de expresiones regulares (en concreto, el operador .) debe coincidir con todos caracteres (no todos los personajes excepto \ n):

System.Text.RegularExpressions.Regex.Replace(s, "<test>.*<test>", string.Empty, RegexOptions.Singleline); 

Todo lo que tenía que añadir era RegexOptions.Singleline .

+1

Har! ¡Tienes razón! Marcaré su respuesta como la respuesta en 10 minutos cuando stackoverflow lo permita = P. – oscilatingcretin

10

Utilice el modo de una sola línea:

Regex.Replace(s, "<test>.*<test>", "", RegexOptions.Singleline); 
Cuestiones relacionadas