2012-07-02 64 views
2

我需要從一個隱藏的HTML字段中提取一個值,有點想通了,但我目前被卡住了。我該如何處理這個正則表達式問題?

我正則表達式是這樣的:

<input type="hidden" name="form_id" value=".*" 

但這提取從HTML整個字符串。

的字符串看起來像:

<input type="hidden" name="form_id" value="123"/> 

我需要從字符串中提取的「價值」,它總是在不斷變化,但「名」是永遠不變的。有沒有辦法提取它,而不做另一個表達式?我感謝任何幫助。

+0

請界定「沒有做的另一種表達」。 –

+0

@humble_coder不創建另一個正則表達式。我想提取一個表達式中的值(一行)。 – user1224096

+5

我敢肯定,我有一個T恤某處說了一些關於解析HTML與正則表達式........ –

回答

3
(?<=<[^<>]+?name="form_id"[^<>]+value=")(.*)(?=") 
1

我只是把它扔在一起。基本上你想在你的請求中否定任何結束。所以,你可能想要做這種性質的東西:

<[^>]*hidden[^>]*value="(.*)"[^>]*> 

,然後讀取第一個捕獲組(Delphi instructions)。儘管它確實假設了「隱藏」和「價值」的位置順序,但儘可能合理地通用。

爲了找到值,而訂單則可以使用可以使用一個稍微乾淨前瞻方面的建議:

^(?=.*name="form_id").*value="([^"]*)".*$ 
+0

謝謝,但這會返回整個字符串,而不僅僅是值。 – user1224096

+0

該值位於第一個捕獲組中。你熟悉那些嗎? –

+0

是的,我很抱歉,完全錯過了那一個。第一個捕獲組返回值,如果訂單已更改,是否介紹發佈示例?例如,如果「值」出現在「名稱」之前 – user1224096

0

<[a-zA-Z"= _^>]*value="(\d*)"/>
我已經爲你的榜樣測試這一點。
如果要提取只輸入標籤,你可以寫:

<input[a-zA-Z"= _^>]*value="(\d*)"/>