Java学习笔记

Java学习笔记

正则表达式()

关键字含义
^表示非的含义也就是不匹配
\s匹配任意的空白符(匹配一次)
\S匹配非空白符(匹配一次)
\W匹配任意不是字母,数字,下划线,汉字的字符(匹配一次)
\w匹配任意字母,数字,下划线,汉字的字符(匹配一次)
\d匹配数字(匹配一次)
\D匹配非数字(匹配一次)
\b单词的开始或者结束(匹配一次)
.任意字符
{n}重复出现n次
{n,}出现一次或者多次
{n,m}重复n到m次
?0次或一次
[abc]表示只能是a或者b或者c(匹配一次)
[a-z&&[sdf]]表示a-z和s,d,f的交集(匹配一次)
\转义字符(java中双引号有特殊含义)
()表示分组
(?i)忽略大小写
test(?=1|2|3)表示匹配test1或者test2或者test3 但是打印输出只会输出test

代码演示

public class demo {
    public static void main(String[] args) {
        String qq = "a2224201";
        //正则表达式    含义是第一位是1-9之间任意一个  后面的是数字出现2到8次
        String regex = "[1-9]\\d{2,7}";
        //匹配
        boolean result = qq.matches(regex);
        //打印结果是false
        System.out.println(result);
    }
}

public class demo {
    public static void main(String[] args) {
        String qq = "52224201";
        //正则表达式    含义是第一位是1-9之间任意一个  后面的是数字出现2到8次
        String regex = "[1-9]\\d{2,7}";
        //匹配
        boolean result = qq.matches(regex);
        //打印结果是true
        System.out.println(result);
    }
}

书写正则表达式是从左到右书写

//这个表达式的含义是任意的数字字母出现2到6次     (程序的结果是true)
String str="03ee30";
String regex = "[\\w&&[^_]]{2,6}";
demo(str, regex);

写一个用户名的正则表达式(大小写字母数字下划线一共4-16位)

String str="033_";
String regex = "\\w{4,16}";
demo(str, regex);

身份证月份正则表达式

0[1-9]|1[012]

爬虫的书写

public static void main(String[] args) {
        String str="《人民日报》(电子版)的一切内12容(包括但不限于文字、图片、PDF、图表、标志、标识、商标、版面设计、专栏目录与名称、内容分类标准以及为读者提供的任何信息)仅供人民网读者阅读、学习研究使用,未经人民网股份有限公司及/或相关权利人书面授权,任何单位及个人不得将《人民日报》(电子版)所登载、发布的内容用于商业性目的,包括但不限于转载、复制、发行、制作光盘、数据库、触摸展示等行为方式,或将之在非本站所属的服务器上作镜像。否则,人民网股份有限公司将采取包括但不限于网上公示、向有关部门举报、诉讼等一切合法手段,追究侵权者的法律责任。";
        //Pattern表示正则表达式对象
        Pattern p = Pattern.compile("\\d?");
        //matcher文本匹配器的对象
        Matcher matcher = p.matcher(str);
        //记录匹配到的文本索引
        //matcher.find();
        //读取符合要求的文本
        while (matcher.find()) {
            String group = matcher.group();
            System.out.print(group);
        }
    }

网络爬取

 public static void main(String[] args) throws IOException {
        //获取网络地址
        URL url = new URL("http://idcard.ifanyi.com.cn/");
        //打开网络连接电脑有网络才可以
        URLConnection cont = url.openConnection();
        //字符缓冲流   
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(cont.getInputStream()));
        Pattern p = Pattern.compile("\\d{18}");
        //标记是否读完数据不为null继续读取
        String line;
        while ((line=bufferedReader.readLine())!=null){
            Matcher matcher = p.matcher(line);
            while (matcher.find()){
                System.out.println(matcher.group());
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值