110,533
社区成员
发帖
与我相关
我的任务
分享
private List<string> GetElementContent(string content, string elementName, string subElement)
{
StringBuilder regexStr = new StringBuilder("(?is)<");
regexStr.Append(elementName).Append("[^>]*?").Append(subElement).Append(@"=(['""\s]?)([^'""\s]+)\1[^>]*?>");
Regex regex = new Regex(regexStr.ToString());
MatchCollection match = regex.Matches(content);
List<string> values = new List<string>();
foreach (Match m in match)
{
values.Add(m.Groups[2].Value);
}
return values;
}
//调用
List<string> values = GetElementContent(retString, "input '", "value"); //如果这样 正则为 {(?is)<input[^>]*?value=(['"\s]?)([^'"\s]+)\1[^>]*?>}
List<string> names = GetElementContent(retString, "input type='hidden'", "name"); //如果这样 正则为 /{(?is)<input type='hidden'[^>]*?name=(['"\s]?)([^'"\s]+)\1[^>]*?>}
private static Dictionary<string,string> GetElementContent(string content, string elementName)
{
StringBuilder regexStr = new StringBuilder("(?is)<");
regexStr.Append(elementName).Append("[^>]*?\\s+").Append(@"name\s*=\s*['""]([\w\W]+?)['""]\s+value\s*=\s*['""]([\w\W]+?)['""]\s*/>");
Regex regex = new Regex(regexStr.ToString());
MatchCollection match = regex.Matches(content);
Dictionary<string, string> values = new Dictionary<string, string>();
foreach (Match m in match)
{
values.Add(m.Groups[1].Value, m.Groups[2].Value);
}
return values;
}
Dictionary<string, string> names = GetElementContent(htmlcontent, @"input\s*type\s*=\s*['""]hidden['""]");
names.ToList().ForEach(x => Console.WriteLine("name:" + x.Key + ",value:" + x.Value));
[/quote]
这个是的啊 ,不过type name value之间也有可能有其他tag吧 光只有这3个属性倒是很好匹配
主要不知道是不是只有楼主那个例子那样的情况[/quote]
改一下就行了啊
Dictionary<string, string> names = GetElementContent(htmlcontent, @"input\s*[^>]*?type\s*=\s*['""]hidden['""]");
regexStr.Append(elementName).Append("[^>]*?\\s+").Append(@"name\s*=\s*['""]([\w\W]+?)['""]\s+[^>]*?value\s*=\s*['""]([\w\W]+?)['""][^>]*?/>");
private static Dictionary<string,string> GetElementContent(string content, string elementName)
{
StringBuilder regexStr = new StringBuilder("(?is)<");
regexStr.Append(elementName).Append("[^>]*?\\s+").Append(@"name\s*=\s*['""]([\w\W]+?)['""]\s+value\s*=\s*['""]([\w\W]+?)['""]\s*/>");
Regex regex = new Regex(regexStr.ToString());
MatchCollection match = regex.Matches(content);
Dictionary<string, string> values = new Dictionary<string, string>();
foreach (Match m in match)
{
values.Add(m.Groups[1].Value, m.Groups[2].Value);
}
return values;
}
Dictionary<string, string> names = GetElementContent(htmlcontent, @"input\s*type\s*=\s*['""]hidden['""]");
names.ToList().ForEach(x => Console.WriteLine("name:" + x.Key + ",value:" + x.Value));
[/quote]
这个是的啊 ,不过type name value之间也有可能有其他tag吧 光只有这3个属性倒是很好匹配
主要不知道是不是只有楼主那个例子那样的情况
private static Dictionary<string,string> GetElementContent(string content, string elementName)
{
StringBuilder regexStr = new StringBuilder("(?is)<");
regexStr.Append(elementName).Append("[^>]*?\\s+").Append(@"name\s*=\s*['""]([\w\W]+?)['""]\s+value\s*=\s*['""]([\w\W]+?)['""]\s*/>");
Regex regex = new Regex(regexStr.ToString());
MatchCollection match = regex.Matches(content);
Dictionary<string, string> values = new Dictionary<string, string>();
foreach (Match m in match)
{
values.Add(m.Groups[1].Value, m.Groups[2].Value);
}
return values;
}
Dictionary<string, string> names = GetElementContent(htmlcontent, @"input\s*type\s*=\s*['""]hidden['""]");
names.ToList().ForEach(x => Console.WriteLine("name:" + x.Key + ",value:" + x.Value));
var htmlcontent = @"<input type=""hidden"" name=""hf10"" value=""89038"" />fdasfdsa<input type = ""hidden"" name = ""hf20"" value = ""B"" /><input type = ""hidden"" name = ""phf222"" value = ""对"" /> ";
foreach (Match reg in Regex.Matches(htmlcontent, @"(?is)<input\s+type\s*=\s*['""]hidden['""]\s+name\s*=\s*['""]([\w\W]+?)['""]\s+value\s*=\s*['""]([\w\W]+?)['""]\s*/>"))
{
// Console.WriteLine(reg.Value);
Console.WriteLine("name:"+reg.Groups[1].Value + ",value:"+ reg.Groups[2].Value);
}
private static List<string> GetElementContent(string content, string elementName, string subElement)
{
StringBuilder regexStr = new StringBuilder("(?is)<");
regexStr.Append(elementName).Append("[^>]*?\\s+").Append(subElement).Append(@"\s*=\s*['""]([\w\W]+?)['""]\s+value\s*=\s*['""]([\w\W]+?)['""]\s*/>");
Regex regex = new Regex(regexStr.ToString());
MatchCollection match = regex.Matches(content);
List<string> values = new List<string>();
foreach (Match m in match)
{
values.Add(m.Groups[1].Value);
}
return values;
}
List<string> names = GetElementContent(retString, @"input\s*type\s*=\s*['""]hidden['""]", "name");
names.ForEach(x => Console.WriteLine(x));
List<string> values = GetElementContent(retString, "input", "value");
List<string> names = GetElementContent(retString, "input type='hidden'", "name");