正则表达式,在字符串中查找表达式

时间:2014-02-21 15:05:41

标签: c# .net regex

我试图找出正则表达式对我来说在大量字符串中找到以下内容,并提取值字段内的值 - 该值将始终是数字和字母的混合。值的长度会有所不同,我想忽略大小写。

<input type="text" name="NAME_ID" value="id2654580" maxlength="25">

所以在上面的例子中,如果控件/文本位于我的大量字符串中,我会得到'id2654580'作为值。

4 个答案:

答案 0 :(得分:3)

正如对OP的评论已经指出:you should'nt use regex to parse html!

但是你很好奇它会是什么样子:
你的正则表达式就像

<input.*value="(.+?)".*>

如果有任何指定,这将获得输入标签的值。

<input   #matches "<input" literally
.*       #matches zero to unlimited characters
value="  #matches 'value="' literally
(.+?)    #captures as few characters as possible
"        #matches " literally
.*       #same as above
>        #matches > literally

在C#中:

//using System.Text.RegularExpressions

string str = "<input type=\"text\" name=\"NAME_ID\" value=\"id2654580\" maxlength=\"25\">";
Regex re = new Regex(@"<input.*value=""(?<val>.+?)"".*>"); //note the named group

Match match = re.Match(str);
String value = match.Groups["val"].Value;

答案 1 :(得分:1)

如果您只是在寻找价值,我会使用:

Regex reg = new Regex(@"value=\""(?<value>[^\""]+)\""");

string value = null;

if(reg.IsMatch)
{
  Match m = reg.Match(inputstring);
  value = m.Groups["value"].Value;
}

答案 2 :(得分:0)

那应该是你的正则表达式

/value="([^"]+)"/i

这里演示:http://rubular.com/r/tCj4WEtBZa

答案 3 :(得分:0)

static string GetValue(string str, string name)
{
    var rx = new Regex(@"<input\s+type=""text""\s+name="""+ name +@"""\s+value=""(?<value>.+)""\s+maxlength=""25"">");
    return rx.Match(str).Groups["value"].Value;
}  

用法:

    var str = @"<input type=""text"" name=""NAME_ID"" value=""id2654580"" maxlength=""25"">";
    var value = GetValue(str, "NAME_ID");  //id2654580