Pregunta

He trabajado durante 5 años principalmente en aplicaciones de escritorio java accediendo a bases de datos Oracle y nunca he usado expresiones regulares.Ahora entro a Stack Overflow y veo muchas preguntas sobre ellos;Siento que me perdí algo.

¿Para qué usas las expresiones regulares?

PDPerdón por mi mal ingles

¿Fue útil?

Solución

Considere un ejemplo en Ruby:

puts "Matched!" unless /\d{3}-\d{4}/.match("555-1234").nil?
puts "Didn't match!" if /\d{3}-\d{4}/.match("Not phone number").nil?

"/\d{3}-\d{4}/" es la expresión regular y, como puede ver, es una forma MUY concisa de encontrar una coincidencia en una cadena.

Además, utilizando grupos puedes extraer información, como tal:

match = /([^@]*)@(.*)/.match("myaddress@domain.com")
name = match[1]
domain = match[2]

Aquí, el paréntesis en la expresión regular marca un grupo de captura, para que pueda ver exactamente QUÉ son los datos que coincidieron, para que pueda realizar un procesamiento adicional.

Esto es sólo la punta del iceberg...Hay muchas cosas diferentes que puedes hacer en una expresión regular que hacen que procesar texto sea REALMENTE fácil.

Otros consejos

Las expresiones regulares (o Regex) se utilizan para hacer coincidir patrones en cadenas.De este modo, puede extraer todas las direcciones de correo electrónico de un fragmento de texto porque sigue un patrón específico.

En algunos casos, las expresiones regulares están encerradas entre barras diagonales y después de la segunda barra se colocan opciones como no distinguir entre mayúsculas y minúsculas.Aquí tienes uno bueno :)

/(bb|[^b]{2})/i

Hablado puede leerse "2 be or not 2 be".

La primera parte son los (soportes), se dividen por la tubería | El carácter que equivale a una declaración o una declaración SO (A | B) coincide con "A" o "B".La primera mitad del área entubada coincide con "bb".El nombre de la segunda mitad no lo sé, pero son los corchetes, coinciden con cualquier cosa que sea no "b", por eso hay un símbolo de techo (término técnico) allí.Los corchetes ondulados coinciden con un recuento de las cosas que tienen delante, en este caso dos caracteres que no son "b".

Después de la segunda / hay una "i", lo que hace que no distinga entre mayúsculas y minúsculas.El uso de las barras diagonales iniciales y finales es específico del entorno, a veces se utiliza y otras no.

Dos enlaces que creo que le resultarán útiles para esto son

  1. expresiones-regulares.info
  2. Wikipedia - Expresión regular

La expresión regular más genial alguna vez:

/^1?$|^(11+?)\1+$/

Prueba si un número es primo.¡¡Y funciona!!

NÓTESE BIEN.:para que funcione, se necesita un poco de configuración;el número que queremos probar debe convertirse en una cadena de "1"es primero, entonces podemos aplicar la expresión para probar si la cadena no no contener un número primo de “1"s:

def is_prime(n)
  str = "1" * n
  return str !~ /^1?$|^(11+?)\1+$/ 
end

Hay una explicación detallada y muy accesible en El blog de Avinash Meetoo.

Si quieres aprender sobre expresiones regulares, te recomiendo Dominar las expresiones regulares.Va desde los conceptos más básicos hasta hablar sobre cómo funcionan los diferentes motores.Los últimos 4 capítulos también ofrecen un capítulo dedicado a cada uno de PHP, .Net, Perl y Java.Aprendí mucho de él y todavía lo uso como referencia.

Si recién estás comenzando con expresiones regulares, te recomiendo de todo corazón una herramienta como The Regex Coach:

http://www.weitz.de/regex-coach/

También escuché cosas buenas sobre RegexBuddy:

http://www.regexbuddy.com/

Como sabrás, Oracle ahora tiene expresiones regulares: http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html.He utilizado la nueva funcionalidad en algunas consultas, pero no ha sido tan útil como en otros contextos.Creo que la razón es que las expresiones regulares son las más adecuadas para encontrar datos estructurados enterrados dentro de datos no estructurados.

Por ejemplo, podría usar una expresión regular para encontrar mensajes de Oracle que están incluidos en el archivo de registro.No es posible saber dónde están los mensajes, sólo cómo se ven.Entonces una expresión regular es la mejor solución a ese problema.Cuando se trabaja con una base de datos relacional, los datos suelen estar preestructurados, por lo que una expresión regular no brilla en ese contexto.

Una expresión regular (regex o regexp para abreviar) es una cadena de texto especial para describir un patrón de búsqueda.Puedes pensar en las expresiones regulares como comodines con esteroides.Probablemente esté familiarizado con las notaciones con comodines, como *.txt para encontrar todos los archivos de texto en un administrador de archivos.El equivalente de expresión regular es .*\.txt$.

Un gran recurso para expresiones regulares: http://www.regular-expressions.info

Estos RE son específicos de Visual Studio y C++, pero en ocasiones los he encontrado útiles:

Encuentre todas las apariciones de "routineName" con parámetros no predeterminados pasados:

nombreRutina\(:a+\)

A la inversa, para encontrar todas las apariciones de "nombrederutina" solo con los valores predeterminados: nombrerutina\(\)

Para buscar código habilitado (o deshabilitado) en una compilación de depuración:

\#si._DEPURAR*

Tenga en cuenta que esto capturará todas las variantes:ifdef, si está definido, ifndef, si! definido

Validar contraseñas seguras:

Éste validará una contraseña con una longitud de 5 a 10 caracteres alfanuméricos, con al menos una mayúscula, una minúscula y un dígito:

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{5,10}$
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top