2013-07-27 5 views
7

Sto cercando di estrarre una sequenza di numeri da una colonna in Google Refine. Ecco il mio codice per farlo:Value.match() Regex in Google Refine

value.match(/[\d]+/)[0] 

I dati nella mia colonna è nel formato di

abcababcabc 1234566 abcabcbacdf 

I risultati è "nullo". Non ho idea del perché!! È anche nullo se al posto di \d provo \w.

risposta

7

OpenRefine non aggiunge i caratteri jolly impliciti alla fine del modello come fanno alcuni sistemi (e come ci si potrebbe aspettare). Prova questo motivo invece:

value.match(/.*?(\d+).*?/)[0] 

è necessario il/qualificatore non avido pigro (cioè punto di domanda) sui caratteri jolly in modo che non si divorano alcuni dei vostri numeri anche. Se usi semplicemente lo /.*(\d+).*/ abbinerai solo una cifra, perché il resto verrà preso dal modello. *.

La documentazione completa per l'implementazione è disponibile in Java Pattern class docs.

+0

Ciao Tom - Grazie per la tua risposta. Ho provato il tuo suggerimento, ma sto ancora ottenendo un NULL – mchangun

+0

Ho pensato che forse era perché stavo usando la versione di sviluppo, ma sono tornato indietro e ho tagliato e incollato i dati esatti e regex da questa pagina in Refine 2.5 e ottenuto 1234566 quindi non sono proprio sicuro di cosa suggerire. –

+0

Attualmente funziona - lo stavo provando su un input leggermente diverso. Puoi spiegare/analizzare cosa significa la tua regex? Qual è il qualificatore pigro/non avido? Anche la documentazione che sto leggendo non sembra aiutare (https://github.com/OpenRefine/OpenRefine/wiki/Understanding-Regular-Expressions). C'è un altro riferimento che spieghi regex in Open Refine? Grazie! – mchangun