正则表达式,在字符串中查找表达式。
问题描述:
我想弄清楚什么正则表达式会让我在一个巨大的字符串中找到以下内容,并提取值字段内的值 - 该值将始终是数字和字母的混合。值的长度会有所不同,我想忽略大小写。正则表达式,在字符串中查找表达式。
<input type="text" name="NAME_ID" value="id2654580" maxlength="25">
所以在上面的例子中,我会得到“id2654580”为价值,如果控制/文位于我巨大的字符串中。
答
正如注释到OP已经指出:you should'nt use regex to parse html!
但是,因为你是c urious它会是什么样子:
你的正则表达式会是这样的
<input.*value="(.+?)".*>
这将让你输入标签(一个或多个)的值(S),如果有任何规定。
<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;
答
,如果你只是在寻找的价值,我会用:
Regex reg = new Regex(@"value=\""(?<value>[^\""]+)\""");
string value = null;
if(reg.IsMatch)
{
Match m = reg.Match(inputstring);
value = m.Groups["value"].Value;
}
答
static string GetValue(string str, string name)
{
var rx = new Regex(@"<input\s+type=""text""\s+name="""+ name [email protected]"""\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
输入字符串看起来是HTML。你应该使用HTML解析器进行解析,因为像这样的正则表达式会非常容易出错。 – LB2
如果你的文件是有效的xml,那么你会更好地搜索它作为XML而不是一个字符串。 –
如果这是HTML,应该有一些HTML助手库比只是正则表达式更适合。如果它是一个xml文件,则有XDocument或XmlDocument。你不想使用这些的任何原因? – Default