尝试提取HTML属性时,我的正则表达式失败

时间:2012-07-01 17:00:47

标签: java regex

我正在尝试从名为“this”的HTML页面获取值 例如:

name="this" value="XXXX-XXX-xxxxx-xxxxx"

我尝试使用

Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\"");
Matcher match = pat.matcher(sb);
        if(match.matches())
            return match.group();

但没有回来。我该怎么办?

2 个答案:

答案 0 :(得分:1)

像乔普说的那样;使用“查找”:

Pattern pat = Pattern.compile("name=\"this\" value=\"(.*?)\"");
Matcher match = pat.matcher(sb);
if(match.find())
    return match.group(1);

另请注意,您需要检索“group(1)”,因为只需group()返回整个模式匹配。

答案 1 :(得分:0)

我认为你应该考虑更多的条件,比如

name = "this" id = "something" value = 'xxx'

那么你的模式不符合“name”和“=”'xxx'之间的空格以及属性“name”和属性“value”之间的字符串的要求,所以我认为模式应该像下面的形式:

private final String matchString = "name\\s*=\\s*(?:\"this\")|(?:'this')" +
                                    ".*?" +
                                    "value\\s*=\\s*" +
                                    "(?:\"([^\"]*)\") |(?: '([^']*)')";
private final Pattern pattern = Pattern.compile(matchString,Pattern.DOTALL|Pattern.COMMENTS); 
Matcher matcher = pattern.matcher(content);

    while(matcher.find())
    {
        System.out.println(matcher.group(1));
    }

与此同时,需要从地板上提示!