我试图找出正则表达式对我来说在大量字符串中找到以下内容,并提取值字段内的值 - 该值将始终是数字和字母的混合。值的长度会有所不同,我想忽略大小写。
<input type="text" name="NAME_ID" value="id2654580" maxlength="25">
所以在上面的例子中,如果控件/文本位于我的大量字符串中,我会得到'id2654580'作为值。
答案 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)
答案 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