问题模式/匹配器

时间:2011-09-25 11:25:14

标签: java android regex string

我想从fieldset标记中提取name =“buddyname”后面的值5342test。 但HTML代码中有多个字段集。 下面是HTML中字符串的示例。

<fieldset style="display:none"><input type="hidden" name="buddyname" value="5342test" /></fieldset>

我在Pattern.compile中添加不同的模式有一些困难,我只想显示值5342test而不是其他结果,有人可以帮忙吗? 谢谢。

我的代码:

String stringToSearch = "5342test";

            Pattern pattern = Pattern.compile("(\\value=\\})");  
            Matcher m = pattern.matcher(stringToSearch);

            while (m.find())
            {
              // get the matching group
              String codeGroup = m.group(1);

              // print the group
              System.out.format("'%s'\n", codeGroup); // should be 5342test
            }

2 个答案:

答案 0 :(得分:1)

使用此模式:

Pattern pattern = Pattern.compile("<input[^>]*?value\\s*?=\\s*?\\\"(.*?)\\\"");

答案 1 :(得分:0)

由于您希望在fieldset标记内输入值,因此可以使用此正则表达式模式。

Pattern pattern = Pattern.compile("<fieldset[^>]*>[^<]*<input.+?value\\s*=\\s*\\\"([^\\\"]*)\\\"");
Matcher matcher = pattern.matcher("<fieldset style=\"display:none\"><input type=\"hidden\" name=\"buddyname\" value=\"5342test\" /></fieldset>");
if (matcher.find()) 
    System.out.println(matcher.group(1)); //this prints 5342test
else
    System.out.println("Input html does not have a fieldset");