有个字符串是这样的: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));
}
}
示例效果图: