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\="黄馨" 竟是按照贪婪匹配的,各位帮忙解惑啊正则表达式
<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\="黄馨" 竟是按照贪婪匹配的,各位帮忙解惑啊正则表达式
给你举个例子吧
源字符串:aa<div>test1</div>bb<div>test2</div>cc正则表达式一:<div>.*</div>匹配结果一:<div>test1</div>bb<div>test2</div>正则表达式二:<div>.*?</div>匹配结果二:<div>test1</div>(这里指的是一次匹配结果,所以没包括<div>test2</div>)
<a title="黄馨" hidefocus="true" href="/data/artist/redirect?id=60758">
黄馨 </a
林一峰 </a>
<span class="artist-line">/</span>
<a title="黄馨"
这里了?
楼主的这个表达式 [\s\S]+?title\="黄馨" 意思是 从字符开始尽可能少的匹配直到遇到title\="黄馨" 表示匹配成功。所以从字符开始到title\="黄馨"前面的字符都会被包括进来。
string str = File.ReadAllText(@"C:\1.txt", Encoding.GetEncoding("GB2312"));
MatchCollection mc = Regex.Matches(str,@"(?i)[\s\S]+?title\=""黄馨""");
foreach (Match m in mc)
{
Console.WriteLine(string.Format("第一次匹配:{0}", m.Groups[0].Value));
}
他会一直匹配到<a title="黄馨"
<a title="黄馨"
MatchCollection mc = Regex.Matches(str,@"(?i)<a\b[^>]+?title\=""黄馨""");
foreach (Match m in mc)
{
Console.WriteLine( m.Value));
}
代码是 http://music.baidu.com/search?key=%E9%BB%84%E9%A6%A8 的源码.
我想匹配的是 1-9,11,12,16 这里面有黄馨的行的代码.我的正则如下href="(?<sidstr>.+?)".+?title\="(?<sname>[^"]+?)"[\s\S]+?title\="黄馨"[\s\S]+?130px;"\s+>(?<albumstr>[\s\S]+?)</span>请问怎么改我的正则?
*
+
等后面加?
就是非贪恋=======================================================
.NET快速开发整合框架(RDIFramework.NET),基于.NET的快速开发、整合框架,给用户和开发者最佳的.Net框架部署方案。
平台博客:[CNBLOGS]http://www.cnblogs.com/huyong
[CSDN]http://blog.csdn.net/chinahuyong
交流QQ:406590790 (请注明:CSDN)
平台微博:http://t.qq.com/yonghu86
邮件交流:[email protected]
明白了么?
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));
}
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*[^>]*?>\s*<em>黄馨</em>\s*</a>.*?<span\s*class=""album-title""[^>]*?>\s*(<a\s*[^>]*?>(?<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));
}