none
¿Proceso inverso búsqueda coincidencias regular expresión? RRS feed

  • Debate general

  • Espero hacerme entender. Normalmente en vb.net para el uso de las regular expresión doy un patrón y el Regex me busca todo lo que coincida con ese patrón, pero existe la forma de, a partir de un texto cualquiera obtener el patrón automáticamente.

    viernes, 7 de junio de 2013 16:57

Todas las respuestas

  • Espero hacerme entender. Normalmente en vb.net para el uso de las regular expresión doy un patrón y el Regex me busca todo lo que coincida con ese patrón, pero existe la forma de, a partir de un texto cualquiera obtener el patrón automáticamente.

    El texto que ingresas es un patrón/máscara?

    Jose Sebastian Garcia

    viernes, 7 de junio de 2013 18:16
  • No, no es un patrón, precisamente es el patrón el que quiere obtener a partir de un texto. 

    Por ejemplo.

    Si ingreso esto: "prueba 625a", esperaría obtener algo como esto: "[a-z]*[ ][0-9]*[a-z]".  Lo que quiero saber es si existe alguna forma no tan manual de hacerlo.

    Gracias

    martes, 11 de junio de 2013 16:47
  • ¿y por que no esto?:

    ^.*$

    Fijate que pueden generarse tantos patrones como quieras y todos igualmente válidos: Si no hay reglas, hay infinitos patrones que cumplen dado un texto


    "Option Strict On" no es opcional, es necesario.


    martes, 11 de junio de 2013 18:51
  • Si tienes razón, pero este ^.*$ sería muy general. Lo que busco hacer es lo siguiente: necesito procesar ficheros, los cuales tienen más de 5mil lineas y necesito sacar las lineas que se parecen entre sí, es decir suponiendo que la linea sea la que puse en el comentario anterior, quisiera obtener todas las que se parezcan a ella, que inicien  con una serie de caracteres alfabéticos luego un espacio, los números y el carácter alfabético final. La cantidad de ficheros es indefinida, las lineas que contiene cada uno también, lo único seguro es que habrán muchas lineas que se parezcan entre ellas.

    No se si exista una forma más sencilla de hacerlo.

    Gracias por responder.

    martes, 11 de junio de 2013 19:08
  • Olvida eso de forma sencilla. Insisto, infinitos patrones

    Define "lineas que se parezcan", es decir: misma longitud, mismo numero de palabras, mismo numero de vocales, etc.


    "Option Strict On" no es opcional, es necesario.

    martes, 11 de junio de 2013 20:43
  • Cuando hablo de lineas que se parezcan, la misma cantidad de palabras es posible, la misma cantidad de vocales y longitud no.

    Suponiendo que el fichero tiene las siguientes lineas.

    1."prueba 625a"
    2."$Procesos de test ejecutados en entorno FGRTY"
    3."pfcc 6b"
    4."informe 62534555c"
    5."linea2 3456b45"
    6."$Procesos de test ejecutados en entorno RUUDJFDJFU"

    En este ejemplo el resultado que esperaría obtener sería.

    La linea 1,3 y 4 se parecen al igual que la 2 y la 6. Y la 5 no ce parece a ninguna.

    Entiendo que la forma en que lo estoy planteando es muy complicada, por la infinidad de patrones. ¿Alguna sugerencia de como podría atacar este asunto?

    Gracias por responder.


    miércoles, 12 de junio de 2013 15:22
  • La verdad es que no, hace tiempo hice algo similar y funcionaba regular. Hice algo así como un sistema de "distancias", es decir en tu caso con las líneas 2 y 6:

    El $ la tienen ambas y están en la misma posicion

    La P la tienen ambas y están en la misma posicion

    La r la tienen ambas y están en la misma posicion, etc...

    La idea era que si en la BBDD existia el grupo The Rolling Stones, lo identificara igualmente introduciendo "Rolling Stones, The" ó "The roling stone", ó "rolin stones", etc. O dicho de otra forma, dada una entrada si no había coincidencia 100%, daba un listado ordenado por mayor numero de coincidencias (superiores a un limite ajustable)

    Intenté aplicar la idea del Algoritmo KMP, pero ya te digo, muchas horas dandole vueltas y el sistema de busquedas funcionaba regular

    Creo sinceramente que sería más sencillo intentar que el fichero origen identificara univocamente las distintas salidas posibles, es decir que el fichero origen fuese así:

    1."<prueba>prueba 625a"
    2."<procesosTest>$Procesos de test ejecutados en entorno FGRTY"
    3.<pfcc>"pfcc 6b"
    4.<informes>"informe 62534555c"
    5.<lineas>"linea2 3456b45"
    6.<procesosTest>"$Procesos de test ejecutados en entorno RUUDJFDJFU"


    "Option Strict On" no es opcional, es necesario.

    miércoles, 12 de junio de 2013 15:49
  • Bueno Carlos, gracias por tomarte el tiempo de responderme, intentare ver si con tus sugerencias logro resolverlo de alguna forma. 

    Muchas gracias.

    miércoles, 12 de junio de 2013 18:22