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

C# 正则表达式,在字符串中查找表达式。,c#,.net,regex,C#,.net,Regex,我正试图找出正则表达式对我来说是什么,在一个庞大的字符串中找到以下内容,并提取值字段中的值-值将始终是数字和字母的混合体。值的长度会有所不同,我想忽略大小写 <input type="text" name="NAME_ID" value="id2654580" maxlength="25"> 因此,在上面的示例中,如果控件/文本位于我的大字符串中,我将获得'id2654580'作为值。这应该是您的正则表达式 /value="([^"]+)"/i 这里演示:这应该是您的正则表达

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

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


因此,在上面的示例中,如果控件/文本位于我的大字符串中,我将获得'id2654580'作为值。

这应该是您的正则表达式

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

这里演示:

这应该是您的正则表达式

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

此处演示:

如果您只查找值,我将使用:

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

string value = null;

if(reg.IsMatch)
{
  Match m = reg.Match(inputstring);
  value = m.Groups["value"].Value;
}
Regex reg=newregex(@“value=\”(?[^\”“]+)\”);
字符串值=null;
如果(注册IsMatch)
{
匹配m=reg.Match(输入字符串);
value=m.Groups[“value”].value;
}

如果您只查找值,我将使用:

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

string value = null;

if(reg.IsMatch)
{
  Match m = reg.Match(inputstring);
  value = m.Groups["value"].Value;
}
Regex reg=newregex(@“value=\”(?[^\”“]+)\”);
字符串值=null;
如果(注册IsMatch)
{
匹配m=reg.Match(输入字符串);
value=m.Groups[“value”].value;
}

正如对OP的评论已经指出的那样:

但当你好奇它会是什么样子时:
你的正则表达式应该是

<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

正如对OP的评论已经指出的那样:

但当你好奇它会是什么样子时:
你的正则表达式应该是

<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
静态字符串GetValue(字符串str,字符串名称)
{
var rx=新正则表达式(@“”);
返回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
var str=@”;
var value=GetValue(str,“NAME_ID”)//id2654580
静态字符串GetValue(字符串str,字符串名称)
{
var rx=新正则表达式(@“”);
返回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
var str=@”;
var value=GetValue(str,“NAME_ID”)//id2654580

输入字符串看起来像是HTML。您应该使用HTML解析器进行此类解析,如正则表达式,这样做很容易出错。如果您的文件是有效的xml,那么您最好将其作为xml搜索,而不仅仅是字符串。如果这是HTML,则应该有一些HTML帮助器库比正则表达式更适合。如果是xml文件,则有XDocument或XmlDocument。您不想使用这些的原因是什么?如果您有
value=“id2654580”
value='id2654580'
或其他都是有效的或“可容忍的”HTML,但如果您处理大量XML,.NET已经有库来完成这项工作,那么太特定的正则表达式可能无法匹配。看一看。还有用于XML的LINQ。输入字符串看起来像是HTML。您应该使用HTML解析器进行此类解析,如正则表达式,这样做很容易出错。如果您的文件是有效的xml,那么您最好将其作为xml搜索,而不仅仅是字符串。如果这是HTML,则应该有一些HTML帮助器库比正则表达式更适合。如果是xml文件,则有XDocument或XmlDocument。您不想使用这些的原因是什么?如果您有
value=“id2654580”
value='id2654580'
或其他都是有效的或“可容忍的”HTML,但如果您处理大量XML,.NET已经有库来完成这项工作,那么太特定的正则表达式可能无法匹配。看一看。还有用于XML的LINQ。这不会检索整个
input
节点吗?OP只查找值string@Default它将匹配整个输入节点,但只捕获值。如果你不匹配整个输入字段,你会得到所有节点的所有值(如果指定了任何节点),我理解OP好像他只想从输入字段中获取值。酷。我对正则表达式不太熟悉,所以我想知道为什么。你能展示一下这在C程序中是如何使用的吗?这不会检索整个
输入节点吗?OP只查找值string@Default它将匹配整个输入节点,但只捕获值。如果你不匹配整个输入字段,你会得到所有节点的所有值(如果指定了任何节点),我理解OP好像他只想从输入字段中获取值。酷。我对正则表达式不太熟悉,所以我想知道为什么。那么,你能展示一下如何在C#程序中使用它吗?