java学习笔记——正则表达式

NO 方法名称 类型 描述
1 public boolean matches(String regex) 普通 正则验证使用
2
public String replaceAll(String regex,String replacement)

普通  全部替换
3
public String replaceFirst(String regex,String replacement)

普通 替换首个
4 public String[] split(String regex) 普通 全部拆分
5
public String[] split(String regex,int limit)

普通 部分拆分

正则符号(所有的正则匹配符号否在Java.util.regex.Pattern;中提供):

1.表示单个字符(每出现一个表示一位):

  • x:表示由x组成;
  • \\:表示转移字符"\"
  • \t:表示制表符,\n表示换行

2.表示字符的选用范围(每出现一个表示一位):

  • [abc]:表示可能是a b c 中的任意一个(注意:只能匹配一个字符);
  • 1 public class demo1 {
    2
    3     public static void main(String[] args) {
    4         // TODO Auto-generated method stub
    5         String str="a";
    6         System.out.println(str.matches("[abc]"));
    7     }
    8
    9 }

  • public class demo1 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str="ab";
            System.out.println(str.matches("[abc][abc]"));
        }
    
    }

  • [^abc]:表示 任何字符,除了 a、b 或 c(否定)
  • [a-zA-Z]:a 到 z 或 A 到 Z,两头的字母包括在内(范围)
  • [0-9]:

3.简化表达式(每出现一个表示一位):

  • .:表示任意一位字符;
  • \d:表示任意一位数字,相当于[0--9];
  •     public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str="2";
            System.out.println(str.matches("\\d"));
        }
    }

  • \D:表示不是一个数字,相当于[^0--9];
  • \s:表示任意一位空格;
  • public class demo1 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str="\t";
            System.out.println(str.matches("\\s"));
        }
    }

  • \S:表示不是任意的一位空格;
  • \w:表示字母(包括大写或小写)  数字 下划线中的任意一位;

4.边界匹配:

  • ^:写在正则之前,表示正则开始;
  • $:写在正则最后,表示正则结束;

5.数字规范:

  • ?:表示正则规范只能出现0次或者1次;
  • public class demo1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str="";
            System.out.println(str.matches("\\d?"));
            String str1="22";
            System.out.println(str1.matches("\\d?"));
        }
    }

  • *:表示出现0次 1次 或者多次;
  • +:表示正则出现1次  或者多次;
  • {n}:表示此正则正好出现n次;
  • {n,}:表示此正则出现n次及n次以上;
  • {n,m}:表示此正则出现n~m次;

6.逻辑表达式:

  • 正则X正则Y:执行正则X后执行正则Y;
  • X|Y:满足正则X或者正则Y其中一个即可;
  • (正则):表示多个正则成为一组;

7.通过String类操作字符:

  • 如:只保留字母
  • 1 public class demo1 {
    2     public static void main(String[] args) {
    3         // TODO Auto-generated method stub
    4         String str="afajhj2313535{}]gaj>?‘;f‘afag;lag";
    5         String regex="[^a-zA-Z]";
    6         System.out.println(str.replaceAll(regex, ""));
    7     }
    8 }

  • 替换(利用split()函数)
  • public class demo1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str="a1b22c333d4444e55555f666666g";
            String regex="\\d+";
            String [] res=str.split(regex);
            for(int i=0;i<res.length;i++)
                System.out.println(res[i]);
        }
    }

  • 用户名有字母 数字 下划线表示并且有6~15个字符;
  • public class demo1 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String str="wangxiang_123*";
            String regex="\\w{6,15}";
            System.out.println(str.matches(regex));
            String regex1="(\\d|[a-zA-Z]|_|\\*){6,15}";
            System.out.println(str.matches(regex1));
        }
    }

  • 现在某学校的学生成绩那照"姓名:年龄:生日:成绩"格式,这样的数据可以出现多次并以|分隔, 如:ALLEN:19:1993-05-02:98.6|JUDY:21:2000-09-02:78|SARA:20:1994-08-21:97.5
  • 下面对各个判断进行拆分:
    • 名字:
    • String str="zhansan";
      String regex="[a-zA-Z]+";
    • 年龄:
    • String str="19";
      String regex="\\d{1,3}";
    • 生日:
    • String str="1993-09-02";
      String regex="\\d{4}-\\d{2}-\\d{2}";
    • 成绩:
    • String str="98.98";
      String regex="\\d{1,3}(\\.\\d{1,2})?";
    • 单个学生格式综合:
    • String str="ALLEN:19:1993-05-02:98.6";
      String regex="[a-zA-Z]+:\\d{1,3}:\\d{4}-\\d{2}-\\d{2}:\\d{1,3}(\\.\\d{1,2})?";
    • 整个判断:
    • public class demo1 {
          public static void main(String[] args) {
              // TODO Auto-generated method stub
              String str="ALLEN:19:1993-05-02:98.6|JUDY:21:2000-09-02:78|SARA:20:1994-08-21:97.5";
              String regex="([a-zA-Z]+:\\d{1,3}:\\d{4}-\\d{2}-\\d{2}:\\d{1,3}(\\.\\d{1,2})?\\|?)+";
              System.out.println(str.matches(regex));
          }
      }
时间: 2024-08-07 00:13:08

java学习笔记——正则表达式的相关文章

Java 学习笔记(2015.7.20~24)

Java 学习笔记(2015.7.20~24) Java Java 学习笔记(2015.7.20~24) 1.StringBuffer与StringBuilder的区别: 2.基本数据类型包装类 3.Date.Calendar.DateFormat等与时间相关的类 1.常用类String 2.正则表达式 3.常用类 StringBuffer 代表可变的字符序列 拆箱与装箱 包装类的应用 匿名内部类 数组 day11 day12 day13 day14 day11 父类中使用public定义的方法

【Java学习笔记】几个实用类

作者:gnuhpc     出处:http://www.cnblogs.com/gnuhpc/ 1.File类为管理文件和目录提供了方法,其对象表示一个文件或者目录.它提供了若干方法对文件或文件夹进行操作.其中的list()方法和listFiles()方法可以起到定位特定文件的作用. 2.Object类,是所有Java类的祖先,若一个类声明时没有包含extends关键字,则其直接继承于Objetc类.其中有许多重要方法: equals(),notify(),notifyAll(),wait(),

Java学习笔记_19_String类

19.String类: 1>String类的构造方法: · 利用字符串构造一个字符串对象: String str = "HelloWorld": · 无参构造一个字符串对象: String str = new String(); · 传递参数生成一个字符串对象: String str = new String("HelloWorld"); · 由字符数组生成一个字符串对象: String str = new String(char s[ ]); · 由字符数组

Java学习笔记3-操作符

Java基本操作符:+.-.*./.%.=.==.!=.+=.-=. 优先级:先乘除后加减,如果是连接符+号会优先往前匹配,比如 a+++++b,会被解释称 a++ ++ +b,所以会报错,需要自行使用括号隔离为 (a++) + (++b). 对象的引用如果赋值给了对象的引用后,2 个对象将指向同一个引用,有一个对象的引用重新赋值后将同时影响到另一个对象,比如 ClassName classA = new ClassName(); ClassName classB = new ClassName

java学习笔记10--泛型总结

java学习笔记系列: java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note10.html,转载

Java学习笔记_25_Collections类

25.Collections类: Collections类是一个工具类,用来对集合进行操作,它主要是提供一些排序算法,包括随机排序.反相排序等. Collections类提供了一些静态方法,实现了基于List容器的一些常用算法. Collections的一些方法列表: · void sort(List): 对List内的元素进行排序. · void shuffle(List): 对List内的元素随机排序. · void reverse(List): 对List内的元素进行逆序排列. · voi

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

java学习笔记8--接口总结

接着前面的学习: java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note8.html,转载请注明源地址. 生活中的接口: 什么是接口? 一个Java接口是一些方法特

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my