亲爱的小伙伴们,本期我们讲解java中的正则表达式和它相关的一些类与方法。

概述

正则表达式非常强大,能够解决我们开发时用于匹配一些特定的要求。并且java中还提供了相当强大的方法,扩展其功能性。下面我们就来介绍一下:

1.定义一个关于用户名的正则表达式

String regex = "[一-鿯[a-z][A-Z]{2}]w{6,20}";

2.定义一个关于密码的正则表达式

String password = "[w.]{6,16}";

3. 定义一个关于QQ邮箱的正则表达式

String email = "[d@qq.com]{12,16}";

4.两个用来处理正则表达式的工具类

compile是静态方法,用于编译规则返回Pattern对象

matcher用于匹配字符串

Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(str);

5.find():判断字符串是否匹配

6.group():将匹配到的字符串分组

7.start()和end():分别表示第几轮匹配到的字符串的下标,end()下标自动加1

8.appendReplacement():用特定的字符串替代匹配到的字符串,并放入其第一个参数 StringBuffer中

9.appendTail():将最后匹配到的字符串的剩余串放入StringBuffer中

应用

package com.bbc.regex;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexDemo {// 定义一个全局变量用于计数static int count = 0;// 定义一个全局变量用于替代static String replaceStr = "-";public static void main(String[] args) {// 定义一个关于用户名的正则表达式String regex = "[一-鿯[a-z][A-Z]{2}]w{6,20}";// 定义匹配的子段String str = "吴dadadadda31da";// 定义一个关于密码的正则表达式String password = "[w.]{6,16}";// 定义匹配的字段String passwordStr = "dafa........";// 定义一个关于QQ邮箱的正则表达式String email = "[d@qq.com]{12,16}";// 定义匹配的字段String emailStr = "146456416@qq.com";// 定义一个字段用于测试find方法String line = "454156135dada ...";String pattern = "(d+)([a-z]+)(s)(.*)";//定义一个字段用于测试start_end方法String test = "abcb";String testStr = "abc dada abc dad abc ad";// 定义一个字段用于测试replace方法String replace = "a*b";// 定义一个匹配的字段String replaceStr1 = "aabdadasabdadabbadadaabda";System.out.println("用户名:" + judge(regex, str));System.out.println("密    码:" + judge(password, passwordStr));System.out.println("邮    箱:" + judge(email, emailStr));find(pattern, line);start_end(test, testStr);replace(replace,replaceStr1);}// 定义一个方法,判断字符串是否合法public static boolean judge(String regex, String str) {Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);return m.matches();}// 定义一个方法,获取字符串的分割点public static void find(String regex, String str) {Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);if (m.find()) {System.out.println("value1" + ":" + m.group(0));System.out.println("value2" + ":" + m.group(1));System.out.println("value3" + ":" + m.group(2));System.out.println("value4" + ":" + m.group(3));System.out.println("value5" + ":" + m.group(4));}}// 定义一个方法,获取每个分割点的坐标public static void start_end(String regex , String str){Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);while(m.find()){count++;System.out.println("第"+ count +"次循环");System.out.println("start:" + m.start());System.out.println("end:" + m.end());}}// 定义一个方法,用特定的字段取代匹配的字段public static void replace(String regex , String str){Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);StringBuffer sb = new StringBuffer(); while(m.find()){m.appendReplacement(sb, replaceStr);}m.appendTail(sb);System.out.println("sb:" + sb);}}

演示

本期内容到此结束,我们下期不见不散!

本文由IT萌娃原创,欢迎关注,带你一起长知识!

java邮箱正则表达式_Java正则表达式详解相关推荐

  1. 泛型java 代码讲解_Java泛型详解

    2516326-5475e88a458a09e4.png 一,打破砂锅问到底 泛型存在的意义? 泛型类,泛型接口,泛型方法如何定义? 如何限定类型变量? 泛型中使用的约束和局限性有哪些? 泛型类型的继 ...

  2. java method 注解_JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...

  3. java泛型 初始化_Java泛型详解

    概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有 ...

  4. java递归函数例子_Java递归函数详解附案例

    递归函数在Java语言中得到了广泛的应用,它使得程序的编写过程更加的清晰明了.对Java初学者来讲,递归函数是需要学习的一个重要知识点.本文将附上案例和演示代码,具体为大家介绍递归函数的概念.要素以及 ...

  5. java iterator对象_JAVA Iterator 详解 代码

    Iterator接口 1.所有实现了Collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象 2.Iterator对象称为迭代器,用以方便的操作实现对象 ...

  6. java 函数内部类_java 内部类详解 转

    classOuter {classInner { } } (二) 内部类的访问规则 ​ A:可以直接访问外部类的成员,包括私有 ​ B:外部类要想访问内部类成员,必须创建对象 (三) 内部类的分类 ​ ...

  7. Java注解库_Java 注解详解

    本文部分摘自 On Java 8 基本语法 注解是 Java 5 所引入的众多语言变化之一,是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影 ...

  8. java打包维护_java打包详解

    from yahh2008的blog:  http://www.matrix.org.cn/blog/yahh2008/ 兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java ...

  9. java threadsafe 注解_Java 注解详解

    什么是注解 Annotation 中文译过来就是注解.标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解.而新手很难理解的主要原因是一些技术文档里的专业术语和名词不太 ...

  10. java内部类选择题_java内部类详解(附相关面试题)

    说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟. 一.内 ...

最新文章

  1. php从ftp下载文件到本地,php使用ftp实现文件上传与下载功能
  2. 支付宝支付 订单参数异常,请重新下单后再发起付款
  3. python求回文_python实现求最长回文子串长度
  4. pyqt打包成linux可执行程序,PyQtopencv图像处理(5):python程序打包成可执行文件...
  5. MQTT工作笔记0010---订阅主题和订阅确认2
  6. Navicat连接MySQL8.0版本时出现Client does not support authentication protocol requested by server;报错的问题解决办法
  7. 20行代码实现网页图片抓取。(待完善
  8. 程序员需要学些什么?程序员好考吗?
  9. 阿里云落地全球最大云原生实践:双11核心系统全面云原生化
  10. uibot中级认证试题_喜大普奔丨UiBot中级认证工程师考试上线啦!
  11. 搅动PC市场风云,荣耀何以成为破局者?
  12. ADS(Advanced Design system)原理图结合板层结构仿真(MSub)及版图仿真(EM Simulation)
  13. 手游渠道SDK建议标准
  14. iOS16.0:屏幕旋转
  15. 人工智能与具体应用领域如何进行有效的结合
  16. Pyspark回归--IsotonicRegression
  17. jquery.easyui.min.js引导文件
  18. mysql重复数据只取一条数据_sql不重复的查找统计数据(经典)
  19. 软件测试软件测试工程师
  20. Plickers——教师拿手机、学生拿卡片,就可以完成即时全员互动!

热门文章

  1. fedora yum无法正常运行问题的解决
  2. 昨晚调试一段PHP程序时遇到的三个问题
  3. css hack 记录
  4. 电脑桌面出现透明条图标“复制”“刷新”解决方法
  5. win 7系统连接WIFI
  6. Nginx 限制某 IP 在一段时间内对服务器发起请求的连接数
  7. 【PostgreSQL-9.3.17】CentOS-6.7安装PostgreSQL-9.3.17
  8. 解决误删/bin/bash问题
  9. 安装mysql数据库及问题解决方法
  10. ORA-01034:ORACLE not available问题的解决方法