读书人

正则表达式[\s\S]+? 是非曲直贪婪的么?

发布时间: 2013-03-19 17:22:05 作者: rapoo

正则表达式[\s\S]+? 是非贪婪的么??

href="/song/12417295" class="" data-songdata='{ "id": "" }' title="花开花谢花满天">花开花谢花满天</a>
<div class="extra-info">
<span>电视剧《暗线》插曲</span>
</div>
</span>
<span class="singer" style="width: 120px;" >
<span class="author_list">
<a title="黄馨可" hidefocus="true" href="/data/artist/redirect?id=12418880">
黄馨可 </a>
</span>
</span>
<span class="album-title" style="width: 130px;" >
</span>
<span class="fun-icon">
<span class="music-icon-hook" data-musicicon = '{"id":"12417295","type":"song","iconStr":" play add download","moduleName":"songListIcon"}'>
<a class="list-micon icon-play" data-action="play" title="播放"
href="#"><i></i></a>
<i class="module-line music-icon-line"></i>
<a class="list-micon icon-add" data-action="add" title="添加"
href="#"><i></i></a>
<i class="module-line music-icon-line"></i>
<a class="list-micon icon-download" data-action="download" title="下载"
href="#"><i></i></a>
</span>
</span>
</div>
</li>
<li data-songitem = '{"songItem":{"sid":5553513}}' class="bb-dotimg clearfix song-item-hook " >
<div class="song-item clearfix">
<span class="checkbox-item">
<input type="checkbox" class="checkbox-item-hook" />
</span>
<span class="index-num index-hook" style="width: 33px;" >
11
</span>
<span class="song-info " ></span>
<span class="song-title" style="width: 170px;" >
<a href="/song/5553513" class="" data-songdata='{ "id": "" }' title="桂花酿">桂花酿</a>
<div class="extra-info">
</div>
</span>
<span class="singer" style="width: 120px;" >
<span class="author_list">
<a title="林一峰" hidefocus="true" href="/data/artist/redirect?id=390">
林一峰 </a>
<span class="artist-line">/</span>
<a title="黄馨" hidefocus="true" href="/data/artist/redirect?id=60758">
黄馨 </a>
</span>
</span>
<span class="album-title" style="width: 130px;" >
<a href="/album/5721712" title="花诀">《花诀》</a>
</span>

用这个正则匹配 "[\s\S]+?title\="黄馨" 竟是按照贪婪匹配的,各位帮忙解惑啊 正则表达式
[解决办法]

string str = File.ReadAllText(@"C:\1.txt", Encoding.GetEncoding("GB2312"));

MatchCollection mc = Regex.Matches(str, @"(?is)<span\s*class=""song-title""[^>]*?>\s*<a[^>]*?>(?<title>(.*?))</a>.*?<a\s*title\=""黄馨""\s*[^>]*?>.*?<span\s*class=""album-title""[^>]*?>\s*<a\b[^>]*?>(?<albumstr>.*?)</a>\s*</span>");


foreach (Match m in mc)
{
Console.WriteLine(string.Format("title:{0},albumstr:{1}", m.Groups[1].Value, m.Groups[2].Value));
}

读书人网 >C#

热点推荐