使用 RegEx 时,我遇到了一种奇怪的行为。
dataString = "#Name #Location New York #Rating"
string[] rawValues = Regex.Split(dataString.Trim(), "(^|\\s)+#\\w+");
模式匹配:("#Name", " #Location", " #Rating"
这是我打算匹配的)。
拆分返回:["", "", "", " ", "New York", " ", ""]
问题#1:cunfusion 已经从这里开始了。为什么位置有空字符串0,1,2
?两个用于匹配,一个是因为它位于字符串的第一个位置?
但这并不是奇怪的部分。
string[] rawValues = Regex.Split(dataString.Trim(), "(\\s|^)+#(\\w*[A-Za-z_]+\\w*)");
模式匹配:("#Name", " #Location", " #Rating"
与之前相同)。
但是拆分返回:["", "", "Name", "", " ", "Location"," New York", " ", "Rating",""]
问题 #2:导致完全相同匹配的模式会导致完全不同的拆分输出。这怎么可能??