有人可以解释拆分方法在这里使用的逻辑吗?
为什么你可以多次匹配类似的模式,只要它结束相同但不是如果它开始相同?
答案 0 :(得分:1)
迭代要分割的字符串的每个索引(或者在第一个字符串之后的迭代中拆分每个字符串),并在每个索引处尝试按照元素出现的顺序匹配数组的元素在阵列中。
在您的第一个示例字符串"end\n\r\nbegin"
中,它会尝试匹配(按此顺序)"e"
,"en"
或"n"
,"end"
或{{1} }或"nd"
,"d"
或"end\n"
或"nd\n"
或"d\n"
。它在最后一次检查中找到匹配项,拆分字符串,然后重新开始。
在"\n"
匹配的字符串"endNNRRNNbegin"
上,它与{"NN", "NNRR"}
的第一个匹配项匹配,生成"NN"
。在第二次传递时,它再次匹配"end","RRNNbegin"
,生成"NN"
。
如果您在示例的其余部分上运行此算法,您将获得与您显示的输出相同的结果。
有关详情,请参阅documentation的比较详情部分。