使用RegEx時遇到一個奇怪的行爲。有人可以解釋此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:這導致完全相同的匹配的圖案,結果在一個完全不同的分割輸出。這怎麼可能??
首先,一般建議:在C#中使用逐字字符串正則表達式,以避免雙反斜線例如:'@ 「(\ s | ^)+#(\ w * [A-Za-z _] + \ w *)」' –
thx,我不知道,我沒經常使用C# – rob