前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >滚雪球学Java(21):Java正则表达式

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

原创
作者头像
bug菌
发布2024-05-09 00:03:27
730
发布2024-05-09 00:03:27
举报
文章被收录于专栏:滚雪球学Java滚雪球学Java

??咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~


?本文收录于 **[「滚雪球学Java」 ](https://blog.csdn.net/weixin_43970743/category_9600553.html)专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由?;同时,欢迎大家关注&&收藏&&订阅**!持续更新中,up!up!up!!

代码语言:java
复制
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

前言

正则表达式是在字符串中进行模式匹配和查找的一种强有力的工具。在 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() 方法并传递正则表达式字符串作为参数即可。

代码语言:java
复制
Pattern pattern = Pattern.compile("\\d+");

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

如何使用 Java 正则表达式

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

代码语言:java
复制
Matcher matcher = pattern.matcher("12345");

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

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

代码语言:java
复制
if (matcher.find()) {
    System.out.println(matcher.group());
}

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

常见的正则表达式用例

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

邮箱地址

代码语言:java
复制
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

代码语言:java
复制
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"。

手机号码

代码语言:java
复制
Pattern pattern = Pattern.compile("1[3-9]\\d{9}");
Matcher matcher = pattern.matcher("13812345678");
if (matcher.find()) {
    System.out.println(matcher.group());
}

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

测试用例

代码语言:java
复制
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」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

??码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。 ??同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

?关于我

??我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


--End

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 摘要
  • 正则表达式的语法
    • 普通字符
      • 元字符
        • 限定符
          • 逻辑操作符
          • 如何在 Java 中编写正则表达式
          • 如何使用 Java 正则表达式
          • 常见的正则表达式用例
            • 邮箱地址
              • URL
                • 手机号码
                • 测试用例
                • 全文小结
                • ??建议/推荐你
                • ?关于我
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com