RegEx を使用しているときに奇妙な動作が発生します。
dataString = "#Name #Location New York #Rating"
string[] rawValues = Regex.Split(dataString.Trim(), "(^|\\s)+#\\w+");
パターンが一致します: "#Name", " #Location", " #Rating"
(これは私が一致させようとしているものです)。
分割は次を返します。["", "", "", " ", "New York", " ", ""]
質問 #1: カンフュージョンはここから始まります。位置に空の文字列があるのはなぜ0,1,2
ですか? 文字列の最初の位置にあったため、一致するものと 1 つに 2 つですか?
しかし、これは奇妙な部分ではありませんでした。
string[] rawValues = Regex.Split(dataString.Trim(), "(\\s|^)+#(\\w*[A-Za-z_]+\\w*)");
パターンは次のように一致します: "#Name", " #Location", " #Rating"
(前と同じ)。
しかし、分割は次のように返します。["", "", "Name", "", " ", "Location"," New York", " ", "Rating",""]
質問 #2: まったく同じ一致につながるパターンは、まったく異なる分割出力になります。これはどのように可能ですか??