c#正则,根据name获取input的value值
本帖最后由 winseer 于 2013-01-17 18:20:00 编辑
用c#winform,获取到一个网页的html代码,想提取里面某个input里value的值:
例如:
<input type='hidden' name='rancode' value='1' />
从网上找到如下正则代码,但经过测试,无法获取到rancode的value,不太懂正则,请问这个正则有什么不对的地方吗?
//str:需要提取字符串,inputname:控件名称
public string FindValueByName(string str, string inputname)
{
string reg = @"<input name=""(?<name>.*?)"" [\s\S]*?value=""(?<value>.*?)"" [\s\S]*?>";
Regex r = new Regex(reg, RegexOptions.None);
Match match = r.Match(str);
string aa = "未找到";
while (match.Success)
{
string name = match.Groups["name"].ToString();
string value = match.Groups["value"].ToString();
if (name == inputname)
{
return value;
}
else
{
match = match.NextMatch();
}
}
return aa;
}
请指点!谢谢!
------解决方案-------------------- string str = "<input type='hidden' name='rancode' value='1' />";
var ary = Regex.Matches(str, @"(?is)<input(?=[^>]*?name=[""'](?<name>[^""'\s]+)[""'])(?=[^>]*?value=[""'](?<value>[^""'\s]+)[""'])[^>]+>").OfType<Match>().Select(t => new { name = t.Groups["name"].Value, value = t.Groups["value"].Value }).ToArray();
------解决方案--------------------<input type='hidden' name='rancode' value='1' />
Match match=Regex.Match(s,@"(?is)<input type=([""'])hidden\1 name=([""'])rancode\2 value=([""'])(?<value>.*?)\3\s*/>");
用match.Groups["value"].Value得到值
------解决方案--------------------单引号双引号问题 这么明显.........