2012-03-06 13 views
11

[^ abc] Qualsiasi carattere singolo tranne: a, b, ocRegexp: qualsiasi carattere tranne sequenza

Ma come posso fare regex per qualsiasi carattere ad eccezione di sequenza abc

Quindi, qualcosa del genere

"Hello abc awesome world".scan /[^(abc)]+/ 

Restituirà "Ciao" e "mondo fantastico".

PS: E non si tratta di dividere la stringa

+0

Correlati: http://stackoverflow.com/q/5504272/946850 – krlmlr

+0

Anche correlati, più da vicino forse: http://stackoverflow.com/q/6180556/946850 – krlmlr

+0

Grazie, nome utente! :) – fl00r

risposta

15

Questo si chiama lookaround, nel tuo caso ti consigliamo di utilizzare lookahead negativo. Non sono sicuro della sintassi esatta in Ruby, ma qualcosa di simile a (?!abc) potrebbe funzionare. Nota che il lookaround non consuma alcun input, quindi dovrai farlo seguito da qualsiasi pattern che vuoi abbinare. Forse (?:(?!abc).)+ è quello che stai cercando?

+1

Mi ha salvato molto tempo. Stava facendo '(?! Abc). +', Che ha fatto il lookahead negativo per un'intera sequenza di caratteri. Questo sembra farlo su base carattere per carattere, cosa che non mi è nemmeno venuta in mente. Ora tutto va bene e felice. Gracias! – user1630830

Problemi correlati