2011-11-15 22 views
15

Supongamos que tengo esto:opciones de expresiones regulares múltiples con C# Regex

Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase); 

Pero también tengo que hacer caso omiso de los espacios en blanco. Entonces, encontré una opción IgnorePatternWhitespace, pero ¿cómo puedo agregar varias opciones a una regex.Replace?
Algo así como:

Regex.Replace("aa cc bbbb", "aa cc", "", 
    RegexOptions.IgnoreCase + RegexOptions.IgnorePatterWhitespace); 

Actualización:
Gracias por las respuestas, pero esta opción no parece funcionar: aquí hay un ejemplo de prueba:

Regex.Replace("aa cc bbbb", "aacc", "", 
    RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 
+1

"no parece funcionar" no es muy informativo. ¿Qué tipo de comportamiento estás buscando específicamente? –

+0

Esto simplemente no tiene sentido como una pregunta, especialmente una vez que vea cuál es la respuesta aceptada, ¡pero incluso fuera de ese contexto! –

+0

use & en lugar de +, Regex.Replace ("aa cc bbb", "aa cc", "", RegexOptions.IgnorePatternWhitespace & RegexOptions.IgnoreCase) –

Respuesta

2

IgnorePatternWhitespace
Elimina los espacios en blanco sin escapar del patrón y permite comentarios marcados con #. Sin embargo, el valor IgnorePatternWhitespace no contiene afecta o elimina el espacio en blanco en las clases de caracteres.

manera:

string result = Regex.Replace("aa cc bbbb","aa|cc","",RegexOptions.IgnoreCase).Trim(); 
6

Según MSDN:

Una combinación O a nivel de bits de valores de enumeración RegexOption .

Entonces sólo tiene que utilizar OPT_A | OPT_B

+0

Ver la actualización en mi publicación – user194076

9
Regex.Replace("aa cc bbbb","aa cc","",RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 

Uso del operador |.

Editar:

lo tienes completamente equivocado. RegexOption.IgnorePatterWhitespace ignora el espacio en blanco en la expresión regular de modo que usted puede hacer:

string pattern = @" 
^    # Beginning of The Line 
\d+    # Match one to n number but at least one.. 
"; 

Usted sin embargo piensa que ingoring espacio en blanco hace "aa cc bbbb" en "aaccbbbb" que es afortunadamente mal.

+0

Ver la actualización en mi publicación – user194076

+0

@ user194076 Ver respuesta actualizada. – FailedDev

47

Uso bitwise OR (|)

Regex.Replace("aa cc bbbb", 
       "aa cc", 
       "", 
       RegexOptions.IgnoreCase | RegexOptions.IgnorePatterWhitespace); 
+0

Ver la actualización en mi publicación – user194076

+1

@ user194076, si está esperando la expresión regular "aacc" para que coincida con "aa cc" en "aa cc bbbb", está interpretando RegexOptions incorrectamente. Tienes que usar algo como "aa \ s? Cc" para que coincida con, por ejemplo, use \ s? para que coincida con el espacio en blanco opcional. Regex.Replace ("aa cc bbbb", "aacc", "", RegexOptions.IgnoreCase | –

2

Puede tener tantos RegexOptions como desee, simplemente "O" con "|".

Por ejemplo ...

RegexOptions.Compiled | RegexOptions.IgnoreCase 
+0

Ver la actualización en mi publicación – user194076

Cuestiones relacionadas