Por ejemplo, el grupo formado por las cadenas Handel, Händel y Haendel se describe con el patrón H(a|ä|ae)ndel.La mayoría de las formalizaciones proporcionan los siguientes constructores: una expresión regular es una forma de representar los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje.Específicamente, las expresiones regulares se construyen utilizando los operadores unión, concatenación y clausura de Kleene.Una pleca o barra vertical separa las alternativas, las cuales son evaluadas de izquierda a derecha.La sintaxis precisa de las expresiones regulares cambia según las herramientas y aplicaciones consideradas.Por ejemplo, Perl tiene un potente motor de expresiones regulares directamente incluido en su sintaxis.Algunos motores de búsqueda permiten adicionalmente especificar que se desea encontrar solamente palabras completas, solucionando este problema.Este lenguaje le da un significado especial a una serie de caracteres.Nótese que el motor de búsqueda no encuentra "goot"; esto es porque el punto representa un solo carácter y únicamente uno.Se debe tomar esto en cuenta antes de utilizar el punto y obtener resultados no deseados.O sea, la barra inversa no se utiliza nunca por sí sola, sino en combinación con otros caracteres.este deja de tener su significado normal y se comporta como un carácter literal.Como ya se mencionó con anterioridad, la barra inversa también puede darle significado especial a caracteres que no lo tienen.Por ejemplo, como vimos en la entrega anterior, \d es útil para buscar cualquier carácter que represente un dígito.Para buscar cualquier carácter que representa un dígito o un punto se puede utilizar la expresión regular [\d.].Los corchetes nos permiten también encontrar palabras aun si están escritas de forma errónea, por ejemplo, la expresión regular expresi[oó]n permite encontrar en un texto la palabra "expresión" aunque se haya escrito con o sin tilde.Es necesario aclarar que sin importar cuantos caracteres se introduzcan dentro del grupo por medio de los corchetes, el grupo sólo le dice al motor de búsqueda que encuentre un solo carácter del grupo a la vez, es decir, que expresi[oó]n encontrará "expresion" o "expresión" pero no "expresioón".Si se utiliza la expresión regular \.$ el motor encontrará todos los lugares donde un punto finalice la línea, lo que es útil para avanzar entre párrafos.Por tanto, si se utiliza la expresión regular ^[a-z] el motor encontrará todos los párrafos que den inicio con una letra minúscula.La expresión indicada permite encontrar, por ejemplo, cualquier carácter que no sea alfanumérico o un espacio, es decir, busca todos los símbolos de puntuación y demás caracteres especiales.La utilización en conjunto de los caracteres especiales ^ y $ permite realizar validaciones en forma sencilla.Por ejemplo ^\d$ permite asegurar que la cadena a verificar representa un único dígito ^\d\d/\d\d/\d\d\d\d$ permite validar una fecha en formato corto, aunque no permite verificar si es una fecha válida, ya que 99/99/9999 también sería válido en este formato; la validación completa de una fecha también es posible mediante expresiones regulares, como se ejemplifica más adelante.Por ejemplo, la expresión regular ob?scuridad permite encontrar tanto "oscuridad" como "obscuridad".Sin embargo, algunas veces, no se desea utilizarlos con este propósito, como en el ejemplo anterior Nov(\.|iembre|ember)?.El asterisco sirve para encontrar algo que se encuentra repetido 0 o más veces.Esto sucede porque el asterisco le dice al motor de búsqueda que llene todos los espacios posibles entre los dos paréntesis.También es posible utilizar este metacarácter en conjunto con el signo de interrogación para limitar hasta donde se efectúa la repetición.El motor de búsqueda almacenará una referencia al grupo anónimo que corresponda a la expresión encerrada entre los paréntesis.Para utilizar este ejemplo en el .Net Framework es posible utilizar el siguiente código: Es posible definir tantos grupos como sea necesario, de esta forma se puede definir algo como: <(?[a-zA-Z]\w*?) ?(?.*?