请问怎样将这正则的贪婪匹配改变成最短匹配,谢谢
我有一个文件:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebSite.Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<link href="<%="/css/login.css?"+Version %>" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<div><img src="../aa.jpg" alt="" /></div>
<div><img src="bb.jpg" alt="" /></div>
<div>url('../kuaiqian.gif')</div>
<div>url('../sss/aa.jpg')</div>
<div>url('../sss/dd/ssd.jpg')</div>
调用一个方法进行正则匹配:
/// <summary>
/// 返回匹配多个的集合值
/// </summary>
/// <param name="start">开始html tag</param>
/// <param name="end">结束html tag</param>
/// <param name="html">html代码</param>
/// <returns></returns>
public static List<string> GetHtmls(string start, string end, string html)
{
IList list = new List<string>();
try
{
string pattern = string.Format("{0}(?<g>(.|[\r\n])+?){1}", start, end);
//string pattern = string.Format("{0}(<g>.*?{1})", start, end);
MatchCollection mc = Regex.Matches(html, pattern);
if (mc.Count != 0)
{
foreach (Match match in mc)
{
GroupCollection gc = match.Groups;
list.Add(gc["g"].Value);
}
}
}
catch { }
return (List<string>)list;
}
调用如下:
List<string> HrefList1 = GetHtmls(@"href[\s\t\r\n]*=", "'", html);
得到一个值:
"<%="/css/login.css?"+Version %>" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<div><img src="../aa.jpg" alt="" /></div>
<div><img src="bb.jpg" alt="" /></div>
<div>url(
这不是我想要的,这是贪婪匹配,
我想要的是这样的:
"<%="
"../aa.jpg"
"bb.jpg"
我的后期可以进行对应的处理,请问这正则怎么修改,谢谢!