2023/6/14总结

爬取(2)

 

带条件爬取:根据要爬取信息附带的条件来设置相应的正则表达式即可

贪婪爬取:在爬取数据的时候尽可能多的爬取数据

非贪婪爬取:在爬取数据的时候尽可能少的爬取数据

只写+和*表示贪婪匹配

+?非贪婪匹配

*? 非贪婪匹配

带条件爬取:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class RegexDemo2 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 需求1:爬取版本号为8,11,17的java文本,但是只要java,不显示版本号
		 需求2:爬取版本号为8,11,17的java文本。正确爬取结果为:java8 java11 java17
		 需求3:爬取除了版本号为8 11 17的java文本
		 */
		
		String str="java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和JAva11"+
		"因为这两个是长期支持版本,下一个长期支持版本是JAVa17,相信在未来不久JAVA17也会逐渐登上历史舞台";
		
		//1.定义正则表达式
		//?理解为前面的数据java
		//=表示在java后面要跟随的数据
		//但是在获取的时候,只获取前半部分
		//需求1:
		String regex1="((?i)java)(?=8|11|17)";//为了区分要求中的java,我把java换成了不同的大写
		//需求2:
		String regex2="((?i)java)(8|11|17)";
		String regex3="((?i)java)(?:8|11|17)";
		//需求3:
		String regex4="((?i)java)(?!8|11|17)";//!表示除了8 11 17
		
		Pattern p=Pattern.compile(regex4);
		Matcher m=p.matcher(str);
		while(m.find()) {
			System.out.println(m.group());
		}
 
	}
 
}

贪婪与非贪婪爬取:

public class RegexDemo3 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		/*
		 
		 	只写+和*表示贪婪匹配
		 	+?非贪婪匹配
		 	*? 非贪婪匹配
		 	
		 	贪婪爬取:在爬取数据的时候尽可能多的爬取数据
		 	非贪婪爬取:在爬取数据的时候尽可能少的爬取数据
		 	
		 	ab+:
		 	贪婪爬取:abbbbbbbbbbb
		 	非贪婪爬取:ab
		 	
		 	java当中,默认的就是贪婪爬取
		 	如果我们在数量词+*的后面加上问号,那么此时就是非贪婪爬取
		 	
		 */
		String s="java自从95年问世以来abbbbbbbbbbbbaaaaaaaaa"
				+ ",经历了很多版本,目前企业中用的最多的是Java8和JAva11"+
				"因为这两个是长期支持版本,下一个长期支持版本是JAVa17,相信在未来不久JAVA17也会逐渐登上历史舞台";
		
		
		String regex1="ab+?";
		
		Pattern p=Pattern.compile(regex1);
		Matcher m=p.matcher(s);
		while(m.find()) {
			System.out.println(m.group());
		}
	}
 
}

2023/6/14总结_第1张图片

示例代码

  //字符串替换
        String s="小试试tkthilth小叮当jsdfskdfjk小混混";
        String result=s.replaceAll("[\\w&&[^_]]+","vs");
        System.out.println(result);


        //字符串切割
        String[] arr=s.split("[\\w&&[^_]]+");
        for(int i=0;i

 分组:

2023/6/14总结_第2张图片

2023/6/14总结_第3张图片

示例代码:

 //分组练习
        //  \\组号 :表示把第x组的内容再拿出来用一次
        String regex1="(.).+\\1";
            System.out.println("a123a".matches(regex1));
            System.out.println("a123b".matches(regex1));

        //开始部分和结尾部分是否一致
        String regex2="(.+).+\\1";
            System.out.println("abb123abb".matches(regex2));
            System.out.println("1234442232".matches(regex2));

        //开始结尾部分内容也要一致
        //* 0次或多次
       // String regex3="(.)\\1";

Data时间类

2023/6/14总结_第4张图片

2023/6/14总结_第5张图片 获取当前时间代码:

public class Test {
    public static void main(String[] args) {
//        获取当前时间
        Date date1 = new Date();
        System.out.println("当前时间:" + date1);
//        获取当前操作系统时间的毫秒值
        long time = date1.getTime();
        System.out.println("当前时间毫秒值:" + time);
//        Tue Jan 05 10:11:25 CST 2021  ->1609812685322
//        创建指定时间
        Date date2=new Date(1609812685322l);
        System.out.println("date2:"+date2);//指定的不会变化
    }
}

 2023/6/14总结_第6张图片

 2023/6/14总结_第7张图片

 

 

你可能感兴趣的:(java)