关于java正则表达式问题

有个字符串是这样的:data[1223][HOST_NAME],我需要匹配格式是否是data[xxx][xxx],然后提取出xxx的值,请问正则要怎么写?

//我自己写的这样的,返回的是false
String s = "data[1223][HOST_NAME]";
Pattern pattern = Pattern.compile("^data\\[\\W\\]*");
Matcher matcher =pattern.matcher(s);
boolean b= matcher.matches();
System.out.println(b);

 String s = "data[1223][HOST_NAME]";
        Pattern pattern = Pattern.compile("\\[([^\\]]+)\\]");
        Matcher matcher =pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }

楼上不行,还是返回false

"data\[(\d+\]\[.+\]"

正则表达式主体:

 ^data\[.*?\]\[.*?\]

java正则字符串:

 ^data\\[(.*?)\\]\\[(.*?)\\]

java代码:

/*
* @author   fateflv
* @version  1.0
* @since    2016-03-26
* @site     http://my.csdn.net/fateflv
*/

import java.util.regex.*;

public class reg2 {
    public static void main(String[]agrs)
    {

        String s = "data[1223][HOST_NAME]";
        Pattern pattern = Pattern.compile("^data\\[(.*?)\\]\\[(.*?)\\]");
        Matcher matcher =pattern.matcher(s);
        boolean b= matcher.matches();
        System.out.println(b); 
        System.out.println("第1个: "+matcher.group(1));
        System.out.println("第2个: "+matcher.group(2));
    }
}

示例效果图:
图片说明