Pregunta

Tener un tiempo duro con este, ya que no creo que sé todas mis opciones.

Tengo que analizar un campo de texto de forma libre que necesito para asignar los valores a una base de datos.

Aquí hay algunos ejemplos de texto, NOTA: no todos los campos tienen que estar allí, no todos los delimitadores son iguales y no todos los descriptores están disponibles. Yo necesito comprobar si el valor es únicamente numérico o alfanumérico que es.

Ejemplo 1

field1: 999-999234-24-2 

field2 Description: a short description 

field3: 3.222.1 

asdfg 

field number four: NO 

field5:

Ejemplo 2

field1: 999-999234-24-2/field2 Description: a short description/field3: 3.222.1 asdfg/field number four: NO/field5:

Ejemplo 3

999-999234-24-2 

Ejemplo 4

field1: 999-999234-24-2 field2 Description: a short description field3: 3.222.1 asdfg field number four: NO field5:

Ejemplo 5

field1: 999-999234-24-2 - field2 Description: a short description - field3: 3.222.1 asdfg - field number four: NO - field5: 

Lo que me gustaría es todos los campos X para estar ahí propia columna. NOTA los datos del ejemplo es todo en el mismo orden pero los datos en vivo no lo es.

Ahora no me importa hacerlo en pasos si necesito pero tener un tiempo duro sólo analizar los valores de hasta en columnas. alguna sugerencia?

Estaba pensando algún tipo de función caso de una expresión regular, pero no suerte hasta ahora.

¿Fue útil?

Solución 4

Después de mucho aunque / ensayo y error que voy a leerlos en una matriz y analizar fuera de cada línea de texto. Es largo y va a ser un desastre, pero debe hacer el trabajo.

Otros consejos

Tal vez debería normalizar el java .properties formato a continuación, puede utilizar esta PHP ejemplo analizarlo:

http://www.innerweaver.com/?p=13

Desde que todavía está atascado en mi cabeza ... la forma en que había de hacerlo es empezar a manejar cada uno de estos casos y ver si hay alguna ajustes / consecuencias restante. Lo que parece hacer de este complicado es el único deliminator fiable es 'campo', y si alguien usa ese en una descripción que va a romper. Yo sólo tendría que tener el archivo y comenzar la iteración.

La división que con esta expresión regular por lo menos sería un buen punto de partida para dividir las cabeceras y los datos. Básicamente, el campo más el texto adicional opcional que cubre la posibilidad de 'Descripción' y 'número cuatro' añaden antes del cierre:

campo [^:] {0,12}:

Después de eso, usted por lo menos tiene que despojar de arrastre / para el caso # 2, el '-' para el caso # 5, los saltos de línea adicionales si no los quieren en los datos para el caso 1 #

REGEXP sería difícil de mantener en algunos casos de borde. Trate de escribir un simple máquina de estados finitos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top