2

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

我的正则表达式看起来像:

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

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

字符串看起来像:

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

我需要从字符串中提取“值”,它总是在变化,但“名称”总是一样的。有没有办法在不做其他表达式的情况下提取它?我很感激任何帮助。

4

3 回答 3

3
(?<=<[^<>]+?name="form_id"[^<>]+value=")(.*)(?=")
于 2012-07-02T22:51:15.560 回答
1

我只是把这个放在一起。基本上,您想否定请求中的任何结尾 >。所以你可能想做一些这样的事情:

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

然后阅读第一个捕获组(Delphi 指令)。尽管它确实假定了“隐藏”和“值”的位置顺序,但这使它尽可能地保持通用性。

为了在不考虑顺序的情况下找到值,您可以使用建议的稍微干净的前瞻:

 ^(?=.*name="form_id").*value="([^"]*)".*$
于 2012-07-02T21:27:31.507 回答
0

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

<input[a-zA-Z"= _^>]*value="(\d*)"/>
于 2014-11-25T07:11:51.403 回答