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

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日

相关文章

  • 前台js对象在后台转化java对象的问题探讨

    前台js对象在后台转化java对象的问题探讨 当我们使用前后端分离的架构时,前台js对象与后台java对象之间需要进行转化。在这个过程中会遇到一些问题,如何解决这些问题呢?下面就来探讨一下这个问题。 第一步:前台js对象转化为后台json对象 前台js对象可以通过JSON.stringify()方法转化为json对象,具体操作如下: var jsObject…

    Java 2023年5月26日
    00
  • mysql+spring+mybatis实现数据库读写分离的代码配置

    MySQL数据库读写分离是提高Web应用性能和可用性的重要手段之一。开发人员可以通过使用JDBC、Spring和MyBatis等技术实现MySQL数据库读写分离。 以下是实现数据库读写分离的完整攻略: 1. 安装和配置MySQL主从服务器 确保安装和配置了MySQL主从服务器,并确保主服务器和从服务器之间已正确配置了“主从同步”。可以考虑使用软件程序如MyS…

    Java 2023年6月1日
    00
  • RHEL5 Apache+Tomcat整合,同时支持jsp与php

    RHEL5 Apache+Tomcat整合,同时支持jsp与php 在Linux系统中,我们常常需要将Apache和Tomcat进行整合,同时支持jsp和php的运行。本文将提供一份完整的攻略来实现这一目的。以下是整合的具体步骤: 步骤一:配置Apache的mod_jk模块 首先,我们需要在Linux系统中安装Apache及其模块。使用yum工具即可完成,详…

    Java 2023年5月19日
    00
  • Jsp中request的3个基础实践

    JSP中的request对象是Web开发的一个重要组成部分,它用于在不同的Web组件之间传递数据。下面是request对象在JSP中的3个基础实践的完整攻略: 1. 在JSP页面中获取request对象 在许多情况下,我们需要在JSP页面中获取request对象。要实现这一点,我们可以使用Java中的“内置对象”- request。request作为内置对象…

    Java 2023年6月15日
    00
  • 一篇文章带你了解Java SpringBoot四大核心组件

    一篇文章带你了解Java Spring Boot四大核心组件 Java Spring Boot 是一款快速开发 Web 应用的框架,它提供了很多优秀的解决方案以方便我们快速构建一个可部署、高可扩展、易于维护的应用程序。在 Spring Boot 之中,有四大核心组件,它们是 Spring MVC、Spring Data JPA、Spring Security…

    Java 2023年5月15日
    00
  • java字符串中常用的十个方法总结

    Java字符串中常用的十个方法总结 Java字符串是非常常用的一种数据类型,本文将总结Java字符串中常用的十个方法,以帮助初学者更好地掌握Java字符串的使用。 1. charAt(int index) 该方法返回指定索引处的字符,索引从0开始计数。 示例: String str = "Hello, World!"; char firs…

    Java 2023年5月26日
    00
  • SpringBoot一个非常蛋疼的无法启动的问题解决

    在使用Spring Boot开发应用程序时,有时会遇到无法启动的问题。以下是解决Spring Boot无法启动的一些常见问题和解决方法: 1. 端口被占用 问题描述 在启动Spring Boot应用程序时,可能会遇到以下错误: java.net.BindException: Address already in use: bind 解决方法 这个错误通常是由…

    Java 2023年5月14日
    00
  • 如何使用​win10内置的linux系统启动spring-boot项目

    下面是如何使用Win10内置的Linux系统启动spring-boot项目的完整攻略。 安装WSL WSL(Windows Subsystem for Linux)是Win10内置的Linux子系统,可在其上运行各种Linux发行版。要使用WSL启动spring-boot项目,首先需要安装WSL: 打开”控制面板”,进入”程序与功能”,选择左侧的”启用或关闭…

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