正则表达式提取id和值

时间:2012-02-07 13:43:08

标签: java regex

我有一个html输入元素,我需要使用两个单独的正则表达式(Java)来提取名称和值。

<INPUT type="hidden" id="Region" value="Circuits Japan" checked="false">

我需要使用2种不同的正则表达式从上面提取Region and Circuits Japan。

对于id提取,我使用了像.*id=(.[^"]+这样的东西,它给了我

Region value=Circuits Japan checked=false>

而我正试图仅提取“地区”。 任何输入将非常感激。

干杯: - )

4 个答案:

答案 0 :(得分:2)

如果输入元素在您的控制之下,则应使用属性值的引号,即:

<INPUT type="hidden" id="Region" value="Cirvuits Japan" checked="false">

然后使用:

Pattern p = Pattern.compile( " id=\"(.*?)\" value=\"(.*?)\"" );
Matcher m = m.matcher( inputString );
if ( m.find() ) {
    String id = m.group(1);
    String value = m.group(2);
    ...
}

如果您无法控制报价,请使用:

Pattern p = Pattern.compile( " id=(.*?) value=(.*?) checked=" )
...

答案 1 :(得分:1)

除非另有说明,+运算符是贪婪的...这意味着它将尽可能多地匹配。在你的情况下,这意味着它一直到最后"。要在不贪婪的情况下进行+匹配,请添加以下?。 E.g:

.*id=(.[^"]+?)

然后你应该得到你期望的价值。

答案 2 :(得分:0)

首先:使用单个正则表达式解析html的属性很难,因为属性的顺序可能会有所不同。 如果你想做多次传球,那并不难。 鉴于您没有",那么id的正则表达式将是:

id=(\\S+)

当然你无法像这样解析多个单词属性。您只需要"来正确表示这些属性。假设您的多字属性为",那么您应该使用:

someAttribute=\\"([^"]+)

答案 3 :(得分:-1)

您考虑过Apacke Tikahere是一个展示如何使用它的博客。