Utilizzando vim 7.2, per questo testo:vim pattern matching due gettoni senza un'altra proposta gettone trascorre
foo gettone foo countertoken foo gettone foo bersaglio foo countertoken foo
Voglio ma ogni stringa che inizia con 'token' e termina con 'target', che non contiene 'countertoken'.
Così, nell'esempio di cui sopra, voglio corrispondere a questo:
pippo pippo gettone pippo pippo pippo countertoken foo gettone obiettivo foo pippo pippo pippo countertoken
ma non this:
foo foo
token o pippo pippo pippo countertokenobiettivo pippo gettone pippo pippo pippo countertoken
(La ragione di questo è che, in pratica, sono la ricerca di file lunghi e sono interessato a l'ultimo 'token' prima della 'bersaglio'. I token sono un po 'come i tag XML, ma non sono XML, quindi gli strumenti XML non sono di aiuto. So che potrei usare \zs
così il cursore si posiziona su 'target' e poi cerca indietro 'token', ma sicuramente c'è una soluzione in un solo passaggio!)
Speravo che qualcosa del genere potesse funzionare, ma non funziona t:
/token\(.*countertoken.*\)\@!*target
ci sono molti di questi avvenimenti che mi interessano, e, naturalmente, i file che sto cercando non sono davvero pieno di nulla come regolare come 'foo'.
Esiste una regex su una riga per questo in vim?
Grazie, ma che non tiene conto del fatto che l'ultima occorrenza può includere ' countertoken'. Mi rendo conto che dovrei chiarire: le stringhe a cui sono interessato si verificano più volte nel file, e ognuna di esse può includere o meno il countertoken: mi interessa quando non lo fanno. Ho modificato la domanda. –