有人可以告訴我這段代碼的含義是什麼,我知道它尋找正則表達式,但我不明白最後一點。正則表達式代碼解釋
System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
在此先感謝。
有人可以告訴我這段代碼的含義是什麼,我知道它尋找正則表達式,但我不明白最後一點。正則表達式代碼解釋
System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
在此先感謝。
(?<=<Last>)
是一個背後的斷言。這意味着它僅在前面有<Last>
時才與.*
匹配
(?=</Last>)
是前瞻斷言。確保有以下<\Last>
.*
有關.net中正則表達式的更多信息,請參見here on msdn。
註釋,所提供的示例不是代碼的完整線(See Class Regex on msdn)
這應該是這樣的東西的一部分:
Regex MyRegex = new System.Text.RegularExpressions.Regex("(?<=<Last>).*(?=</Last>)");
,創建一個新的Regex對象。
另一種可能性是使用正則表達式,而無需創建regex對象,看起來像這樣用靜態方法isMatch
:
System.Text.RegularExpressions.Regex.IsMatch(StringToSearchIn, "(?<=<Last>).*(?=</Last>)")
這將返回true或false。
它基本上在尋找包含其內容的xml文檔中的<Last>
標籤。
? < =是斷言的背後。有關詳細說明,請參見here。
如前所述,模式(?<=<Last>).*(?=</Last>)
匹配以<Last>
開頭的文本的最長字符串,後跟</Last>
,用正數lookarounds表示。
不過請注意,這是由於greediness,這個匹配的字符串本身也包含<Last>
和/或</Last>
...沒有選擇答案
五個問題?選擇一些問題的答案可能有助於您在這裏獲得答案的機會。 – 2011-05-09 20:35:15
爲什麼這個問題被標記爲SQL? – janhink 2011-05-09 20:35:22
從代碼中的標識符判斷,它看起來像是針對.NET而不是SQL。也就是說,這行代碼不會在我知道的任何.NET語言中編譯... – 2011-05-09 20:39:17