java学习笔记06--正则表达式

正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证、拆分、替换等操作。

例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法

不使用正则表达式

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "0123456789";
  4. boolean flag = true;   //定义一个标记变量
  5. char c[] = str.toCharArray();
  6. for (int i = 0; i < c.length; i++) {
  7. if(c[i]<‘0‘||c[i]>‘9‘){
  8. flag = false;
  9. break;
  10. }
  11. }
  12. if(flag){
  13. System.out.println("是全部由数字组成");
  14. }else{
  15. System.out.println("不是全部由数字组成");
  16. }
  17. }
  18. }

使用正则表达式

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "0123456789";
  4. if(Pattern.compile("[0-9]+").matcher(str).matches()){
  5. System.out.println("是全部由数字组成");
  6. }else{
  7. System.out.println("不是全部由数字组成");
  8. }
  9. }
  10. }

Pattern、Matcher类

这两个类为正则的核心操作类。这两个类都定义在java.util.regex包中.

Pattern类的主要作用是进行正则规范(如之前的“【0-9】”就属于正则规范)的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。

\d:表示数字,【0-9】

\D:表示非数字,【^0-9】

\w:表示字母、数字、下划线,【a-zA-Z0-9】

\W:【^a-zA-Z0-9】

以上的正则,如果要想驱动起来,则必须依靠Pattern类和Matcher类

Pattern主要是表示一个规则的意思,即:正则表达式的规则需要在Pattern类中使用。

Matcher类主要表示使用Pattern指定好的验证规则。

在Pattern类中如果要想取得Pattern类实例,则必须调用compile()方法。

例:验证一个字符串是否是合法的日期格式。

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "1990-04-13";
  4. String pattern = "\\d{4}-\\d{2}-\\d{2}";
  5. Pattern p = Pattern.compile(pattern);   //实例化Pattern类
  6. Matcher m = p.matcher(str);             //实例化Matcher类
  7. if(m.matches()){
  8. System.out.println("是合法日期格式");
  9. }else{
  10. System.out.println("不是合法日期格式");
  11. }
  12. }
  13. }

在Pattern类中也可以使用正则进行字符串的拆分功能。

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "AAA000BBB111CCC";
  4. String pattern = "\\d+";
  5. Pattern p = Pattern.compile(pattern);
  6. String s[] = p.split(str);
  7. for (int i = 0; i < s.length; i++) {
  8. System.out.println(s[i]);
  9. }
  10. }
  11. }

还可以使用Matcher类中的字符串替换功能。

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. String str = "AAA000BBB111CCC";
  4. String pattern = "\\d+";
  5. Pattern p = Pattern.compile(pattern);
  6. Matcher m = p.matcher(str);
  7. String s = m.replaceAll("---");
  8. System.out.println(s);   //AAA---BBB---CCC
  9. }
  10. }

String类对正则的支持

从之前的操作中,可以返现,很多的代码除了要求的字符串不同,使用的正则规则不同,基本上就没有什么特别的了。

所以在JDK1.4之后,java对正则进行了一些扩充,在String中开始直接支持正则的操作。

[java] view plaincopy

  1. public class T {
  2. public static void main(String[] args) {
  3. String str1 = "AAA000BBB";
  4. String str2 ="1990-04-13";
  5. String str3 = "i_love_you";
  6. System.out.println("字符串替换:"+str1.replaceAll("\\d+", "---"));
  7. System.out.println("字符串验证:"+str2.matches("\\d{4}-\\d{2}-\\d{2}"));
  8. String s[] = str3.split("_");
  9. System.out.println("字符串拆分:");
  10. for(int i=0;i<s.length;i++){
  11. System.out.println(s[i]);
  12. }
  13. }
  14. }

总结:

1、使用正则可以方便的完成字符串的验证、拆分、替换等复杂功能。

2、在开发中一般都会直接使用String类中提供好的正则支持,而往往很少直接使用Pattern类或Matcher类。

3、在一些正则应用的时候,对于一些敏感的字符要进行转义操作。

时间: 2024-12-26 14:12:49

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

java学习笔记-4 正则表达式

1.-?\\d+  一个或者没有减号,之后跟若干数字: 2.(-|\\+)?\\d+  一个减号或者一个加号或者都没有,之后跟若干数字: 3.\\W+  一个或者多个非单词字符: 4.\\w+  一个或者多个单词字符: 5.(abc)+  一个或者多个abc; 6.abc+  ab后跟一个或者多个c: 7.(abc){2,} abc连续出现至少2次: 8.(abc){2} abc出现恰好2次: 9.(abc){2,5} abc出现至少两次,最多5次: 10.\\s+ 一个或多个空白符 11.Pa

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[ ]); · 由字符数组

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

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接口是一些方法特