2015-03-10 14 views
5

Qual è il modo migliore per dividere una stringa su un carattere senza escape? Es. dividere questo (grezzo) stringaDividere la stringa sul carattere senza escape in D

`example string\! it is!split in two parts` 

, in modo che esso produce questo array '!':

["example string! it is", "split in two parts"] 

std.regex.split sembra essere quasi la cosa giusta. C'è un problema però, questo codice corrisponde al carattere split corretto, ma consuma anche l'ultimo carattere nella parte sinistra.

auto text = `example string\! it is!split in two parts`; 
return text.split(regex(`[^\\]!`)).map!`a.replace("\\!", "!")`.array; 

La partita intera regex viene rimosso diviso, quindi questo array è il risultato:

["example string! it i", "split in two parts"]

Qual è il modo migliore per arrivare alla prima matrice senza l'iterazione la stringa me stesso?

+0

che lang stai correndo? –

+0

ha modificato il titolo – weltensturm

risposta

10

Utilizzare un lookbehind negativo:

(?<!\\)\!