一、正则表达式

  1.定义:用于定义字符串的内容

  2.用途:(1)匹配单个,多个字符串(matches)

             (2)简化代码,让代码变得更简洁,更优雅

             (3)校验信息,包括电话,座机,邮箱

             (4)切割字符串,替换字符串

             (5)爬取信息中的内容(可以强记忆,死代码)(pattern)

详细介绍:

(1)匹配单个,多个字符串(matches)

package Regex;/*** 目标:深入学习正则表达式*/
public class test1 {public static void main(String[] args) {//只能是 a   b   cSystem.out.println("a".matches("[abc]"));//trueSystem.out.println("z".matches("[abc]"));//false//不能出现 a  b  cSystem.out.println("a".matches("[^abc]"));//falseSystem.out.println("z".matches("[^abc]"));//trueSystem.out.println("a".matches("\\d"));//falseSystem.out.println("3".matches("\\d"));//trueSystem.out.println("333".matches("\\d"));//falseSystem.out.println("z".matches("\\w"));//trueSystem.out.println("2".matches("\\w"));//trueSystem.out.println("21".matches("\\w"));//falseSystem.out.println("你".matches("\\w"));//falseSystem.out.println("你".matches("\\W"));//trueSystem.out.println("----------------------------------");//以上正则表达式只能匹配单个字符//校验密码//必须是数字,字母,下划线 至少6位System.out.println("33ds3c".matches("\\w{6,}"));//trueSystem.out.println("33dsc".matches("\\w{6,}"));//falseSystem.out.println("33dssc234你".matches("\\w{6,}"));//false//验证码必须是数字和字符  必须是4位System.out.println("23dF".matches("[a-zA-Z0-9]{4}"));//trueSystem.out.println("23_F".matches("[a-zA-Z0-9]{4}"));//falseSystem.out.println("23dF".matches("[\\w&&[^_]]{4}"));//trueSystem.out.println("23_F".matches("[\\w&&[^_]]{4}"));//false}
}

 (2)简化代码,让代码变得更简洁,更优雅

package Regex;public class RegexDemo {public static void main(String[] args) {//需求:校验QQ号码,必须全部数字6--20位System.out.println(checkQQ("324535"));//trueSystem.out.println(checkQQ(null));//falseSystem.out.println(checkQQ("32453a"));//false//System.out.println(checkQQ1("324535"));//true}//使用正则表达式表示public static boolean checkQQ1(String qq){return qq != null && qq.matches("\\d{6,20}");}//常规表示public static boolean checkQQ(String qq){//1.判断QQ号的长度是否满足要求if(qq == null || qq.length() < 6 || qq.length() > 20){return false;}//2.判断QQ中是否每个都是数字,不是返回falsefor (int i = 0; i < qq.length(); i++) {//获取每个字符char ch = qq.charAt(i);//判断这个字符是不是数字,不是返回falseif(ch < 0 || ch > '9'){return false;}}return true;//肯定合法了}
}

    (3)校验信息,包括电话,座机,邮箱

package Regex;import java.util.Scanner;public class Example1 {public static void main(String[] args) {//目标:校验  手机号码 邮箱 电话号码//checkPhone();//checkEmail();checkTel();}public static void checkTel(){Scanner sc = new Scanner(System.in);while (true) {System.out.println("请您输入您的注册电话(座机)号码:");String tel = sc.next();//判断手机号码的格式是否正确if(tel.matches("0\\d{2,6}-?\\d{5,20}")){System.out.println("格式正确,注册完成!");break;}else{System.out.println("格式有误!");}}}public static void checkEmail(){Scanner sc = new Scanner(System.in);while (true) {System.out.println("请您输入您的注册邮箱:");String email = sc.next();//判断手机号码的格式是否正确if(email.matches("\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2}")){System.out.println("邮箱格式正确,注册完成!");break;}else{System.out.println("格式有误!");}}}public static void checkPhone(){Scanner sc = new Scanner(System.in);while (true) {System.out.println("请您输入您的注册手机号码:");String phone = sc.next();//判断手机号码的格式是否正确if(phone.matches("1[3-9]\\d{9}")){System.out.println("手机号码格式正确,注册完成!");break;}else{System.out.println("格式有误!");}}}
}

(4)切割字符串,替换字符串

package Regex;/*** 目标:正则表达式在方法中的应用*   public String[] split(String regex)*       ----按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组*   public String replaceAll(String regex,String newStr)*       ----按照正则表达式匹配的内容进行替换*/
public class SplitDemo {public static void main(String[] args) {String names ="小路hdetretd蓉儿reteryyhgdf果儿";String[] arrs = names.split("\\w+");for (int i = 0; i < arrs.length; i++) {System.out.println(arrs[i]);//按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组//小路//蓉儿//果儿}String names2 = names.replaceAll("\\w+"," ");System.out.println(names2);//按照正则表达式匹配的内容进行替换(替换为空格) //小路 蓉儿 果儿}
}

爬取信息中的内容(可以强记忆,死代码)(pattern

package Regex;
/*** 利用正则表达式爬取信息中的内容(需要记住!!!)*/import java.util.regex.Matcher;
import java.util.regex.Pattern;public class matchDemo {public static void main(String[] args) {String rs = "来黑马程序学习Java,电话020-43422424,或者联系邮箱" +"itcast@itcast.cn,电话182205213457,0203232323" +"邮箱bozai@itcast.cn,400-100-3233,4001003232";//需求:从上面的内容中爬取出 电话号码和邮箱//1.定义爬取规则,字符串形式String regex = "(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2}) | (1[3-9]\\d{9})"+ "|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9})";//2.把这个爬取规则编译成匹配对象-------------把规则翻译(compile)成匹配对象Pattern  pattern = Pattern.compile(regex);//3.得到一个内容匹配对象---------------调matcher方法 到rs那去匹配(找内容中的规则)// 让匹配器拿着匹配规则到rs里面去爬取Matcher matcher = pattern.matcher(rs);//4.开始找了while(matcher.find()){//找到了就返回trueString rs1 = matcher.group();//每找到一个就取一组System.out.println(rs1);}}
}

3.匹配规则

正则表达式的介绍及应用相关推荐

  1. python爬虫提取人名_python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫-爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv ...

  2. java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍

    java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...

  3. php正则运用,php中常用的正则表达式的介绍及应用实例代码

    更全面的实例,可以参考 最常用的PHP正则表达式收集整理 //www.jb51.net/article/14049.htm php 正则表达式小结 //www.jb51.net/article/198 ...

  4. 【小白学爬虫连载(3)】--正则表达式详细介绍

    欢迎大家关注公众号[哈希大数据] [小白学爬虫连载(1)]-爬虫框架简介 [小白学爬虫连载(2)]--Requests库介绍 [小白学爬虫连载(3)]--正则表达式详细介绍 [小白学爬虫连载(4)]- ...

  5. 正则表达式匹配linux时间,linux grep与正则表达式使用介绍

    grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹 ...

  6. 【转】C# 正则表达式 使用介绍

    正则元字符 在说正则表达式之前我们先来看看通配符,我想通配符大家都用过.通配符主要有星号(*)和问号(?),用来模糊搜索文件.winodws中我们常会使用搜索来查找一些文件.如:*.jpg,XXX.d ...

  7. 正则表达式的介绍与底层分析

    正则表达式 正则表达式介绍 正则表达式简单使用 分析 martch.find()完成的任务 march.group(0) 分析 正则表达式介绍 又称规则表达式(英语:Regular Expressio ...

  8. UNIX和Linux Shell正则表达式语法介绍

    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串 ...

  9. ORACLE匹配手机号,Oracle正则表达式语法介绍及实现手机号码匹配方法

    Oracle10g提供了在查询中使用正则表达的功能,它是通过各种支持正则表达式的函数在where子句中实现的.本文将简单的介绍oracle正则表达式常用语法,并通过一个手机特号匹配的例子演示正则表达式 ...

最新文章

  1. #pragma指令与#ifndef指令
  2. sql server转oracle需要注意的几点
  3. Ubuntu16安装anaconda没有这个文件或者目录
  4. 根据字符串形式的路径导入模块(重要)
  5. viito为什么不去新说唱_为什么问责制的说唱不好
  6. jsp版本的环境变量集合
  7. Android打开/关闭wifi命令
  8. HUSTOJ(2019)在线判题系统的从零开始搭建过程
  9. 联发科MT2503D处理器详细参数介绍
  10. 19个免费的UI界面设计工具及资源
  11. spring boot整合elk
  12. 园区网的网关部署在接入层还是汇聚层 面试官与求职者之间谈话
  13. UNIX环境高级编程-环境配置
  14. Stata | 分组回归系数差异性检验
  15. JS逆向 | ob混淆一键还原工具
  16. 爬取《Five Hundred Miles》在网易云音乐的所有评论
  17. 王者荣耀英雄简介-1
  18. 猪齿鱼(Choerodon UI )的通用提交的封装 —— 两种方案,A.使用dataSet的自身的submit,B.使用axios.post来提交
  19. Foxmail6下@yahoo.cn邮箱设置
  20. 志汇同城-同城小程序8.6开源版源码赠送米花同城6.6.6+微同城模板

热门文章

  1. java实现Excel导出下载功能(返回pdf流)
  2. 标幺值下Simulink三相瞬时功率模块输出端加增益2/3的原因
  3. 远程连接Jupyter Notebook报错:bind [127.0.0.1]:8888: Permission denie
  4. 计算机教师评职称自我鉴定,教师评职称的自我鉴定范文
  5. 【深度学习】Mask-RCNN 计算机视觉实例分割模型介绍 Mask分支
  6. ATFX:美国9月PCE物价指数晚间发布,会出现意外吗?
  7. 速达软件商品流通企业解决方案
  8. arcgis地图加载离线地图
  9. uniapp下载图片
  10. 都说C++难,那么它到底难在了哪里?