2012-01-13 11 views
7

Sto cercando di ottenere questo Ruby code beautifier funzionante e ho colpito un problema da fare con le espressioni regolari che a dire il vero non lo capisco in quanto la mia esperienza con loro è estremamente limitato.Ruby/Regex Errore: avviso: classe di caratteri ha campo duplicato

L'errore che Im ottenendo è:

warning: character class has duplicated range: /.*=\s*<<-?\s*([_|\w]+).*/ 

che punta a questa linea:

here_doc_term = tline.sub(%r{.*=\s*<<-?\s*([_|\w]+).*},"\\1") 

Potrebbe qualcuno si prega di essere così gentile da sottolineare qual è il problema con questa espressione?

Grazie.

+1

'\ W' include già' _', forse questo è il tuo problema. –

+0

Quello era esattamente il problema, grazie, vuoi inviare che come una risposta così ho accettato segnare? – Andrew

+1

Vuoi davvero dire per abbinare un letterale '|'? Altrimenti, il '|' nella classe di caratteri è dannoso, poiché corrisponderà a un '|'. Inoltre, se intendi abbinare solo la sequenza necessaria, non c'è bisogno di '. *' All'inizio o alla fine. – fge

risposta

8

Fondamentalmente questo avviso, si dice che una classe di caratteri che si sta utilizzando ha qualche modello ridondante. Presumo che punti alla [_|\w], come \w contiene già sottolineatura.

This discussion potrebbe aiutare la comprensione di più.

+0

oh, qualcuno lo ha già indicato in un commento, mi dispiace, non l'ho visto. – trueunlessfalse

+0

Grazie lo stesso! – Andrew

Problemi correlati