2011-10-11 72 views
-1

我使用这个正则表达式代码来获取标签,但值:使用正则表达式来获取HTML标记中的值?

(<input type="hidden" name="pt" id="pt" value=")|(" \/>) 

从这个代码:

<input type="hidden" name="pt" id="pt" value="f64b1aadf7baa6e416dbfb6bf95fa031" /> 

但我会怎么做的其他方式?获取价值,但不是周围的标签?所以我只会得到“f64b1aadf7baa6e416dbfb6bf95fa031”(不带引号)。谢谢。

+5

[不使用正则表达式解析HTML等](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Donut

+0

什么语言?所有使用正则表达式都有点不同。 – Chriszuma

+0

尝试'value =“f64b1aadf7baa6e416dbfb6bf95fa031”'。你必须更具体地说明你的解决方案应该适用于哪种情况 - 所有有效的HTML? – Tim

回答

3

正如Donut所说,你不应该在HTML上使用正则表达式。但是,由于这是一个非常简单的例子,我将成为一个推动者。但严重的是,如果它变得更复杂一点,请切换到DOM解析器。

value="(.+?)" 

我假设你正在使用PHP,因此要获得捕获的小组出局,这样做:

preg_match('value="(.+?)"', $input, $groups); 
echo "Value = " . $groups[1]; 

?使其成为一个懒惰的运营商,所以它吸引到第一个报价标记。如果没有逃脱引号内的引号,你需要添加这种可能性:

value="(.+?[^\\])" 
+0

谢谢!工作很好。 :) –

2

虽然通常不建议尝试使用正则表达式解析HTML,但您可以试试这个:value="([^"]*)"