2011-10-11 92 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="([^"]*)"