【Java学习笔记】正则表达式

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.简介: 正则表达式是Java 处理字符串、文本的重要工具。 java.util.regex.Pattern   匹配类:用模式匹配一个字符串所表达的抽象结果。

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

1.简介:

正则表达式是Java 处理字符串、文本的重要工具。

java.util.regex.Pattern   匹配类:用模式匹配一个字符串所表达的抽象结果。

java.util.regex.Matcher   模式类:用来表示一个编译过的正则表达式。

 


2.例子

import java.util.regex.Pattern;

public class RegexDemo1 {
    public static void main(String arg[]) {
        String expr;
        String str;

        expr = "p.t";
        str = "pot";
        boolean b = Pattern.matches(expr,str);//静态方法,直接调用
        if(b)
            System.out.println(str + " matches pattern " + expr);
        else
            System.out.println(str + " does not match pattern " + expr);
    }
}

 

但是这个例子中的expr每次都要进行编译才能进行匹配,而下面的例子则不需要。

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexDemo2 {
    public static void main(String arg[]) {
        String expr;
        String str;

        expr = "p//wt";//在Java语言中,//表示要插入正则表达式的反斜线,且后面的字符有特殊意义。
/w 单词字符 
        str = "pot";
        Pattern pattern = Pattern.compile(expr);
        Matcher matcher = pattern.matcher(str);
        if(matcher.matches())
            System.out.println(str + " matches pattern " + expr);
        else
            System.out.println(str + " does not match pattern " + expr);
    }
}

 

以上这个例子中的pattern就可以重用了,比如:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexDemo3 {
    public static void main(String arg[]) {
        String expr;

        expr = "p[aeiou]t";
        Pattern pattern = Pattern.compile(expr);
        for(int i=0; i<arg.length; i++) {
            Matcher matcher = pattern.matcher(arg[i]);
            if(matcher.matches())
                System.out.println(arg[i] + " matches pattern " + expr);
            else
                System.out.println(arg[i] + " does not match pattern " + expr);
        }
    }
}

 

查找在一个段落中的匹配地:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexDemo4 {
    public static void main(String arg[]) {
        String expr;
        String str;

        expr = "bark";
        str = "This is a larger block of text the pattern matcher " +
              "will search for the word bark. The pattern is very " +
              "simple. It will only match the word bark, and nothing " +
              "else. You can search a block of text for any of the " +
              "regular expression patterns--not just bark.";
        Pattern pattern = Pattern.compile(expr);
        Matcher matcher = pattern.matcher(str);
        boolean found = matcher.find();
        while(found) {
            int location = matcher.start();
            System.out.println(expr + " found at " + location);
            found = matcher.find(location+1);
       }
    }
}
=================

综合例子:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

/** 
* 正则表达式例子 

* @author leizhimin 2009-7-17 9:02:53 
*/ 
public class TestRegx { 
        public static void main(String[] args) { 
                Pattern p = Pattern.compile("f(.+?)k"); 
                Matcher m = p.matcher("fckfkkfkf"); 
                while (m.find()) { 
                        String s0 = m.group(); 
                        String s1 = m.group(1); 
                        System.out.println(s0 + "||" + s1); 
                } 
                System.out.println("---------"); 
                m.reset("fucking!"); 
                while (m.find()) { 
                        System.out.println(m.group()); 
                } 

                Pattern p1 = Pattern.compile("f(.+?)i(.+?)h"); 
                Matcher m1 = p1.matcher("finishabigfishfrish"); 
                while (m1.find()) { 
                        String s0 = m1.group(); 
                        String s1 = m1.group(1); 
                        String s2 = m1.group(2); 
                        System.out.println(s0 + "||" + s1 + "||" + s2); 
                } 

                System.out.println("---------"); 
                Pattern p3 = Pattern.compile("(19|20)//d//d([- /.])(0[1-9]|1[012])//2(0[1-9]|[12][0-9]|3[01])"); 
                Matcher m3 = p3.matcher("1900-01-01 2007/08/13 1900.01.01 1900 01 01 1900-01.01 1900 13 01 1900 02 31"); 
                while (m3.find()) { 
                        System.out.println(m3.group()); 
                } 
        } 
}
 
输出结果:
fck||c 
fkk||k 
--------- 
fuck 
finish||in||s 
fishfrish||ishfr||s 
--------- 
1900-01-01 
2007/08/13 
1900.01.01 
1900 01 01 
1900 02 31 

Process finished with exit code 0

 

作者: gnuhpc
出处: http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
28天前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
97 5
|
4月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
66 13
|
4月前
|
开发框架 Java 开发工具
【Java全栈学习笔记-U1-day01】Java介绍
本笔记整理了Java学习的基础内容,涵盖程序理解、Java语言特性、JDK安装与配置、Java程序开发工具及编写步骤。重点介绍了Java程序的基本结构、编译和运行过程,以及输出语句的使用。通过实例演示了IDEA创建Java程序的方法,并强调了编码规范和注意事项。适合初学者复习和交流学习。 主要内容: 1. 理解程序:计算机组成、程序定义。 2. 简介:Java语言特点、技术平台、JDK作用。 3. 编写Java程序:编写、编译、运行步骤,基本结构。 4. 输出语句 5. DEA使用:新建工程、保存位置、文件介绍、新建类。 6. 扩展:注释、代码规范、大小写敏感、缩进等。
|
7月前
|
监控 Java Python
Java 中的正则表达式
正则表达式是Java中强大的文本处理工具,支持灵活的匹配、搜索、替换和验证功能。本文介绍了正则表达式的语法基础及其在Java中的应用,包括字符串匹配、替换、分割及实际场景中的邮箱验证和电话号码提取等示例。通过这些技术,可以显著提高文本处理的效率和准确性。
421 9
|
9月前
|
移动开发 Java Windows
Java 匹配\r 和 \n 的正则表达式如何编写
【10月更文挑战第19天】Java 匹配\r 和 \n 的正则表达式如何编写
558 3
|
10月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
10月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
8月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
163 0
|
10月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
9月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
100 0