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#程序中使用它吗?