Java正则表达式的基本用法和实例大全

yizhihongxing

Java正则表达式的基本用法和实例大全

正则表达式是一种强大的文本匹配工具,Java的java.util.regex包提供了对正则表达式的支持。本文将详细介绍Java正则表达式的基本用法和实例大全。

基本用法

常用的正则表达式元字符

正则表达式元字符指代特殊的字符集,用于表示某种类别的字符。以下是常用的正则表达式元字符。

  • .:表示任意单个字符。
  • *:表示前面的字符出现0次或多次。
  • +:表示前面的字符出现1次或多次。
  • ?:表示前面的字符出现0次或1次。
  • []:表示括号内的任意单个字符。
  • |:表示“或”关系。
  • ():表示分组。
  • ^:表示匹配行首。
  • $:表示匹配行尾。
  • \:表示转义字符。

Java正则表达式类

Java提供了几个类来支持正则表达式的匹配。

  • Pattern:正则表达式的编译表示。
  • Matcher:正则表达式的匹配结果。
  • PatternSyntaxException:正则表达式语法错误的异常。

正则表达式匹配步骤

使用Java正则表达式进行匹配的步骤包括:

  1. 编译正则表达式。
  2. 创建匹配器对象。
  3. 进行匹配。

以下是示例代码:

String regex = "ab.*cd"; // 正则表达式
String input = "abccccd"; // 待匹配的文本

// 步骤1:编译正则表达式
Pattern pattern = Pattern.compile(regex);

// 步骤2:创建匹配器对象
Matcher matcher = pattern.matcher(input);

// 步骤3:进行匹配
boolean isMatched = matcher.find(); // 判断是否匹配成功

实例大全

以下是Java正则表达式的实例大全。

匹配任意单个字符

.表示匹配任意单个字符,如下面代码匹配"a"和"b"之间的任意单个字符。

String regex = "a.b";
String input1 = "acb";
String input2 = "a#b";

Pattern pattern = Pattern.compile(regex);

Matcher matcher1 = pattern.matcher(input1);
boolean isMatched1 = matcher1.find(); // true

Matcher matcher2 = pattern.matcher(input2);
boolean isMatched2 = matcher2.find(); // true

匹配多个字符

以下是示例代码:

  • ab*:表示匹配"ab"后跟0个或多个"b"。
  • ab+:表示匹配"ab"后跟1个或多个"b"。
  • ab?:表示匹配"ab"后跟0个或1个"b"。
String regex1 = "ab*";
String regex2 = "ab+";
String regex3 = "ab?";

String input1 = "ab";
String input2 = "abb";
String input3 = "a";

Pattern pattern1 = Pattern.compile(regex1);
Matcher matcher1 = pattern1.matcher(input1);
boolean isMatched1 = matcher1.find(); // true

Pattern pattern2 = Pattern.compile(regex2);
Matcher matcher2 = pattern2.matcher(input2);
boolean isMatched2 = matcher2.find(); // true

Pattern pattern3 = Pattern.compile(regex3);
Matcher matcher3 = pattern3.matcher(input3);
boolean isMatched3 = matcher3.find(); // true

匹配字符集

使用[]匹配括号内的任意单个字符,如下面匹配"a"、"b"或者"m"、"n"或者任意数字。

String regex = "[ab]";
String input1 = "a";
String input2 = "b";
String input3 = "mn";
String input4 = "9";

Pattern pattern = Pattern.compile(regex);

Matcher matcher1 = pattern.matcher(input1);
boolean isMatched1 = matcher1.find(); // true

Matcher matcher2 = pattern.matcher(input2);
boolean isMatched2 = matcher2.find(); // true

Matcher matcher3 = pattern.matcher(input3);
boolean isMatched3 = matcher3.find(); // false

Matcher matcher4 = pattern.matcher(input4);
boolean isMatched4 = matcher4.find(); // false

匹配行首和行尾

使用^匹配行首,使用$匹配行尾。以下示例代码分别匹配以"a"开头的字符串和以"b"结尾的字符串。

String regex1 = "^a.*";
String regex2 = ".*b$";

String input1 = "abc";
String input2 = "cdab";
String input3 = "debf";

Pattern pattern1 = Pattern.compile(regex1);

Matcher matcher1 = pattern1.matcher(input1);
boolean isMatched1 = matcher1.find(); // true

Matcher matcher2 = pattern1.matcher(input2);
boolean isMatched2 = matcher2.find(); // false

Pattern pattern2 = Pattern.compile(regex2);

Matcher matcher3 = pattern2.matcher(input1);
boolean isMatched3 = matcher3.find(); // false

Matcher matcher4 = pattern2.matcher(input3);
boolean isMatched4 = matcher4.find(); // true

分组匹配

使用圆括号()将正则表达式分组,通过分组可以方便地对表达式进行复用、优先级调整等操作。以下是示例代码,分别匹配"a"、"aa"和"aaa"等多种数量的"a"。

String regex1 = "(a)+";
String regex2 = "a+";
String regex3 = "(a){1,3}";

String input1 = "a";
String input2 = "aa";
String input3 = "aaa";

Pattern pattern1 = Pattern.compile(regex1);
Matcher matcher1 = pattern1.matcher(input1);
boolean isMatched1 = matcher1.find(); // true

Matcher matcher2 = pattern1.matcher(input2);
boolean isMatched2 = matcher2.find(); // true

Matcher matcher3 = pattern1.matcher(input3);
boolean isMatched3 = matcher3.find(); // true

Pattern pattern2 = Pattern.compile(regex2);
Matcher matcher4 = pattern2.matcher(input1);
boolean isMatched4 = matcher4.find(); // true

Matcher matcher5 = pattern2.matcher(input2);
boolean isMatched5 = matcher5.find(); // true

Matcher matcher6 = pattern2.matcher(input3);
boolean isMatched6 = matcher6.find(); // true

Pattern pattern3 = Pattern.compile(regex3);
Matcher matcher7 = pattern3.matcher(input1);
boolean isMatched7 = matcher7.find(); // true

Matcher matcher8 = pattern3.matcher(input2);
boolean isMatched8 = matcher8.find(); // true

Matcher matcher9 = pattern3.matcher(input3);
boolean isMatched9 = matcher9.find(); // true

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java正则表达式的基本用法和实例大全 - Python技术站

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

相关文章

  • Java基础教程之组合(composition)

    Java基础教程之组合(Composition) 在Java中,组合是一种重要的关系类型。它允许我们在一个类中使用其他类的实例,从而简化代码并提高代码的可重用性。本文将详细介绍组合的概念及其在Java编程中的应用。 什么是组合 组合指的是一个类使用另外一个类的实例作为自己的一个字段,这个字段可以是一个单独的对象也可以是一个对象数组。组合的关系可以用一个UML…

    Java 2023年5月23日
    00
  • Java异常处理中的try-with-resources语句的作用是什么?

    Java中的异常处理是一门非常重要的技术,可以使程序在面对问题时,不至于直接崩溃而不能继续执行。一种常见的Java异常处理语句就是try-catch语句,它能够捕获代码块中的异常并进行处理。在Java 7中,又引入了try-with-resources语句,它是一个功能强大、易于使用的语言结构,广泛用于异常处理中。 try-with-resources语句可…

    Java 2023年4月27日
    00
  • Spring整合Dubbo框架过程及原理解析

    下面是关于“Spring整合Dubbo框架过程及原理解析”的完整攻略: 1. Dubbo框架简介 Dubbo是一款开源的、高性能的Java RPC框架。Dubbo提供了完整的服务治理方案,包括服务注册与发现、服务路由、负载均衡、容错机制等。Dubbo的核心是基于高效的序列化与网络通信框架实现的高性能远程过程调用(RPC)。 2. Spring整合Dubbo …

    Java 2023年5月19日
    00
  • Java面试题冲刺第四天–数据库

    Java面试题冲刺第四天–数据库攻略 数据库是Java开发中非常重要的一部分,因此数据库相关的面试题也是面试中的重点部分。下面将从数据库的知识点、常见面试题以及解答方法等方面进行介绍。 一、数据库的知识点 数据库的分类:关系型数据库(RDBMS)和非关系型数据库(NoSQL)。 常用的关系型数据库:MySQL、Oracle、SQL Server等。 常用的…

    Java 2023年5月19日
    00
  • SpringBoot自定义Starter与自动配置实现方法详解

    SpringBoot自定义Starter与自动配置实现方法详解 什么是SpringBoot Starter SpringBoot Starter是一种用于扩展SpringBoot框架功能的一种技术手段,它可以将应用程序中涉及到的依赖库集成到SpringBoot环境中,使得应用程序更加简单、灵活且易于扩展。 Starter的实现过程主要有自定义Starter和…

    Java 2023年5月20日
    00
  • java实现留言板功能实例

    Java实现留言板功能实例 在Java Web开发中,留言板是一个常见的功能。本文将介绍如何使用Java实现留言板功能。 准备工作 首先要准备的是Java Web开发的基础知识,包括Java Servlet、JSP、HTML、CSS和数据库MySQL的使用。 创建数据库 使用MySQL创建一个名为“message_board”的数据库,其中包含一个名为“me…

    Java 2023年6月15日
    00
  • 什么是Java字节码增强?

    Java字节码增强是指在不改变Java源代码的情况下,通过修改字节码文件的方式来增强Java程序的功能。这种方式比直接修改源代码更加灵活,可以在运行时动态改变程序的行为。常见的Java字节码增强工具有:AspectJ、CGLib、Javassist等。 下面,我们来介绍一下如何使用字节码增强工具。 1. 安装字节码增强工具 首先,需要安装相应的字节码增强工具…

    Java 2023年5月11日
    00
  • Gradle学习教程之部署上传项目详解

    Gradle学习教程之部署上传项目详解 Gradle是一种流行的构建工具,其中包括了部署上传项目的功能。本文将为您详细介绍如何使用Gradle来部署上传项目。 准备工作 在使用Gradle部署上传项目之前,需要完成以下准备工作: 安装JDK,建议使用JDK 8或更高版本。 安装Gradle,可以从官方网站下载安装包。 确定要部署上传的项目路径。 编写Grad…

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