solo regulares regular probar numeros letras expresiones expresion especiales espacios espacio ejemplos caracteres blanco alfanumerico regex

regex - probar - expresiones regulares java pdf



¿Puedes hacer solo parte de una expresión regular sin distinguir entre mayúsculas y minúsculas? (4)

He visto muchos ejemplos de hacer que una expresión regular completa no distinga entre mayúsculas y minúsculas. Lo que me pregunto es que solo parte de la expresión sea insensible a mayúsculas y minúsculas.

Por ejemplo, digamos que tengo una cadena como esta:

fooFOOfOoFoOBARBARbarbarbAr

¿Qué pasa si quiero hacer coincidir todas las apariciones de "foo" independientemente del caso, pero solo quiero hacer coincidir las "BARRAS" en mayúsculas?

La solución ideal sería algo que funcione en todos los sabores de regex pero también me interesa escuchar los específicos del idioma (Gracias Espo )

Editar

El enlace que Espo brindó fue muy útil. Hay un buen ejemplo de activar y desactivar modificadores dentro de la expresión.

Para mi ejemplo artificial, puedo hacer algo como esto:

(?i)foo*(?-i)|BAR

lo que hace que el partido no distinga entre mayúsculas y minúsculas solo por la parte foo del partido.

Eso pareció funcionar en la mayoría de las implementaciones de expresiones regulares excepto JavaScript, Python y algunas otras (como mencionó Espo).

Los grandes que me preguntaba (Perl, PHP, .NET) son compatibles con los cambios en el modo en línea.


Lamentablemente, la sintaxis para la concordancia de mayúsculas y minúsculas no es común. En .NET puedes usar el indicador RegexOptions.IgnoreCase o el modificador ? I


Perl te permite hacer que una parte de tu expresión regular no distinga entre mayúsculas y minúsculas al usar el modificador de patrón (? I :).

Los sabores regex modernos le permiten aplicar modificadores solo a una parte de la expresión regular. Si inserta el modificador (? Ismo) en el medio de la expresión regular, el modificador solo se aplica a la parte de la expresión regular a la derecha del modificador. Puede desactivar los modos precediéndolos con un signo menos. Todos los modos después del signo menos se apagarán. Por ejemplo, (? I-sm) activa la insensibilidad de mayúsculas y desactiva tanto el modo de línea única como el modo multilíneas.

No todos los sabores regex apoyan esto. JavaScript y Python aplican todos los modificadores de modo a la expresión regular completa. No admiten la sintaxis (? -ismx), ya que desactivar una opción no tiene sentido cuando los modificadores de modo se aplican a todas las expresiones regulares. Todas las opciones están desactivadas por defecto.

Puedes probar rápidamente cómo el sabor regex que estás usando maneja los modificadores de modo. La expresión regular (? I) te (? - i) st debe coincidir con la prueba y el TEst, pero no con la prueba o prueba.

Source


Podrías usar

(?:F|f)(?:O|o)(?:O|o)

El?: Entre paréntesis en .Net significa que no captura, y solo se usa para agrupar los términos del | (o) declaración.


Qué idioma estás usando? Una forma estándar de hacer esto sería algo como / ([Ff] [Oo] {2} | BAR) / con mayúsculas y minúsculas activada, pero en Java, por ejemplo, hay un modificador de sensibilidad de mayúsculas y minúsculas (? I) que hace que todo caracteres a la derecha de mayúsculas y minúsculas insensibles y (? -i) que fuerza la sensibilidad. Un ejemplo de ese modificador de expresiones regulares de Java se puede encontrar here .