<input type="hidden" name="idItem1" value="14">
<input type="hidden" name="idItem2" value=16>
input type="hidden" name="idItem3" value="带引号的中文">
<input type="hidden" name="idItem4" value=不带引号的中文>
用正则取出网页中input的value值,如上所示
例如取出的结果是14
16
带引号的中文
不带引号的中文如果value中只有英文字母和数字,这个我能取出来,但value里面的值是中文的话,这个正则我就不会写了~~望高手指点,拜托了~~

解决方案 »

  1.   

    value=["]*(?<value>[^\">]*)["]*随便写了一个,可以符合你目前的要求
    但是不能符合所有的要求。#region 广告开始  CSDN小助手 V2.5,更快、更爽、更方便的浏览CSDN论坛!
      界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
      下载:http://szlawbook.com/csdnv2***
      我们每回答一个问题,
      就谋杀了提问者一个思考的机会,
      而这个思考的机会可能让他获得10倍的知识,
      所以,我们不下地狱谁下地狱?
    ***#endregion
      

  2.   

    string str40 = "input type='hidden' name='idItem' value=14";
    Regex r40 = new Regex(@"input[\s\S]*?value=(?<value>[\d]*?)?",RegexOptions.IgnoreCase);
      

  3.   

    swordragon(古道热肠) 的不准确
    得出的结果是"input type="hidden" name="idItem1" value="啊
    我要的结果是value里面的值~
      

  4.   

    表达式:
    <input.+?value=(("|')?)([^>]*)\1.*?>测试工具:
    http://www.regexlab.com/zh/workshop.asp?pat=%3Cinput.%2B%3Fvalue%3D%28%28%22%7C%27%29%3F%29%28%5B%5E%3E%5D*%29%5C1.*%3F%3E&txt=%3Cinput%20type%3D%22hidden%22%20name%3D%22idItem1%22%20value%3D%2214%22%3E%0D%0A%3Cinput%20type%3D%22hidden%22%20name%3D%22idItem2%22%20value%3D%27%u5E26%u5355%u5F15%u53F7%27%3E%0D%0A%3Cinput%20type%3D%22hidden%22%20name%3D%22idItem3%22%20value%3D%22%u5E26%u53CC%u5F15%u53F7%22%3E%0D%0A%3Cinput%20type%3D%22hidden%22%20name%3D%22idItem4%22%20value%3D%u4E0D%u5E26%u5F15%u53F7%3E
      

  5.   

    纠正:中间再写一个了 "?"<input.+?value=(("|')?)([^>]*?)\1.*?>
      

  6.   

    Regex r = new Regex(@"(<input.+?value=(("|')?)([^>]*)\1.*?>)",RegexOptions.IgnoreCase|RegexOptions.Compiled);这样不行啊,楼上
      

  7.   

    表达式中的 "\1" 要对第一个括号匹配的"引号"进行引用,如果你在外层又加了一层括号,那么需要用 "\2" 才能表示引用到匹配引号的地方。有关于这一点的详细解释,推荐参考正则表达式文档中的 "2.2 反向引用" 章节:
    http://www.regexlab.com/zh/regref.htm使用 "反向引用" 是为了既能匹配单引号,又能匹配双引号。
      

  8.   

    使用 "\1", "\2" 的方法来反向引用被广泛支持。.NET 的正则表达式还支持命名的反向引用,而不是使用括号的序号来引用,这种方法不受外层括号而影响到引用效果。详情请参考 MSDN。
      

  9.   

    能不能用Regex r = new Regex(@"(<
    这种方式帮我写呢,你写的那个我套进去出了一堆错误,根本不知道该怎么改啊
      

  10.   

    不是表达式本身的问题,是字符串常量在代码中的书写问题:如果用 "@" 开头的字符串,那么,字符串中的 " 在代码中应该写成 ""
    Regex r = new Regex(@"<input.+?value=((""|')?)([^>]*)\1.*?>", RegexOptions.IgnoreCase|RegexOptions.Compiled);如果没有 "@" 开头,那么字符串中的 " 在代码中应该写成 \" ,而 \ 应该书写成 \\
    Regex r = new Regex("<input.+?value=((\"|')?)([^>]*)\\1.*?>", RegexOptions.IgnoreCase|RegexOptions.Compiled);前面两种写法都是可以的。后边的代码:String s = "<input type=\"hidden\" name=\"idItem1\" value=\"14\">";
    Match m = r.Match(s);
    System.Console.Out.WriteLine( m.Groups[3] );