在D中的未转义字符上拆分字符串

时间:2015-03-10 14:33:00

标签: regex string split d

在未转义字符上拆分字符串的最佳方法是什么? 例如。拆分此(原始)字符串

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

on'!',以便它生成这个数组:

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

std.regex.split似乎几乎是正确的。但是有一个问题,这段代码匹配正确的分割字符,但也消耗左侧部分的最后一个字符。

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

整个正则表达式匹配在拆分时被删除,因此该数组是结果:

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

在没有自己迭代字符串的情况下到达第一个数组的最佳方法是什么?

1 个答案:

答案 0 :(得分:10)

使用否定的lookbehind:

(?<!\\)\!