Domanda

Avere un momento difficile con questo come io non credo di sapere tutte le mie opzioni.

devo analizzare un campo di testo in forma libera che ho bisogno di mappare i valori in un database.

Ecco alcuni esempi del testo, NOTA: non tutti i campi devono essere lì, non tutti i delimitatori sono uguali e non tutti i descrittori sono disponibili. Ho bisogno di controllare se il valore è solo numerico o è alfanumerico.

Esempio 1

field1: 999-999234-24-2 

field2 Description: a short description 

field3: 3.222.1 

asdfg 

field number four: NO 

field5:

Esempio 2

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

Esempio 3

999-999234-24-2 

Esempio 4

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

Esempio 5

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

Quello che vorrei è tutti i campi X di essere in là propria colonna. NOTA i dati di esempio è tutto nello stesso ordine ma i dati dal vivo non è.

Ora non mi dispiace fare questo in passi se ho bisogno di, ma avendo un momento difficile solo analizzare i valori fino in colonne. qualche suggerimento?

stavo pensando una sorta di funzione di caso con una regex, ma non fortuna finora.

È stato utile?

Soluzione 4

dopo molto però / tentativi ed errori ho intenzione di leggerli in un array e analizzare fuori ogni riga di testo. E 'lungo e sarà un pasticcio, ma dovrebbe ottenere il lavoro fatto.

Altri suggerimenti

Forse si dovrebbe standardizzare su java .properties formato quindi è possibile utilizzare questo PHP esempio per analizzarlo:

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

Dal momento che è ancora bloccato nella mia testa ... il modo in cui mi piacerebbe andare a questo proposito è iniziare a gestire ciascuno di questi casi e vedere se c'è qualche residuo tweaks / Fallout. Ciò che sembra rendere questo difficile è l'unico deliminator affidabile è 'campo', e se qualcuno lo utilizza in una descrizione si romperà. Avevo solo prendere il file e avviare l'iterazione.

Splitting con questa regex sarebbe almeno un buon punto di partenza per dividere le intestazioni ei dati. In sostanza, oltre a campo testo opzionale aggiuntivo che copre la possibilità di 'Descrizione' e 'numero quattro' aggiunto prima della chiusura:

campo [^:] {0,12}:

Dopo di che, si sarebbe almeno necessario mettere a nudo trascinamento / per caso # 2, il '-' per caso # 5, le interruzioni di riga in più se non li vogliono nei dati per 1 caso #

regexp sarebbe difficile da mantenere in alcuni edge-casi. Provare a scrivere una semplice macchina a stati finiti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top