如何使用正则表达式从隐藏字段中获取值属性?

4
我正在尝试解析一个HTML片段以检索所需的一些数据。我在SO上尝试查找,但找不到一个可以通过筛选某些内容并获取其他内容的解决方案。
我不需要获取所有HTML标签或清除整个页面。我只想改进我的已经可用的正则表达式。
该页面有200行,我真的想要检索一个隐藏字段(换行只是为了更易读):
<!-- ...long list of html tags and hidden fields... -->

<input type="hidden" 
   name="javax.faces.ViewState" 
   id="javax.faces.ViewState" 
   value="valueIwant" 
   autocomplete="off" />

<!-- ...more html... -->

我需要通过名称或ID从名为javax.faces.ViewState的元素中检索value属性。

我最终得到了以下代码:

string value = Regex.Match(html, "<input[^>]*name=\"(javax.faces.ViewState)\"[^>]*>");

这成功地找到了确切的标签,但是将其全部检索出来。我真正想要的是改进这个 Regex,只返回 value 属性的内容。

我不想通过进行 Substring 调用来解决这个问题,因为我不知道这个内容的确切大小。


可能是正则表达式帮助提取字符串的某个部分的重复问题。 - tempidope
@JKarthik 实际上,那里和这里的答案最终非常不同。我认为 HTML 部分使情况变得更糟。 - Vitor Canova
1个回答

4
Match match = Regex.Match(html, "<input[^>]*name=\"javax.faces.ViewState\"[^>]*value=\"([^\"]*)\"");
if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
}

1) 如果namevalue的顺序改变,这种方式将不起作用。
2) 如果HTML源代码中的双引号被替换为单引号,则此方法将无效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接