0

我正在尝试从名为“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();

但什么也没回来。我该怎么办?

4

2 回答 2

1

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

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

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

于 2012-07-01T17:36:18.060 回答
0

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

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

那么你的模式将不符合“name”和“=”之间的空格以及属性“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));
    }

同时,需要楼上的小费!

于 2012-07-02T11:44:10.373 回答