Java正则表达式学习教程

Java正则表达式学习教程

什么是正则表达式?

正则表达式(Regular Expression),通常简写为“regex”或“regexp”,是一种由字符和特殊符号组成的字符串模式,用于匹配和操作文本。可以用于搜索、替换和筛选文本数据,常用于文本处理、数据抽取、文本匹配及文本分割等场景。

Java中的正则表达式

Java中的正则表达式通常使用java.util.regex包中的类进行操作。常用的类包括:

  • Pattern(模式):表示正则表达式的编译后的对象,用于执行正则表达式操作。
  • Matcher(匹配器):用于对输入字符串及其子字符串应用正则表达式并作出匹配结果的引擎。
  • PatternSyntaxException(模式语法异常):在正则表达式模式中发现语法错误时抛出。

基本正则表达式语法

字符匹配

  • 字面值字符:匹配指定的字符,例如hello可以匹配hello
  • 字符组:匹配指定范围内的任意一个字符,例如[abc]可以匹配abc
  • 反义字符组:匹配不在指定范围内的任意一个字符,例如[^abc]可以匹配除abc之外的任意一个字符。
  • 字符范围:匹配指定范围内的任意一个字符,例如[a-z]可以匹配任意一个小写字母。
  • 转义字符:用于匹配一些特殊字符,例如\w可匹配任意一个字母、数字或下划线。

量词

  • n+:匹配至少出现n次以上的字符或字符组,例如a+可以匹配1个或多个a。
  • n*:匹配0个或多个出现n的字符或字符组,例如a*可以匹配0个或任意多个a。
  • n?:匹配0个或1个出现n的字符或字符组,例如a?可以匹配0个或1个a。
  • n{m,n}:匹配出现m次到n次的字符或字符组,例如a{2,4}可以匹配2个到4个a。

边界匹配

  • ^:匹配输入的开始位置。
  • $:匹配输入的结束位置。
  • \b:匹配一个单词的边界,例如\bthe\b可以匹配“the”,但不匹配“then”、“there”等。

示例说明

示例一

要求:匹配输入字符串中所有的数字。

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

public class RegexDemo {
    public static void main(String[] args) {
        // 定义正则表达式
        String regex = "\\d+";
        // 定义输入字符串
        String input = "abc123def4567";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        // 创建Matcher对象并匹配输入字符串
        Matcher matcher = pattern.matcher(input);
        // 遍历所有匹配结果并输出
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

输出结果为:

123
4567

解释:由于正则表达式\d+代表匹配一个或多个数字,因此该程序可以匹配输入字符串中所有的数字。

示例二

要求:匹配输入字符串中所有以“the”开头、以“end”结尾的单词。

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

public class RegexDemo {
    public static void main(String[] args) {
        // 定义正则表达式
        String regex = "\\bthe\\w*end\\b";
        // 定义输入字符串
        String input = "thequickendjumpsoverthelazydog";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regex);
        // 创建Matcher对象并匹配输入字符串
        Matcher matcher = pattern.matcher(input);
        // 遍历所有匹配结果并输出
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

输出结果为:

thequickend

解释:由于正则表达式\bthe\w*end\b代表匹配所有以“the”开头、以“end”结尾的单词,因此该程序可以匹配输入字符串中的“thequickend”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java正则表达式学习教程 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • SpringBoot集成Kafka 配置工具类的详细代码

    下面我来详细讲解SpringBoot集成Kafka配置工具类的详细代码。 1. 配置maven依赖 首先,我们需要在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kaf…

    Java 2023年6月2日
    00
  • Java 11/JDK 11正式发布 支持期限至2026年9月(附下载)

    Java 11/JDK 11正式发布 支持期限至2026年9月(附下载)攻略 什么是Java 11/JDK 11? Java 11,也称作JDK 11 (Java Development Kit 11),是由Oracle公司于2018年9月发布的Java版本之一。JDK是一个开发环境,其中包含了Java编译器和运行时环境,可以用于开发、编译、运行Java程序…

    Java 2023年5月19日
    00
  • Java Spring框架的注解式开发你了解吗

    Java Spring框架的注解式开发,是一种基于注解的Java web开发方式。相较于传统的XML配置方式,注解式开发更加简洁、易于理解和维护。下面,将从注解、Spring框架注解、实例示范和常见问题四个方面,为大家详细讲解Java Spring框架的注解式开发攻略。 注解 注解是Java8中最重要的新特性之一,也是Java Spring框架的核心元素之一…

    Java 2023年6月2日
    00
  • 使用SpringJPA 直接实现count(*)

    当我们使用Spring JPA操作数据库时,经常需要统计某张表中的记录数。如果使用传统的方式,则需要编写SQL语句来进行统计,非常麻烦。而基于Spring Data JPA的特性,我们可以直接使用JPA的方法来实现统计。 我们可以通过继承JpaRepository接口来实现统计。例如下面的代码: public interface UserRepository…

    Java 2023年5月20日
    00
  • 深度优先与广度优先Java实现代码示例

    下面我来详细讲解一下“深度优先与广度优先Java实现代码示例”的攻略。 一、深度优先搜索 1. 简介 深度优先搜索(DFS)是一种经典的搜索方法,其基本思想是从一个起始状态开始,尽可能地遍历尽每一个可能到达的状态,直到搜索完所有的状态或者找到了一个目标状态。 2. 实现代码示例 下面是一个简单的深度优先搜索的Java实现代码示例: public void d…

    Java 2023年5月19日
    00
  • java实现可视化日历

    下面是java实现可视化日历的完整攻略。 1.获取用户输入的年份和月份 在程序中,需要获取用户输入的年份和月份,才能正确地生成日历。可以通过Scanner类实现从控制台读取用户输入,示例代码如下: import java.util.Scanner; public class CalendarGenerator { public static void mai…

    Java 2023年5月20日
    00
  • Tomcat中catalina.out 和 catalina.log的区别和用途详解

    Tomcat是一个基于Java的开源Web服务器,它是一种轻量级应用服务器,功能强大,广泛应用于Web应用程序的开发和部署。Tomcat中的catalina.out和catalina.log是服务器日志文件,这两个文件虽然非常重要,但作用有一些差别。 catalina.out catalina.out是Tomcat的标准输出文件,它记录了Tomcat启动、停…

    Java 2023年5月19日
    00
  • java导出dbf文件生僻汉字处理方式

    下面是java导出dbf文件生僻汉字处理方式的完整攻略。 总体思路 在java中,如果需要导出dbf文件中含有生僻汉字,需要进行字符集的转换,防止乱码。具体步骤如下: 将生僻汉字以GBK编码存储到List或数组中。 将List或数组中的每个字符转换成Unicode编码,并转换成16进制格式的字符串,存储到新的List或数组中。 使用Apache POI相关类…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部