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).)*
 
posted @ 2018-12-13 16:34  生心无住  阅读(162)  评论(0编辑  收藏  举报