2015-03-10 10 views
5

Jaki jest najlepszy sposób rozdzielenia ciągu znaków na unikniętą znak? Np. podzielić ten (RAW) StringPodziel ciąg znaków na unikniętą literę w D

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

on-line, tak że produkuje tę tablicę '!':

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

std.regex.split wydaje się być niemal słuszne. Występuje jednak problem, kod ten pasuje do poprawnego znaku podziału, ale także pochłania ostatni znak z lewej strony.

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

Cały regex mecz usuwa się rozstali, więc ta tablica jest wynikiem:

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

Jaki jest najlepszy sposób, aby dostać się do pierwszej tablicy bez iteracji ciąg samodzielnie?

+0

który lang są uruchomione? –

+0

edytował tytuł – weltensturm

Odpowiedz

10

Użyj negatywny lookbehind:

(?<!\\)\!