滚雪球学Java(21):Java正则表达式

简介: 【4月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!


前言

正则表达式是在字符串中进行模式匹配和查找的一种强有力的工具。在 Java 中,正则表达式是由 java.util.regex 包提供支持的。

本文将介绍 Java 中的正则表达式,并演示如何使用 Java 正则表达式。

摘要

本文将涵盖以下主题:

  • 正则表达式的语法
  • 如何在 Java 中编写正则表达式
  • 如何使用 Java 正则表达式
  • 常见的正则表达式用例

正则表达式的语法

正则表达式是一种特殊的字符串,它用于描述搜索模式。正则表达式由普通字符和元字符组成。

普通字符

普通字符是没有特殊意义的字符。例如,字符串 "hello" 匹配正则表达式 "hello"。

元字符

元字符是具有特殊意义的字符。它们用于表示特殊字符或字符类。下面是一些元字符的示例:

元字符 描述
. 匹配除行结束符以外的任意字符。
\d 匹配数字字符。等同于 [0-9]
\D 匹配非数字字符。等同于 [^0-9]
\w 匹配字母、数字和下划线。等同于 [a-zA-Z0-9_]
\W 匹配非字母、数字和下划线。等同于 [^a-zA-Z0-9_]
\s 匹配空格字符。等同于 [\n\t\f\r\p{Z}]
\S 匹配非空格字符。等同于 [^\n\t\f\r\p{Z}]
^ 匹配文本的开始位置。
$ 匹配文本的结束位置。
[ ] 匹配方括号内的任意字符。
[^ ] 匹配不在方括号内的任意字符。

在正则表达式中,元字符通常需要用反斜杠进行转义,以便表示为普通字符。例如,要匹配字符 ".",可以使用 "."。

限定符

限定符用于指定模式的数量。下面是一些常见的限定符:

限定符 描述
* 匹配零个或多个模式。
+ 匹配一个或多个模式。
? 匹配零个或一个模式。
{n} 匹配精确的 n 个模式。
{n,} 匹配至少 n 个模式。
{n,m} 匹配 n 到 m 个模式。

逻辑操作符

逻辑操作符用于将多个模式组合在一起。下面是一些常见的逻辑操作符:

操作符 描述
\ 逻辑或。匹配其中一个模式。
() 模式分组。

如何在 Java 中编写正则表达式

在 Java 中编写正则表达式时,需要使用双反斜杠进行转义。例如,要匹配字符 ".",可以使用 "\."。

Java 中的 Pattern 类表示一个正则表达式。要创建一个 Pattern 对象,只需调用 Pattern.compile() 方法并传递正则表达式字符串作为参数即可。

Pattern pattern = Pattern.compile("\\d+");

上面的代码将创建一个正则表达式,该正则表达式将匹配一个或多个数字字符。

如何使用 Java 正则表达式

在 Java 中,可以使用 Matcher 类执行正则表达式匹配。要创建一个 Matcher 对象,只需调用 Pattern.matcher() 方法并传递要进行匹配的字符串作为参数。

Matcher matcher = pattern.matcher("12345");

上面的代码将创建一个 Matcher 对象,该对象将尝试将正则表达式匹配到字符串 "12345"。

可以使用 Matcher 类中的 find() 方法查找下一个匹配项,并使用 group() 方法返回匹配项的字符串。

if (matcher.find()) {
   
    System.out.println(matcher.group());
}

上面的代码将输出字符串 "12345"。

常见的正则表达式用例

下面是一些常见的正则表达式用例:

邮箱地址

Pattern pattern = Pattern.compile("\\w+@\\w+\\.\\w+");
Matcher matcher = pattern.matcher("test@example.com");
if (matcher.find()) {
   
    System.out.println(matcher.group());
}

上面的代码将输出字符串 "test@example.com"。

URL

Pattern pattern = Pattern.compile("(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})([/\\w.-]*)*/?");
Matcher matcher = pattern.matcher("http://www.example.com/path");
if (matcher.find()) {
   
    System.out.println(matcher.group());
}

上面的代码将输出字符串 "http://www.example.com/path"。

手机号码

Pattern pattern = Pattern.compile("1[3-9]\\d{9}");
Matcher matcher = pattern.matcher("13812345678");
if (matcher.find()) {
   
    System.out.println(matcher.group());
}

上面的代码将输出字符串 "13812345678"。

测试用例

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

public class Main {
   
    public static void main(String[] args) {
   
        // 邮箱地址
        Pattern pattern = Pattern.compile("\\w+@\\w+\\.\\w+");
        Matcher matcher = pattern.matcher("test@example.com");
        if (matcher.find()) {
   
            System.out.println(matcher.group());
        }

        // URL
        pattern = Pattern.compile("(https?://)?([\\da-z.-]+)\\.([a-z.]{2,6})([/\\w.-]*)*/?");
        matcher = pattern.matcher("http://www.example.com/path");
        if (matcher.find()) {
   
            System.out.println(matcher.group());
        }

        // 手机号码
        pattern = Pattern.compile("1[3-9]\\d{9}");
        matcher = pattern.matcher("13812345678");
        if (matcher.find()) {
   
            System.out.println(matcher.group());
        }
    }
}

全文小结

本文介绍了 Java 中的正则表达式,并演示了如何使用 Java 正则表达式。正则表达式是一种强大的工具,可以用于在字符串中进行模式匹配和查找。掌握正则表达式可以帮助程序员更高效地处理字符串。

  ... ...

  好啦,这期的内容就基本接近尾声啦,若你想学习更多,你可以看看专栏的导读篇《「滚雪球学Java」教程导航帖》,本专栏致力打造最硬核 Java 零基础系列学习内容,🚀打造全网精品硬核专栏,带你直线超车;欢迎大家订阅持续学习。功不唐捐,久久为功!

「赠人玫瑰,手留余香」,咱们下期拜拜~~

附录源码

  如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你

  无论你是计算机专业的学生,还是对编程感兴趣的跨专业小白,都建议直接入手「滚雪球学Java」专栏;该专栏不仅免费,bug菌还郑重承诺,只要你学习此专栏,均能入门并理解Java SE,以全网最快速掌握Java语言,每章节源码均同步「Gitee」,你真值得拥有;学习就像滚雪球一样,越滚越大,带你指数级提升。

  码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

  同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!


目录
相关文章
|
8天前
|
Java
探索Java中的Lambda表达式
【10月更文挑战第37天】本文将带你深入理解Java的Lambda表达式,从基础语法到高级特性,通过实例讲解其在函数式编程中的应用。我们还将探讨Lambda表达式如何简化代码、提高开发效率,并讨论其在实际项目中的应用。
|
11天前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
11天前
|
JSON 自然语言处理 Java
这款轻量级 Java 表达式引擎,真不错!
AviatorScript 是一个高性能、轻量级的脚本语言,基于 JVM(包括 Android 平台)。它支持数字、字符串、正则表达式、布尔值等基本类型,以及所有 Java 运算符。主要特性包括函数式编程、大整数和高精度运算、完整的脚本语法、丰富的内置函数和自定义函数支持。适用于规则判断、公式计算、动态脚本控制等场景。
|
15天前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####
|
24天前
|
自然语言处理 安全 Java
Aviator Java 表达式引擎
AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。
43 10
|
21天前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
26天前
|
移动开发 Java Windows
Java 匹配\r 和 \n 的正则表达式如何编写
【10月更文挑战第19天】Java 匹配\r 和 \n 的正则表达式如何编写
72 3
|
1月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
46 15
|
25天前
|
Java API
[Java]Lambda表达式
本文主要介绍了Java中的Lambda表达式,包括其优化匿名内部类的方式、使用规范、内置函数式接口及方法引用等内容。文章详细解析了Lambda的基础语法、参数列表、方法体的简化规则,以及如何利用Lambda优化代码。此外,还探讨了Lambda的作用域和引用规则,强调了对局部变量、成员变量和常量的访问限制,旨在帮助读者全面理解和掌握Lambda表达式的应用。
16 0
[Java]Lambda表达式
|
1月前
|
Java 程序员 API
Java中的Lambda表达式:简化代码的秘密武器
【10月更文挑战第11天】 在Java编程中,Lambda表达式是一种简洁而强大的工具,它允许我们将函数作为参数传递给其他方法。本文将介绍Lambda表达式的基本概念、使用方法以及在实际项目中的应用案例,帮助你更好地理解和利用这一特性来简化代码。
23 8