public static string GetInputValueByName(string Code,string inputname)
{
    string name,value = "";
    string str = "";
    string code = @"<Form>
   <input type='hidden' value='1' name='rs_permission'/>
                     <input type='hidden' value='12298802,12537683,12815699' name='apn'/>
   <input type='text' value='abcdefg' name='d_name' > 
   </Form>";    Regex reg = new Regex(这里的正则怎么写?, RegexOptions.IgnoreCase);    MatchCollection mc = reg.Matches(str);
    foreach (Match m in mc)
    {
name = m.Groups["name"].ToString();
value = m.Groups["value"].ToString();
if (name.Equals(inputname))
  str = value;
    }    return str;
}

解决方案 »

  1.   

    <input type='hidden' value='1' name='rs_permission'/>查找 name 和 value 的值的正则
      

  2.   


    public string FindValueByName(string str, string inputname)
    {
        string pattern = "(<input.*?name='(?<Name>[^']+?)'.*?value='(?<Value>[^']+?)'.*?>)|(<input.*?value='(?<Value>[^']+?)'.*?name='(?<Name>[^']+?)'.*?>)";
        Match match = Regex.Match(str, pattern);
        while (match.Success)
        {
            string name = match.Groups["Name"].ToString();
            string value = match.Groups["Value"].ToString();
            if (name == inputname)
                return value;
            match = match.NextMatch();
        }
        return string.Empty;
    }
      

  3.   

    string pattern = "(<input.*?name='(?<Name>[^']+?)'.*?value='(?<Value>[^']+?)'.*?>)|(<input.*?value='(?<Value>[^']+?)'.*?name='(?<Name>[^']+?)'.*?>)";
      

  4.   

    如果规则就如你的例子,value和name的顺序是一定的,那就很简单了
    string code = @"<Form>
               <input type='hidden' value='1' name='rs_permission'/>
             <input type='hidden' value='12298802,12537683,12815699' name='apn'/>
               <input type='text' value='abcdefg' name='d_name' > 
               </Form>";
    Regex reg = new Regex(@"(?is)<input\b(?:(?!value=).)*value='(?<value>[^']*)'\s+name='(?<name>[^']*)'[^>]*>");
    MatchCollection mc = reg.Matches(code);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["name"].Value + "\n";
        richTextBox2.Text += m.Groups["value"].Value + "\n";
    }如果情况考虑复杂点,value和name可能还有其它属性,value=和name=后可能接“'”,“"”或直接接属性值,那么
    string code = @"<Form>
               <input type='hidden' value='1' name='rs_permission'/>
             <input type='hidden' value='12298802,12537683,12815699' name='apn'/>
               <input type='text' value='abcdefg' name='d_name' > 
               </Form>";
    Regex reg = new Regex(@"(?is)<input\b(?:(?!value=).)*value=(['""]?)(?<value>(?:(?!\1).)*)(?:(?!name=).)*name=(['""]?)(?<name>(?:(?!\2).)*)[^>]*>");
    MatchCollection mc = reg.Matches(code);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["name"].Value + "\n";
        richTextBox2.Text += m.Groups["value"].Value + "\n";
    }
    如果顺序不一定,那会麻烦些string code = @"<Form>
               <input type='hidden' value='1' name='rs_permission'/>
             <input type='hidden' value='12298802,12537683,12815699' name='apn'/>
               <input type='text' value='abcdefg' name='d_name' > 
               </Form>";
    Regex reg = new Regex(@"(?is)<input\b(?=(?:(?!value=|/?input).)*value=(['""]?)(?<value>(?:(?!\1).)*)\1)(?:(?!name=).)*name=(['""]?)(?<name>(?:(?!\2).)*)\2[^>]*>");
    MatchCollection mc = reg.Matches(code);
    foreach (Match m in mc)
    {
        richTextBox2.Text += m.Groups["name"].Value + "\n";
        richTextBox2.Text += m.Groups["value"].Value + "\n";
    }
      

  5.   

    楼上正解。。[align=center]****************************************************************
                看帖一定要回的,分也一定要接的。^_^
    ****************************************************************[/align]
      

  6.   

    感谢大家的回复,尤其感谢lxcnn的耐心解答。
      

  7.   

    这样子就能变成一个很通用的取input的正则表达式了。