🏆本文收录于「滚雪球学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文档等海量资料,你想要的我都有!