java正则
有时候我们需要用到正则来截取我们想要的字符串,Matcher 下有find() 和 matches() 有何区别,
find 方法判断的是 s 中是否包含给定正则,而matches 方法判断整个 s 是否符合 pattern,
public static void main(String[] args) {
String reg = "(123)(456)";
Pattern pattern = Pattern.compile(reg);
String s = "123456123456";
Matcher matcher = pattern.matcher(s);
System.out.println(matcher.matches());
System.out.println(matcher.find());
}
false
true
那group 方法是啥意思呢
public static void main(String[] args) {
String reg = "(123)(456)";
Pattern pattern = Pattern.compile(reg);
String s = "123456123456";
Matcher matcher = pattern.matcher(s);
//System.out.println(matcher.matches());
//System.out.println(matcher.find());
while (matcher.find()){
System.out.println(matcher.group());
System.out.println(matcher.group(0));
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println("==========");
}
}
123456
123456
123
456
==========
123456
123456
123
456
==========
我们的正则当中有两个括号,group指代的其实就是括号组,group[0] 指代整个正则,group[1],指代满足第一个括号正则的内容,group[2]只满足第二个括号内正则的内容,
给定的字符串可能找到很多处满足正则的地方,每调用一次find() 方法,index就会后移一次
正则解析
String reg = "((?!meta).)*(<meta[^>]*charset=[^>]*>)((?!meta).)*";
((?!meta).)* 任意不包含meta的字符串
(<meta[^>]*charset=[^>]*>)
((?!meta).)*
欢迎转载,不必注明出处