這個特性就是貪婪(請參考:一輩子受用的 Regular Expressions -- 兼談另類的電腦學習態度)。
所以當你想要利用這個式子:\<title\>(?<titleStr>.*)\</title\> 去這堆文字: <title>AAA</title>...other tags...<title>BB</title> 取得每對 <title>...</title> 裡面的文字時,實際上只得到一個結果,內容是 AAA</title>...other tags...<title>BB
>_< 這下該怎麼辦?
我想到幾種方式:
- 取得每個 <title> 的位置,然後再利用 String.IndexOf 去搜尋 </title>,取得位置之後,就可以取得<title>...</title> 裡面的文字。
- 分別用 Regular Expression 取得<title>與</title>的位置,然後再依據結果,去取裡面的字串。
希望是能有更好的解~
2 則留言:
我用C#為例
string s = "<title>AA</title>blah<title>BB</title>";
foreach (Match m in Regex.Matches(s, "[<]title>(?<t>.+?)[<]/title>"))
Console.WriteLine(m.Groups["t"].Value);
關鍵在(?<t>.+?)裡最後的問號,可以叫Regular Expression不要那麼貪心。
了解,謝謝你~
我會試試看。
張貼留言