在未转义字符上拆分字符串的最佳方法是什么? 例如。拆分此(原始)字符串
`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"]
在没有自己迭代字符串的情况下到达第一个数组的最佳方法是什么?
答案 0 :(得分:10)
使用否定的lookbehind:
(?<!\\)\!