2009-03-23 34 views
8

¿Alguien tiene código para encontrar un archivo que contiene una expresión regular? Supongo que podrías tener dos sabores diferentes, uno para BRE y otro para ERE.¿Expresión regular para encontrar una expresión regular?

Usted pensaría que algún tipo de suites de prueba tendría algo así como una prueba isRegex(). ¿Alguien puede tener algún código? Buscando algo integral, por supuesto.

Veo que esto se discutió here pero no vio ninguna respuesta práctica. Si quiero grep para cualquier archivo que contenga una expresión regular, tal vez limitada por el // típico, ¿cómo lo haría?

+0

posible duplicado de [¿Hay una expresión regular para detectar una expresión regular válida?] (Http://stackoverflow.com/questions/172303/is-there-a-regular-expression-to-detect-a-valid -regular-expression) –

Respuesta

3

Más allá

egrep '/.+/' file 

lo que buscas en un ejercicio realmente involucrados.

1

Si está buscando específicamente archivos que contienen solo o la mayoría de las expresiones regulares, las estadísticas deberían indicarle que un determinado archivo contiene más de esa sintaxis que otros. Por lo tanto, podría definir un conjunto de indicadores y combinar sus puntajes en una métrica que calificara un archivo sobre la probabilidad de que fuera de interés. Elige un punto de corte y déjalo ir. Algunos indicadores:

  • Existencia de más de un [0-9], [AZ], etc +
  • Existencia de/foo/
  • No es un archivo de código estándar
  • menos compresible (poco fiables, lo sé, pero la compacidad de la gramática de expresiones regulares intuitivamente ser más difícil de comprimir que las palabras normales)
  • etc

pero si esto es sólo un one-shot, entonces usted está probablemente mejor fuera usando Chaos's answer y reduciendo manualmente los resultados. ¿Hay algo en particular en la expresión regular que está buscando, que podría ser más fácil de aprender?