2012-05-20 13 views
5

Aquí está mi expresión regular: Regex r = new Regex("start(.*?)end", RegexOptions.Multiline);C# Regex hallazgo cuerda entre dos cuerdas con nuevaLinea

Eso significa que quiero conseguir las cosas entre "start" y "end". Pero el problema es que entre el inicio y el final hay una nueva línea o \n y la expresión regular no devuelve nada.

Entonces, ¿cómo hago para quitar expresiones regulares encuentran \n?

Respuesta

5

El nombre de la opción Multiline es engañosa, como es el de la opción correcta - Singleline:

Regex r = new Regex("start(.*?)end", RegexOptions.Singleline); 

De MSDN, RegexOptions Enumeration:

SingleLine - Especifica el modo de una sola línea. Cambia el significado del punto (.) Para que coincida con cada carácter (en lugar de cada carácter, excepto \ n).

+0

+1 podemos hacer algo aquí para excluir el inicio y el final, es decir, si quiero obtener solo los valores entre el inicio y el final. – Thunder

1

Incluir el RegexOptions.SingleLine lo que significa que . partidos todo, incluyendo \n

Regex r = new Regex("start(.*?)end", RegexOptions.Multiline | RegexOptions.SingleLine); 

Ver http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx para más detalles.

+0

Hmm todo otro dice que sohuld uso SingleLine solamente. ¿Importa si agrego multilínea? – AndroidXTr3meN

+0

En su caso, no, no hará ninguna diferencia de ninguna manera, a menos que esté usando^o $ en su expresión regular. Consulte el documento vinculado para obtener la definición de todas las enumeraciones. – samjudson

+0

¿Qué pasa si tengo más de un inicio ... algunos textos ... pares finales en mi Entrada y quiero obtenerlos todos? Ejemplo: inicio .... texto que quiero ... final inicio otro texto ... quiero ... final Cuando uso SingleLine el punto detecta CR \ LF pero solo consigue un partido – brighty

1

Uso SingleLine en lugar de Multilínea:

Regex r = new Regex("start(.*?)end", RegexOptions.Singleline); 

Por cierto, RegexBuddy es su amigo inestimable (No, no estoy conectado en absoluto para el autor, excepto por ser un usuario feliz) .