Java中的正则表达式

本文详细介绍了Java中正则表达式的概念、元字符、反义代码、限定符及懒惰限定符的使用,通过具体示例展示了如何在文本模式匹配中应用这些规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是正则表达式

定义:正则表通常被用来检索、替换那些符合某个模式(规则)的文本。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),描述了一种字符串匹配的模式(pattern)。
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

常用的元字符

代码说明备注
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字等同于[a-z0-9A-Z_]
\s匹配任意的空白符
\d匹配数字等同于[0-9]
\b匹配单词的开始或结束代表着单词的开头或结尾,也就是单词的分界处,只匹配一个位置
^匹配字符串的开始
$匹配字符串的结束
|分枝条件
()重复多个字符叫做子表达式(也叫做分组)

如:5位到12位数字QQ号:^\d{5,12}$
如:简单的IP地址:(\d{1,3}.){3}\d{1,3}
如:复杂的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
IP地址:((???:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
如:整数或者小数(正):^\d+(.\d+)?$
如:一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
如:一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
如:匹配年月日(不完全准确):20\d{2}[0,1]\d[0-3]\d

常用的反义代码

代码/语法说明备注
\W匹配任意不是字母,数字,下划线,汉字的字符等同于[^a-z0-9A-Z_]
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符等价于[^0-9]
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

常用的限定符

代码/语法说明
*重复零次或更多次,也就是说可以没有,也可以有多次
+重复一次或更多次,也就是说至少一次
?重复零次或一次,也就是说最多一次
{n}重复n次
{n,}重复n次或更多次,也就是说至少n次
{n,m}重复n到m次

懒惰限定符

代码/语法说明
*?重复任意次,但尽可能少重复
+?重复1次或更多次,但尽可能少重复
??重复0次或1次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
{n,}?重复n次以上,但尽可能少重复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值