我该如何处理这个正则表达式问题?

时间:2012-07-02 21:17:02

标签: regex delphi parsing extract

我需要从隐藏的HTML字段中提取一个值,有点想出来但我现在卡住了。

我的正则表达式如下:

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

但是这会从HTML中提取整个字符串。

字符串如下:

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

我需要从字符串中提取“值”,它总是在变化,但“名称”始终是相同的。有没有办法在不做另一个表达的情况下提取它?我感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我把它扔到了一起。基本上你想否定任何结局&gt;在你的请求中。所以你可能想做一些这样的事情:

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

然后阅读第一个捕获组(Delphi instructions)。尽管它确实假设“隐藏”和“价值”的位置顺序,但这仍然保持尽可能合理的通用。

为了在不考虑订单的情况下找到价值,你可以使用一个稍微清洁的前瞻,如建议的那样:

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

答案 2 :(得分:0)

<[a-zA-Z"= _^>]*value="(\d*)"/>
我已经测试了这个例子。
如果您只想提取输入标签,可以写:

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