欢迎光临散文网 会员登陆 & 注册

正则表达式

2023-05-14 11:28 作者:大丫头胖  | 我要投稿

1. 正则表达式基础

在了解正则表达式之前,我们先看几个非常常见的问题:


一种直观的想法是通过程序判断,这种方法需要为每种用例创建规则,然后用代码实现。下面是判断手机号的代码:


上述代码仅仅做了非常粗略的判断,并未考虑首位数字不能为0等更详细的情况。除了判断手机号,我们还需要判断电子邮件地址、电话、邮编等等。为每一种判断逻辑编写代码实在是太繁琐了。有没有更简单的方法?


有!用正则表达式!

正则表达式可以用字符串来描述规则,并用来匹配字符串。一个正则表达式一个描述规则的字符串,所以,只需要编写正确的规则,就可以让正则表达式引擎去判断目标字符串是否符合规则,以下代码是 Java 中正则表达式的使用方法示例。


2. 简单匹配规则

① 精确匹配

正则表达式的匹配规则是从左到右按规则匹配。首先来看如何使用正则表达式来做精确匹配。

② 单字符匹配

匹配任意字符:.匹配一个任意字符。


匹配数字:如果我们只想匹配0~9这样的数字,可以用\d匹配。


匹配非数字:用\d可以匹配一个数字,而\D则匹配一个非数字。


匹配常用字符:用\w可以匹配一个字母、数字或下划线,w的意思是word。


匹配空格字符:用\s可以匹配一个空格字符,注意空格字符不但包括空格,还包括tab字符(在Java中用\t表示)。

单字符匹配


③ 多字符匹配,重复匹配

我们用\d可以匹配一个数字,例如,A\d可以匹配"A0""A1",如果要匹配多个数字,比如"A380"。

任意数量字符:修饰符*可以匹配任意个字符,包括0个字符。



至少一个字符:修饰符+可以匹配至少一个字符。


0个或一个字符:修饰符?可以匹配0个或一个字符。


匹配指定数量:如果我们想精确指定n个字符怎么办?用修饰符{n}就可以。


匹配指定区间数量:如果我们想指定匹配n~m个字符怎么办?用修饰符{n,m}就可以。

多字符匹配,重复匹配

3. 复杂匹配规则

① 匹配开头和结尾


② 匹配指定范围

如果我们规定一个7~8位数字的电话号码不能以0开头,应该怎么写匹配规则呢?\d{7,8}是不行的,因为第一个\d可以匹配到0

[...] 可以匹配范围内的字符

③ 或规则匹配

|连接的两个正则规则是规则


④ 使用括号

现在我们想要匹配字符串 learn javalearn php 和 learn go怎么办?一个最简单的规则是

earn\sjava|learn\sphp|learn\sgo,但是这个规则太复杂了,可以把公共部分提出来,然后用(...)把子规则括起来表示成learn\s(java|php|go)

复杂匹配规则



正则表达式的评论 (共 条)

分享到微博请遵守国家法律