正则表达式

关注公众号 jb51net

关闭
首页 > 网络编程 > 正则表达式 > 正则表达式与Java实现

正则表达式概念、示例与Java实现完全入门指南

作者:artemis72

正则表达式是处理字符串的强大工具,Java通过java.util.regex包提供了全面的正则表达式支持,这篇文章主要介绍了正则表达式概念、示例与Java实现完全入门的相关资料,需要的朋友可以参考下

前言

正则表达式(Regular Expression,简称 Regex)是一种用于匹配、查找和替换字符串的强大工具,广泛应用于文本处理、数据验证、日志分析等场景。它通过特定的语法规则描述字符串的模式,让复杂的字符串操作变得简洁高效。本文将从基本概念出发,结合实例讲解常用语法,并通过 Java 代码演示其实际应用。

一、正则表达式基本概念

1. 核心定义

正则表达式是由普通字符(如字母、数字)和元字符(具有特殊含义的字符,如*、+)组成的字符串模式,用于匹配目标字符串中符合该模式的子串。

例如,正则表达式\d{3}-\d{4}可以匹配类似123-4567的字符串,其中\d代表数字,{3}表示匹配 3 次,-是普通字符。

2. 核心作用

二、正则表达式常用语法与示例

正则表达式的语法由「普通字符」「元字符」「量词」「分组」等组成,以下是最常用的语法规则及示例。

1. 普通字符与转义字符

示例:正则abc可匹配字符串abc、aabc(匹配其中的abc子串)。

示例:正则www\.baidu\.com可匹配www.baidu.com(.在正则中代表 “任意字符”,转义后才匹配实际的.)。

2. 常用元字符

元字符是正则表达式的核心,代表特定的匹配规则,以下是高频元字符:

元字符

含义

示例

匹配结果

.

匹配任意单个字符(除换行)

a.b

aab、acb、a1b

\d

匹配单个数字(0-9)

\d{2}

12、99

\D

匹配非数字字符

\D

a、!、 (空格)

\w

匹配字母、数字、下划线

\w+

hello、user123

\W

匹配非字母 / 数字 / 下划线

\W

@、#、&

\s

匹配空白字符(空格、制表符)

a\sb

a b、a\tb(制表符)

^

匹配字符串开头

^Hello

Hello World(开头匹配)

$

匹配字符串结尾

World$

Hello World(结尾匹配)

3. 量词:控制匹配次数

量词用于指定元字符或分组的匹配次数,常用量词如下:

量词

含义

示例

匹配结果

*

匹配 0 次或多次

ab*

a、ab、abb

+

匹配 1 次或多次

ab+

ab、abb、abbb

?

匹配 0 次或 1 次

ab?

a、ab

{n}

匹配恰好 n 次

a{3}

aaa

{n,}

匹配至少 n 次

a{2,}

aa、aaa、aaaa

{n,m}

匹配 n 到 m 次

a{2,3}

aa、aaa

4. 分组与范围

示例:(ab)+可匹配ab、abab、ababab(ab作为整体重复)。

示例:

5. 实际场景示例

结合以上语法,以下是常见业务场景的正则表达式示例:

场景

正则表达式

说明

手机号验证

^1[3-9]\d{9}$

以 1 开头,第 2 位为 3-9,后 9 位为数字

邮箱验证

^[a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,}$

用户名 +@+ 域名 + 后缀(如.com、.cn)

身份证号(18 位)

^\d{17}[\dXx]$

前 17 位为数字,最后一位为数字或 X/x

提取 IP 地址

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

匹配 IPv4 地址(简化版,未严格校验范围)

三、Java 中正则表达式的实现

Java 通过java.util.regex包提供正则表达式支持,核心类包括Pattern(编译正则表达式)和Matcher(执行匹配操作),同时String类也提供了简化方法(如matches()、replaceAll())。

1. 核心类说明

2. 常用操作示例

示例 1:字符串匹配(验证格式)

验证输入是否为合法手机号:

示例 2:字符串查找(提取内容)

从文本中提取所有 IP 地址:

示例 3:分组匹配(提取复杂结构)

从字符串中提取姓名和年龄(格式如 “姓名:张三,年龄:25”):

四、正则表达式使用注意事项

  1. 转义字符处理:Java 中\本身需要转义,因此正则中的\d在 Java 字符串中需写为\\d(如示例中的 IP 正则)。
  2. 性能优化:频繁使用的正则表达式建议提前编译为Pattern对象(Pattern是线程安全的,可复用),避免多次编译浪费资源。

五、总结

正则表达式是处理字符串的 “瑞士军刀”,掌握其基本语法后,能极大提升文本处理效率。本文从概念出发,讲解了常用语法和场景示例,并通过 Java 的Pattern、Matcher类及String相关方法演示了实际应用。

到此这篇关于正则表达式概念、示例与Java实现完全入门指南的文章就介绍到这了,更多相关正则表达式与Java实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文