2 czw2010 czw2010 于 2016.03.07 17:04 提问

关于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);

4个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.03.07 17:12
 String s = "data[1223][HOST_NAME]";
        Pattern pattern = Pattern.compile("\\[([^\\]]+)\\]");
        Matcher matcher =pattern.matcher(s);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
czw2010
czw2010   2016.03.07 17:16

楼上不行,还是返回false

WinsenJiansbomber
WinsenJiansbomber   2016.03.07 17:39

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

fateflv
fateflv   2016.03.26 17:57

正则表达式主体:

 ^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));
    }
}

示例效果图:
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!